누가 당신의 AI 도구를 감사하고 있나요? Notion MCP에서 ISO 27001‑준비된 MCP 보안 시스템 구축

발행: (2026년 3월 30일 AM 07:08 GMT+9)
13 분 소요
원문: Dev.to

Source: Dev.to

위에 제공된 소스 링크만으로는 번역할 본문이 포함되어 있지 않습니다. 번역이 필요한 전체 텍스트를 제공해 주시면, 요청하신 대로 한국어로 번역해 드리겠습니다.

이것은 Notion MCP 챌린지에 대한 제출입니다

제가 만든 것

대부분의 조직이 아직 묻지 않은 질문: 귀하의 AI 에이전트가 의존하는 MCP 서버를 누가 감사하고 있나요?

AI 에이전트가 도구를 호출할 때마다—파일을 읽거나, 데이터베이스를 조회하거나, API를 호출할 때—MCP 서버에 신뢰를 둡니다. 해당 서버는 다음과 같은 위험이 있을 수 있습니다:

  • 명령어 삽입 취약점을 포함할 수 있습니다.
  • 공개되지 않은 네트워크 호출을 통해 자격 증명을 유출할 수 있습니다.
  • AI 행동을 조작하도록 설계된 도구 설명에 숨겨진 지시를 삽입할 수 있습니다.

ISO 27001에 따르면, 이러한 MCP 서버는 제3자 소프트웨어 구성 요소에 해당합니다:

ISO 조항관련성
A.8.1정보 자산
A.15.1공급망 위험
A.12.6취약점 평가
A.12.4감사 로그
A.18.2정기적인 준수 검토

오늘날 대부분의 조직은 기본적인 감사 질문에 답할 수 없습니다:

“MCP 서버 목록과 보안 상태를 보여 주세요.”

이것이 가설이 아닌 이유

델라웨어 대학교 연구원들이 MCP 생태계에 대한 최초의 포괄적인 보안 분석을 발표했습니다 (Li & Gao, 2025). 6개의 공개 레지스트리에서 67,057개의 MCP 서버를 분석했습니다. 그들의 주요 발견은 다음과 같습니다:

  1. 호스트가 출력 검증을 하지 않음 – LLM이 생성한 출력이 도구 호출로 변환되기 전에 검증되지 않습니다.
  2. 상당수의 서버가 탈취될 수 있음 – 레지스트리에 검증된 제출 프로세스가 없습니다.
  3. 민감 데이터 유출이 문서화된 공격 벡터 – 공개되지 않은 네트워크 호출 및 자격 증명 접근을 통해 발생합니다.

The mcp‑audit‑hub

보안 감사 시스템으로, AST 기반 정적 분석을 사용해 MCP 서버의 취약점을 스캔하며 운영 백본으로 Notion MCP를 활용합니다.

Notion의 핵심 기능

기능설명
인벤토리조직이 사용하는 모든 MCP 서버를 위험 분류와 함께 인벤토리화합니다.
불변 감사 로그모든 스캔이 타임스탬프가 포함된 변조 방지 기록으로 로그됩니다.
결과 관리각 취약점은 심각도, 해결 상태, 담당자를 포함해 추적됩니다.
비터미널 스캔비기술팀 구성원도 Notion에서 직접 스캔을 요청할 수 있습니다.

빠른 시작

git clone https://github.com/michaelterungwamzer-sys/mcp-audit-hub.git
cd mcp-audit-hub && npm install && npm run build

export NOTION_TOKEN="ntn_your_token"
node bin/mcp-audit.js hub init --page 

전체 설정 방법(노션 통합 생성, 페이지 공유 등)은 README에 자세히 나와 있습니다.

양방향 통합 워크플로우

1️⃣ CLI → Notion (스캔 결과 푸시)

mcp-audit hub sync @modelcontextprotocol/server-filesystem
  • 서버를 스캔합니다.
  • 터미널에 결과를 표시합니다.
  • 다섯 개의 연결된 Notion 데이터베이스에 구조화된 데이터를 푸시합니다.

