
آلية كشف عالية الدقة لـ node2shell (CVE-2026-111497)
أداة سطر أوامر لاكتشاف CVE-2026-111497 في تطبيقات Node.js HTTP.
يرسل الماسح أربعة عناصر تحكم بحجم بايت واحد لمعرفة كيفية تعامل نقطة النهاية مع Brotli JSON الصالح، وBrotli المشوّه، والطلبات التي تفتقر إلى نوع محتوى JSON، والترميزات غير المدعومة. ثم يبثّ فحص Brotli بحجم 23,068,764 بايت ويكرر عنصر التحكم الصالح.
لا يُبلَّغ عن هدف بأنه معرّض للثغرة إلا عندما يصل الفحص الكامل إلى فئة استجابة المسار الصالح، وتكون فئة الاستجابة المشوّهة مميزة، ويؤكد عنصر التحكم النهائي أن نقطة النهاية ظلت مستقرة. يتوافق هذا مع منطق الكشف الداخلي postmodule الخاص بـ Assetnote ولا ينفّذ أي أمر.
يُحتفظ بمسار URL ويُضبط افتراضيًا على /. لا تُتبَّع عمليات إعادة التوجيه.
تتلقى كل نقطة نهاية مُختبَرة خمسة طلبات بحجم بايت واحد وفحصًا واحدًا بحجم 23,068,764 بايت. يستخدم الفحص Expect: 100-continue، لذا يمكن للوكيل رفض الحجم المُعلن قبل رفع الجسم.
pip install -r requirements.txt
docker build -t node2shell-scanner .
docker run --rm node2shell-scanner -u https://example.com/api
python3 scanner.py -u https://example.com/api
python3 scanner.py -l hosts.txt -t 20 -o results.json
python3 scanner.py -u https://example.com --path /api/json
python3 scanner.py -u https://example.com -H "Authorization: Bearer token"
-u, --url Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Per-request timeout in seconds (default: 60)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable TLS certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show verdict reasons and response snippets
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
تُطبع النتائج إلى الطرفية. مع -o، تُحفظ المضيفات المعرّضة للثغرة في JSON مع وضع المقارنة وأدلة الطلب/الاستجابة المنقّحة. استخدم --all-results لحفظ كل حكم.
بُنيت بواسطة فريق Assetnote Security Research باستخدام منطق الكشف المطوّر لـ Searchlight's Exposure Platform.