CVE-2026-54504
JavaScript 취약성 분석 및 완화

개요

CVE-2026-54504 is a missing authentication and unsafe network binding vulnerability in the npm package @andrea9293/mcp-documentation-server v1.13.0. The Web UI/API, which starts automatically by default on port 3080, binds to all network interfaces (0.0.0.0:3080) instead of localhost only, and exposes document-management API endpoints without any authentication requirement. This allows any network-reachable client on the same LAN, VM network, or container bridge to perform full document-admin operations without credentials. The vulnerability was reported by researcher mcfly-zzh, published on June 4, 2026, and added to the GitHub Advisory Database on July 15, 2026. It carries a CVSS v3.1 base score of 8.8 (High) (GitHub Advisory).

기술적 세부 사항

The root cause is a combination of CWE-306 (Missing Authentication for Critical Function) and CWE-668 (Exposure of Resource to Wrong Sphere). In src/web-server.ts, the Express application calls app.listen(PORT) without specifying a bind address, which causes Node.js/Express to default to listening on all interfaces (0.0.0.0). The Web UI starts automatically unless the environment variable START_WEB_UI is explicitly set to false. The exposed API endpoints — including GET /api/documents, GET /api/documents/:id, POST /api/documents, POST /api/search-all, DELETE /api/documents/:id, and GET /api/config — perform no authorization checks, accepting any unauthenticated HTTP request. A public proof-of-concept Python script was included in the advisory, demonstrating full document enumeration, insertion, reading, searching, and deletion via the host's LAN IP without any Authorization header (GitHub Advisory, Security Advisory).

영향

A network-adjacent unauthenticated attacker can read all document titles, previews, and full content stored in the MCP documentation server; search across the entire document corpus; insert attacker-controlled documents into the knowledge base; and delete existing documents. This poses a high confidentiality risk if sensitive information is stored in the documentation server, a high integrity risk due to the ability to tamper with the AI assistant's knowledge base (potentially enabling prompt injection or misinformation attacks), and a high availability risk through mass document deletion. Users running the server on laptops, workstations, development VMs, or hosts connected to shared networks, VPNs, or Docker bridges are all potentially affected (GitHub Advisory).

착취 단계

  1. Reconnaissance: Identify hosts on the local network running @andrea9293/mcp-documentation-server v1.13.0 by scanning for open TCP port 3080 using tools like nmap -p 3080 <subnet> or masscan.
  2. Confirm exposure: Send an unauthenticated HTTP GET request to /api/config on the target host's LAN IP (e.g., curl http://10.0.250.230:3080/api/config) and verify a JSON response is returned without any authentication challenge.
  3. Enumerate documents: Issue GET http://<target-ip>:3080/api/documents to list all stored document IDs and titles without credentials.
  4. Read document contents: For each document ID returned, send GET http://<target-ip>:3080/api/documents/<id> to retrieve the full document content, potentially exposing sensitive information stored in the MCP knowledge base.
  5. Search the corpus: Use POST http://<target-ip>:3080/api/search-all with a JSON body {"query": "<keyword>", "limit": 10} to search across all documents for targeted information.
  6. Insert malicious documents: Send POST http://<target-ip>:3080/api/documents with a JSON body containing attacker-controlled content to poison the AI assistant's knowledge base, potentially enabling downstream prompt injection attacks.
  7. Delete documents: Issue DELETE http://<target-ip>:3080/api/documents/<id> to destroy documents, causing availability impact to the MCP assistant's knowledge base (GitHub Advisory, Security Advisory).

타협의 징후

  • Network: Unexpected inbound HTTP connections to TCP port 3080 from non-localhost IP addresses; ss -ltnp output showing LISTEN *:3080 instead of 127.0.0.1:3080; HTTP requests to /api/documents, /api/config, /api/search-all originating from LAN or external IPs.
  • Logs: Node.js/Express access logs showing requests to document-management API endpoints (/api/documents, /api/documents/:id, /api/search-all, /api/config) from non-loopback IP addresses without Authorization headers; server startup log line Network: http://0.0.0.0:3080 indicating all-interface binding.
  • File System: Unexpected or unfamiliar documents appearing in the MCP documentation server's data directory (MCP_BASE_DIR); documents with suspicious titles or content (e.g., containing attacker markers or injected instructions) in the document store.
  • Process: Node.js process (node dist/server.js) listening on 0.0.0.0:3080 as confirmed by ss -ltnp | grep 3080 or netstat -tlnp | grep 3080 (GitHub Advisory).

완화 및 해결 방법

The vendor released version 1.13.1 on June 4, 2026, which binds the Web UI to 127.0.0.1 by default and introduces a new WEB_HOST environment variable (defaulting to 127.0.0.1) for explicit network exposure control. Users should upgrade to @andrea9293/mcp-documentation-server v1.13.1 or later immediately via npm update @andrea9293/mcp-documentation-server. As an interim workaround on v1.13.0, set START_WEB_UI=false to disable the Web UI entirely, or use host-based firewall rules to block external access to TCP port 3080. If network exposure is required in v1.13.1+, set WEB_HOST=0.0.0.0 explicitly and implement network-level access controls (GitHub Release, Patch Commit).

추가 자료


근원이 보고서는 AI를 사용하여 생성되었습니다.

관련 JavaScript 취약점:

CVE ID

심각도

점수

기술

구성 요소 이름

CISA KEV 익스플로잇

수정 사항이 있습니다.

게시된 날짜

GHSA-w4hw-qcx7-56prCRITICAL9.2
  • JavaScript logoJavaScript
  • shescape
아니요Jul 24, 2026
GHSA-gm3r-q2wp-hw87HIGH8.7
  • JavaScript logoJavaScript
  • shescape
아니요Jul 24, 2026
GHSA-q53c-4prm-w95qMEDIUM6.3
  • JavaScript logoJavaScript
  • shescape
아니요Jul 24, 2026
GHSA-8q49-2h5h-434xMEDIUM5.9
  • JavaScript logoJavaScript
  • @frontmcp/adapters
아니요Jul 24, 2026
GHSA-3r53-75j5-3g7jMEDIUM5.6
  • JavaScript logoJavaScript
  • quasar
아니요Jul 24, 2026

무료 취약성 평가

클라우드 보안 태세를 벤치마킹합니다

9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.

평가 요청

추가 Wiz 리소스

맞춤형 데모 받기

맞춤형 데모 신청하기

"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
데이비드 에슬릭최고정보책임자(CISO)
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
아담 플레처최고 보안 책임자(CSO)
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."
그렉 포니아토프스키위협 및 취약성 관리 책임자