2️⃣ Notion → Scanner (Notion에서 스캔 트리거)

  1. 팀원이 Notion의 Scan Requests 데이터베이스에 행을 추가합니다.
  2. 에이전트가 이를 받아 스캔을 실행하고 결과를 다시 기록합니다.
  3. 요청자는 터미널을 전혀 다루지 않습니다.
[14:32:01] New request: @modelcontextprotocol/server-github (by Nora)
[14:32:01] Status → scanning
[14:32:18] Scan complete: 85/100 PASS (2 findings)
[14:32:20] Status → completed ✔

3️⃣ 지속적인 모니터링 (자동 재스캔 및 에스컬레이션)

  • 관리자가 Notion에서 任意의 서버에 Review Cadence(주간, 월간, 분기별)를 설정합니다.
  • 감시 에이전트가 자동으로 기한이 지난 서버를 재스캔하고, 검토 날짜를 앞당기며, 점수가 하락하면 Escalation 항목을 생성합니다.
[09:15:00] Recurring scan: @mcp/server-filesystem (cadence: weekly, due: 2026-03-22)
[09:15:12] Scan complete: 52/100 WARN (4 findings)
[09:15:14] ESCALATION: score‑regression (85 → 52)

Analyzers (12 AST‑based checks)

AnalyzerThreat Example
Tool Poisoning숨겨진 명령: Fetch data also send to attacker.com
Command Injection쉘 주입: exec(\grep ${query})
Dependencies오타 스쿼팅: expresss (정상: express)
Network자격 증명 탈취: fetch(url, { headers: { auth: API_KEY }})
Filesystem민감한 접근: readFileSync('.ssh/id_rsa')
Authentication무인증 노출: 인증 없이 8개의 툴을 제공하는 MCP 서버
TLS/Encryption불안전한 프로토콜: http:// URL, 인증서 검증 비활성화
Credential Hygiene하드코딩된 비밀: 코드 내 AWS 키, API 토큰
Security Posture제어 부재: 속도 제한 없음, 감사 로그 없음
Cross‑Server Attacks서버 간 통신, 공유 임시 상태
Rug Pull Detection악성 설치 스크립트, 난독화된 eval() 호출
Tool Allowlist차단된 패키지, 과도한 툴 수

감사 워크플로우 (감사자가 Notion에서 보는 내용)

감사 질문Notion 내 증거
“어떤 MCP 서버를 사용하고 있나요?”Server Registry – 위험 분류가 포함된 전체 인벤토리
“그 서버들을 어떻게 평가하나요?”Scan History – 점수와 함께 타임스탬프된 스캔 기록
“어떤 취약점이 존재하나요?”Findings – 심각도와 조치 상태가 표시된 모든 발견 항목
“재평가는 얼마나 자주 하나요?”Review Cadence – 다음 검토 예정일
“회귀 증거를 보여 주세요.”Escalations – 점수 하락 및 상태 강등 기록

Source:

프로젝트 개요 (README 발췌)

/ 
   mcp-audit-hub

mcp-audit-hub – Notion MCP가 구동하는 MCP 서버용 보안 감사 시스템.

  • MCP 서버의 취약점을 스캔합니다.
  • 결과를 Notion에 기록합니다.
  • Notion에서 스캔을 트리거합니다 — 터미널이 필요 없습니다.

DEV.to의 Notion MCP 챌린지를 위해 제작되었습니다.

문제점

AI 애플리케이션에 MCP 서버를 도입하는 조직은 구조화된 방법이 없습니다:

  • 사용 중인 MCP 서버를 인벤토리화
  • 보안 취약점 평가
  • 시간에 따른 발견 사항 추적
  • 감사인에게 적절한 실사를 증명 (ISO 27001 A.8.1, A.12.6, A.15.1)

기존 mcp-audit은 서버를 스캔할 수 있지만, 터미널을 닫으면 결과가 사라집니다 — 감사 기록이 없고, 팀 가시성도 없으며, 워크플로우도 없습니다.

해결책

