
nmap MCP सर्वर में OS कमांड इंजेक्शन के लिए एडवाइजरी और हानिरहित PoC, डुप्लिकेट CVE ट्रैकिंग, डिटेक्शन मार्गदर्शन और शमन के साथ।
run_nmap_scan के माध्यम से OS कमांड इंजेक्शनrun_nmap_scan MCP उपकरण अपना कमांड target और additionalFlags पैरामीटरों के स्ट्रिंग इंटरपोलेशन द्वारा बनाता है और इसे child_process.exec, यानी /bin/sh -c के माध्यम से चलाता है।
⚠ पहले यह पढ़ें — डुप्लिकेट पहचानकर्ता
यह भेद्यता इस CVE ID के अस्तित्व में आने से पहले ही सार्वजनिक थी। यह CVE-2026-3484 / GHSA-xc68-rrqc-qgq3 द्वारा कवर की गई है, जिसे VulDB द्वारा निर्दिष्ट किया गया और 2026-03-03 को
mcp-nmap-server <= 1.0.1के विरुद्ध प्रकाशित किया गया — वही पैकेज, वही CWE-78child_process.execसिंक।CVE-2026-52616 को MITRE CNA-LR द्वारा 2026-07-13 को एक स्वतंत्र रिपोर्ट के जवाब में s1ko को निर्दिष्ट किया गया था। यह निर्धारण एक डुप्लिकेट प्रतीत होता है, और इसे ऐसे ही चिह्नित किया गया है। पहले से मौजूद पहचानकर्ता CVE-2026-3484 ही वह है जिसे उद्धृत किया जाना चाहिए।
यह रिपॉजिटरी पूर्णता के लिए और डुप्लिकेट का दस्तावेजीकरण करने के लिए प्रकाशित की गई है, न कि नई खोज के दावे के रूप में। मूल सार्वजनिक प्रकटीकरण का श्रेय s1ko को नहीं है।
इसे डीडुप्लिकेट करने वाले किसी भी व्यक्ति के लिए एक नामकरण जाल ध्यान देने योग्य है: npm पैकेज mcp-nmap-server है और रिपॉजिटरी nmap-mcp-server है। दोनों क्रम एक ही परियोजना को संदर्भित करते हैं।
MCP उपकरण तर्क हमलावर-प्रभावित होते हैं। वे एक LLM द्वारा उस सामग्री से उत्पन्न होते हैं जिसे एजेंट संसाधित करता है — दस्तावेज़, वेब पेज, उपकरण आउटपुट — इसलिए अप्रत्यक्ष प्रॉम्प्ट इंजेक्शन हमलावर को उन मानों पर नियंत्रण दे देता है जो एक उपकरण हैंडलर को प्राप्त होते हैं। एक हैंडलर जो उन मानों में से किसी को शेल में डालता है, उस प्रभाव को MCP सर्वर चलाने वाले होस्ट पर कोड निष्पादन में बदल देता है। यह वही मॉडल है जो पिछले मामले aws-mcp-server / CVE-2026-5058 में था।
dist/index.js — target को एक कमांड स्ट्रिंग में जोड़ा जाता है जिसे फिर exec को सौंप दिया जाता है:
command += ` ${target}`;
…
const { stdout, stderr } = await promisify(exec)(command);
child_process.exec अपने तर्क को /bin/sh -c में चलाता है, इसलिए कॉलर ने जो कुछ भी योगदान दिया है वह शेल सिंटैक्स है। Zod इनपुट स्कीमा z.string() घोषित करती है, जो केवल प्रकार को मान्य करती है और सामग्री के बारे में कुछ नहीं कहती है, इसलिए मेटाकैरेक्टर पास हो जाते हैं। additionalFlags उसी स्ट्रिंग तक उसी मार्ग से पहुँचता है।
target को 127.0.0.1; touch /tmp/marker; echo INJECTED पर सेट करके run_nmap_scan का एक कॉल निम्न उत्पन्न करता है:
/bin/sh -c "nmap … 127.0.0.1; touch /tmp/marker; echo INJECTED"
poc/driver.mjs stdio पर MCP बोलता है: यह सर्वर को प्रारंभ करता है, एक इंजेक्टेड target के साथ run_nmap_scan के लिए एक tools/call जारी करता है, और एक मार्कर फ़ाइल की जाँच करता है। पेलोड एक हानिरहित touch है।
npm pack [email protected]
tar xf mcp-nmap-server-1.0.1.tgz && cd package && npm install
node ../poc/driver.mjs
प्रभावित संस्करण पर अपेक्षित:
==== POC RESULT (mcp-nmap-server) ====
marker /tmp/PWNED_nmap created: true
verdict: CONFIRMED — command injection executed
nmap को स्थापित होने की आवश्यकता नहीं है — इंजेक्टेड कमांड उसी /bin/sh -c स्ट्रिंग में चलता है, चाहे अग्रणी बाइनरी उपलब्ध हो या नहीं। 2026-06-01 को एक पृथक कंटेनर में मान्य किया गया और 2026-06-13 को पुनः मान्य किया गया। इसे केवल उसी इंफ्रास्ट्रक्चर के विरुद्ध चलाएँ जिसका परीक्षण करने के लिए आप अधिकृत हैं।
nmap कमांड लाइन जिसमें ;, &&, ||, |, एक बैकटिक या $( शामिल हो।sh -c प्रक्रिया जिसकी कमांड लाइन nmap से शुरू होती है और एक विभाजक के बाद दूसरा कमांड होता है — एक प्रोसेस-ट्री सिग्नल (auditd, eBPF, Falco, EDR) जो एप्लिकेशन लॉगिंग पर निर्भर नहीं करता है।nmap अपेक्षित है; एक शेल, एक इंटरप्रेटर या एक नेटवर्क क्लाइंट नहीं।target या additionalFlags में शेल मेटाकैरेक्टर होते हैं। एक target को IP, CIDR या होस्टनाम से मेल खाना चाहिए और कुछ और नहीं।MITRE ATT&CK T1059.004 Command and Scripting Interpreter: Unix Shell।
रिपॉजिटरी संग्रहित और केवल-पठनीय है, npm का नवीनतम संस्करण प्रभावित 1.0.1 है, और कोई पैच किया गया रिलीज़ प्रकाशित नहीं किया जाएगा। हटाना ही शमन है:
target को IP/CIDR/होस्टनाम पैटर्न के विरुद्ध मान्य करने और additionalFlags को अनुमति-सूची (allowlist) में डालने के लिए सर्वर को लपेटें या फोर्क करें।इसे फोर्क करने वाले किसी भी व्यक्ति के लिए फिक्स है, exec के लिए स्ट्रिंग बनाने के बजाय एक आर्गुमेंट वेक्टर के साथ execFile("nmap", [...args]) को कॉल करना। अंतर्निहित आवश्यकता केवल Zod प्रकार मान्यता नहीं, बल्कि सामग्री मान्यता है।
NIST SP 800-53r5 SI-10; OWASP ASVS v4 §5.3.8; CWE-78 शमन M1 और M2।
aws-mcp-server)उसी शोध दौर की सहयोगी सलाहें: CVE-2026-52617, CVE-2026-52618।
MIT — LICENSE देखें।
| CVE | CVE-2026-52616 — CVE-2026-3484 का डुप्लिकेट |
| CWE | CWE-78 (OS कमांड में प्रयुक्त विशेष तत्वों का अनुचित तटस्थीकरण) |
| पैकेज | mcp-nmap-server (npm) |
| प्रभावित | 1.0.1 और इससे पहले — सभी प्रकाशित संस्करण |
| फिक्स किया गया | कोई नहीं — रिपॉजिटरी संग्रहित |
| CVSS v3.1 | AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 7.8 High (stdio ट्रांसपोर्ट)। AV:N → 9.8 Critical यदि सर्वर को नेटवर्क ट्रांसपोर्ट में लपेटा गया है। |
| स्वतंत्र रूप से रिपोर्ट करने वाले | s1ko (github.com/s1ko, [email protected]) |
| CVE निर्दिष्ट | 2026-07-13, MITRE CNA-LR |
| दिनांक | घटना |
|---|
| 2026-03-03 | CVE-2026-3484 / GHSA-xc68-rrqc-qgq3 VulDB द्वारा प्रकाशित — मूल सार्वजनिक प्रकटीकरण, एक अन्य रिपोर्टर द्वारा |
| 2026-05-29 | प्रकाशित tarball की स्रोत समीक्षा द्वारा स्वतंत्र रूप से पहचाना गया, मार्च की सलाह से अनजान |
| 2026-06-01 | एक पृथक कंटेनर में MCP stdio पर गतिशील रूप से मान्य किया गया |
| 2026-06-13 | प्रस्तुतिकरण-पूर्व डीडुप्लिकेशन के दौरान डुप्लिकेट की पहचान की गई; रिपॉजिटरी संग्रहित पुष्टि की गई और Private Vulnerability Reporting अनुपलब्ध था। आंतरिक निर्णय: फ़ाइल न करें |
| 2026-07-13 | MITRE CNA-LR ने फिर भी CVE-2026-52616 निर्दिष्ट किया, s1ko को खोजकर्ता के रूप में श्रेय देते हुए |
| 2026-08-22 | यह लेख प्रकाशित हुआ, जिसमें डुप्लिकेट का दस्तावेजीकरण किया गया |