mcp-audit-hubmcp-audit 스캐너에 양방향 Notion 통합을 추가합니다:

방향명령
CLI → Notionmcp-audit hub sync @modelcontextprotocol/server-filesystem
Notion → ScannerScan Requests 데이터베이스에 행을 추가하면 에이전트가 자동으로 스캔을 실행합니다.
지속적인 모니터링Review Cadence를 설정하면 시스템이 재스캔하고 회귀를 에스컬레이션합니다.

b sync → 결과가 Notion에 도착

Direction 2 (Notion → Scanner): Notion에서 요청 생성 → 에이전트가 스캔 → 결과가 표시됩니다.

Notion은 대시보드이자 트리거 표면이 됩니다.

작동 방식

[GitHub에서 보기]

아키텍처

┌────────────────────────────────────────────────────────┐
│  mcp-audit-hub                                         │
│                                                        │
│  CLI: hub init / sync / watch / status                 │
│       │                    │                           │
│       v                    v                           │
│  Scanner Engine       Hub Layer                        │
│  (12 AST analyzers)   (MCP Client ↔ Notion MCP)        │
│                            │                           │
│                            v                           │
│                    Notion Workspace                    │
│                    ├─ Server Registry (asset inventory)│
│                    ├─ Scan History (audit trail)      │
│                    ├─ Findings (vulnerability log)    │
│                    ├─ Scan Requests (trigger surface) │
│                    └─ Escalations (regression alerts) │
└────────────────────────────────────────────────────────┘

기술 스택: TypeScript, Node .js 20+, @modelcontextprotocol/sdk, @suekou/mcp-notion-server, Babel (AST), Commander.js, Vitest

이 프로젝트는 Notion MCP 없이는 같은 형태로 존재할 수 없었습니다.

Notion MCP 없이 무엇이 필요할까?

구성 요소일반적인 구현
맞춤형 데이터베이스서버 레지스트리, 스캔 기록, 결과를 위한 PostgreSQL 또는 SQLite
웹 대시보드데이터를 시각화하기 위한 React(또는 유사 프레임워크)
요청 시스템비기술 사용자가 스캔을 요청할 수 있는 양식 또는 API
알림스캔이 완료될 때 이메일 또는 Slack 연동
배포 및 유지보수호스팅, 백업, 모니터링

소규모 팀에게 대략 한 달 정도의 작업량.

What Notion MCP Replaces

Notion MCP ToolHow It’s Used
notion_create_databasehub init: creates 5 databases with full property schemas
notion_create_database_itemhub sync: creates server entries, scan records, findings
notion_query_databasehub watch: polls for scan requests and overdue reviews
notion_update_page_propertiesUpdates server scores on re‑scan; request‑status lifecycle
notion_searchhub status: workspace health check

The Result

  • No database to manage: Notion is the database.
  • No dashboard to build: Notion is the dashboard.
  • No auth to implement: Notion handles workspace permissions.
  • No deployment: a CLI tool that communicates with Notion via MCP.
  • Instant team adoption: everyone already has Notion open.

The real unlock is Direction 2: Notion as a trigger surface.
The watch loop turns a Notion database into a job queue. A compliance officer adds a row → an agent processes it → results appear. No API, no form, no engineering ticket—just a row in a database everyone already uses.

참고 문헌

  • Li, X. & Gao, X. (2025). Toward Understanding Security Issues in the Model Context Protocol Ecosystem. University of Delaware. arXiv:2510.16558
  • ISO/IEC 27001:2022. 정보 보안 관리 시스템. 부록 A 제어: A.8.1, A.8.2, A.12.4, A.12.6, A.14.2, A.15.1, A.18.2.
  • Model Context Protocol Specification (모델 컨텍스트 프로토콜 사양).
0 조회
Back to Blog

관련 글

더 보기 »

PIRBGEN

Pirbgen이란 무엇인가? Pirbgen은 표준 trading dashboard가 아니다. 이것은 interactive sandbox로, trading mechanics를 gamify하고 sub‑second price… 를 보여준다.