هذه الصفحة ترجمة. النسخة الإنجليزية هي النص المعتمد. اقرأه بالإنجليزية
litellm · mcp · cve-2026-42271 · kev · llm-abuse · honeypot-detection · sandbox-evasion
استطلاع MCP على LiteLLM في 66 ثانية: عميل مُبرمَج يختبر وجود مصائد الجذب
الثغرة CVE-2026-42271 هي خلل حقن أوامر في نقاط اختبار MCP لدى LiteLLM (من 1.74.2 حتى 1.83.6، بدرجة CVSS 8.7، ومُدرَجة في قائمة CISA KEV منذ 8 يونيو 2026)، وفي 6 سبتمبر أساء أحد العملاء استخدام سطح أدوات MCP في LiteLLM على شَرَك تابع لـ Kinryū Labs: 42 أمر صدفة مُبرمَجًا في 66 ثانية، ثم سبعة فحوص لمعرفة ما إذا كان المضيف مصيدة جذب، ثم صمت.
بقلم Davis Zheng·
TLP:CLEAR. مصرَّح بالنشر العام. رُصد بواسطة شبكة مستشعرات مصائد الجذب لدى Kinryū Labs. المؤشرات الواردة أدناه مُعطَّلة الفاعلية.
الملخص التنفيذي
- 42أمر صدفة دُفعت عبر أدوات MCP
- 66 sمن أول أمر إلى آخر أمر
- 7فحوص لكشف مصائد الجذب في العشرين ثانية الأخيرة
- 1مصدر واحد لهذا النشاط، من 5 إلى 12 سبتمبر
الثغرة CVE-2026-42271 هي خلل حقن أوامر في نقاط اختبار MCP لدى LiteLLM (من 1.74.2 حتى 1.83.6، بدرجة CVSS 8.7، ومُدرَجة في قائمة CISA KEV منذ 8 يونيو 2026)، وفي 6 سبتمبر أساء أحد العملاء استخدام سطح أدوات MCP في LiteLLM على شَرَك LiteLLM تابع لـ Kinryū Labs. من عنوان خادم افتراضي في هونغ كونغ عدَّد أدوات MCP الخاصة بالشَّرَك، ثم دفع عبرها 42 أمر صدفة في 66 ثانية: مَن أنا، هل أنا داخل حاوية، هل مفاتيح SSH الخاصة بحساب الجذر قابلة للقراءة، وما هذه الشبكة. وأنفق العشرين ثانية الأخيرة في التحقق مما إذا كان المضيف حقيقيًا، بملف علامة وقراءة للساعة وسحب من /dev/urandom وثلاث فترات سكون موقوتة، ثم توقف؛ ولم يصدر عنه أي شيء آخر حتى 12 سبتمبر. إذا كنت تشغّل LiteLLM بإصدار أقل من 1.83.7 مع إمكانية الوصول إلى المنفذ 4000، فحدِّث؛ ويتضمن قسم الكشف قاعدة لشكل الطلب وأخرى لاختبار مصيدة الجذب.
ذهبت الطلبات إلى tools/call على /mcp. يصف التنبيه الأمني الخلل في نقاط /mcp-rest/test/*، وهي نقاط لم يمسّها هذا العميل، لذلك نصف النشاط بأنه إساءة استخدام لسطح أدوات MCP في LiteLLM لا بأنه استغلال لتلك الثغرة.
التقديرات الرئيسية
- كانت هذه جولة مُبرمَجة ضد هدف واحد. أرسل العميل 42 استدعاء أداة في 66 ثانية، في دفعات تفصل بين الأوامر داخلها 130 إلى 250 مللي ثانية وتفصل بين الدفعات توقفات من 9 إلى 26 ثانية، مستخدمًا 37 أمرًا متمايزًا. وجاء من عنوان واحد، وزار مرة واحدة، وكان المصدر الوحيد لهذا النشاط بين 5 و12 سبتمبر. ثقة متوسطة.
- بعد الاستطلاع، نفّذ العميل سبعة فحوص لكشف مصيدة الجذب ثم توقف. بين 01:28:21 و01:28:41 اختبر توجيه stderr، ومعالجة أغلفة الصدفة، ومسارات الأخطاء، وحالة نظام الملفات، والساعة، والعشوائية، وتوقيت السكون. وكان الأمر الأخير sleep 8، ولم يصدر عن العنوان أي شيء آخر حتى 12 سبتمبر. ثقة متوسطة.
- بحث الاستطلاع عن طريق للخروج من المضيف. فقد عدَّد مجلد المفاتيح الخاصة لحساب الجذر مرتين، وقرأ /proc/1/cgroup و/proc/1/cmdline، وأحصى عناوين الشبكة. فحص إثبات المفهوم لا يحتاج إلى أي من ذلك. ثقة متوسطة.
- لم يُقدَّم أي مفتاح وكيل. لم يقدّم أي طلب /mcp من هذا العنوان مفتاح وكيل، وهو ما يتسق مع السلسلة غير المُصادَق عليها مع ثغرة تجاوز ترويسة Host في Starlette رقم CVE-2026-48710. أما كون الطلبات قد ركبت ذلك التجاوز فهو استنتاج. ثقة منخفضة.
التسلسل الزمني
- 01:24:44 UTCأول اتصال: طلب HTTP POST إلى /mcp على TCP/4000، بوكيل Mozilla/5.0، وتعداد لسطح أدوات MCP.
- 01:25:46 UTCمسبار تعداد ثانٍ، بالملف التعريفي نفسه للعميل.
- 01:27:30 UTCيتحول العميل إلى curl/8.20.0 ببصمة عميل HTTP جديدة ويعيد تعداد سطح الأدوات.
- 01:27:35 UTCأول حقن أوامر: أداة bash بالأمر 'id'؛ يليها مباشرة read_file لـ /etc/hostname.
- 01:27:44 UTCسطر استطلاع مركّب: hostname؛ uname -a؛ تعداد مجلد مفاتيح الجذر؛ cat /proc/1/cgroup.
- 01:27:55 UTCمركّب ثانٍ: pwd؛ whoami؛ /proc/1/cgroup؛ ip a | grep inet؛ ls /.
- 01:28:21 UTCتحوّل إلى كشف الشَّرَك: إعادة توجيه stderr، ومعالجة غلافَي sh -c وbash -c، وls -la /etc/passwd.
- 01:28:31 UTCاختبارات مسار الخطأ والاحتفاظ بالحالة: مسار وملف غير موجودين، ثم touch يليه cat لـ /tmp/marker_uniq_93817.
- 01:28:32 UTCاختبارات الساعة والعشوائية: date +%s، وhead -c 50 /dev/urandom | base64.
- 01:28:41 UTCاختبارات التوقيت sleep 0 / 5 / 8، ثم تنتهي الجلسة. لا نشاط آخر من هذا العنوان حتى 12 سبتمبر.
الجلسة، بالترتيب
01:27:35 id
01:27:44 hostname; uname -a | cut -c1-120; ls -la [root key directory] 2>&1 | head -5; cat /proc/1/cgroup 2>/dev/null | head -3
01:27:55 pwd; whoami; cat /proc/1/cgroup | head -2; ip a | grep inet | head -3; ls / | head -15
01:28:21 echo hi 1>&2
01:28:32 date +%s
01:28:32 head -c 50 /dev/urandom | base64
01:28:41 sleep 8
الاستطلاع يقصد مباشرة مفاتيح الجذر وحدود الحاوية
قدّم العميل هويتين مختلفتين خلال الدقائق الثلاث الأولى. فقد أرسل مسبارَي تعداد لسطح الأدوات ابتداءً من 01:24:44 تحت وكيل مستخدم Mozilla/5.0. وبعد أقل من ثلاث دقائق بقليل تحول إلى curl/8.20.0، ببصمة عميل HTTP مختلفة بالتبعية، وبدأ باستدعاء الأدوات عبر tools/call.
نفّذ أولًا فحوص الهوية، id وhostname، ثم read_file على /etc/hostname، ثم السطرين المركّبين الموضحين في الجلسة أعلاه.
عدَّد السكربت مجلد المفاتيح الخاصة لحساب الجذر مرتين ونفّذ ip a | grep inet. فحص إثبات المفهوم لا يحتاج إلى تعداد مجلد المفاتيح ولا إلى إحصاء الشبكة، لذلك نقرأ هذا الاستطلاع بوصفه تمهيدًا للانتقال خارج مضيف الوكيل. أما قراءتا /proc/1/cgroup و/proc/1/cmdline فتحددان ما إذا كانت الصدفة داخل حاوية.
عند 01:28:21 يتوقف العميل عن السؤال عن المضيف ويبدأ باختباره
على مدى عشرين ثانية اختبر العميل ما إذا كان يتحدث إلى مضيف حقيقي. فنفّذ echo hi 1>&2 ليرى ما إذا كان stderr يعود على قناته الخاصة؛ وغلافَي sh -c وbash -c لفحص معالجة استدعاء الصدفة؛ وls وcat على مسارات غير موجودة عمدًا لاختبار أمانة مسار الخطأ؛ وtouch يليه cat لملف العلامة نفسه في /tmp، ليرى ما إذا كان نظام الملفات يحتفظ بالحالة بين الاستدعاءات؛ وdate +%s لتقدّم الساعة؛ وhead -c 50 /dev/urandom | base64 للعشوائية؛ وsleep 0 وsleep 5 وsleep 8 لأمانة التوقيت.
كان الأمر الأخير sleep 8 عند 01:28:41. ولم يصل أي شيء آخر من هذا العنوان حتى 12 سبتمبر. سبب توقفه غير معروف. وترتيب الأحداث هو ما يدعم قراءة ذلك بوصفه اختبارًا لمصيدة جذب أعقبه قرار بالتوقف، بثقة متوسطة.
ليس جديدًا علينا مشغّل يختبر نقاط نهاية وكلاء نماذج اللغة بحثًا عن مصائد جذب قبل أن يثق بها: تقرير keyHunter يصف مشغّلًا بُني مُتحقِّقه للتعرف عليها. وليس لدينا أي مؤشر يربط بين الاثنين.
النسب
يحسم التوقيت أمرًا واحدًا: كان هذا سكربتًا. اثنان وأربعون استدعاءً في 66 ثانية، أُطلقت في دفعات، بفاصل 130 إلى 250 مللي ثانية بين الأوامر داخل الدفعة وتوقفات من 9 إلى 26 ثانية بين الدفعات، هي أدوات تستغل، وتبحث عن المفاتيح وحدود الحاوية، وتبصم المضيف ثم تخرج. وهذا يتسق مع عُدّة مشغّل موجَّه أو مع إطار عمل لفريق أحمر مزوَّد بمُرشِّح مسبق لتفادي الاحتراق. ولا يتسق مع الاستغلال الجماعي السلعي، الذي يعيد تشغيل حمولة ثابتة واحدة ويعود مرارًا؛ فهذا العميل نوّع 37 سلسلة أوامر، وزار مرة واحدة، وكان المصدر الوحيد لهذا النشاط بين 5 و12 سبتمبر. ولا يُستبعد تمامًا أن يكون مسحًا بحثيًا أمنيًا، لأن بطاريات فحص الأصالة هي أيضًا أسلوب عمل أبحاث كشف مصائد الجذب، غير أن المصدر نطاق خوادم افتراضية تجارية في هونغ كونغ، والعميل لا يعلن عن هوية بحثية، والجلسة عدَّدت مجلد مفاتيح الجذر وقرأت /etc/passwd، وهو ما لا تفعله المسوح ذات السمعة الحسنة.
لا نمضي بالنسب أبعد من ذلك. يقع العنوان في AS140227 (Hong Kong Communications International، 177.4.0[.]0/20)، وهي استضافة تجارية. ويُظهر VirusTotal حكمين خبيثين وحكمين مشبوهين من المحركات دون تسمية من أي مورّد، والخلل مُدرَج في KEV مع شيفرة إثبات مفهوم علنية، لذلك لا تقول القدرة شيئًا عن الفاعل.
مؤشرات الاختراق
مؤشر الشبكة الوحيد أدناه مُعطَّل الفاعلية؛ أما البصمات والمسارات فمذكورة كما رُصدت.
الشبكة
| المؤشر | السياق |
|---|---|
177.4.12[.]11 | المصدر الوحيد لهذا النشاط بين 5 و12 سبتمبر؛ ذهب كل طلب إلى /mcp على TCP/4000؛ AS140227، هونغ كونغ |
آثار المضيف
| المؤشر | السياق |
|---|---|
/tmp/marker_uniq_<digits> | ملف علامة كُتب ثم أُعيدت قراءته ضمن اختبار مصيدة الجذب؛ كانت اللاحقة 93817 في هذه الجلسة، لذا تعقّب النمط |
سلوكية
| المؤشر | السياق |
|---|---|
po11nn050000_6e4c6fcb1a9b | بصمة عميل HTTP بنمط JA4H لمرحلة الأوامر عبر curl/8.20.0 |
po11nn070000_39fa8e08ab4c | بصمة عميل HTTP بنمط JA4H لمرحلة التعداد الأولية عبر Mozilla/5.0 |
الكشف
Sigma
استدعاء MCP tools/call يحمل أمر صدفة إلى وكيل LiteLLM (مرشَّحة).
title: MCP tools/call Carrying A Shell Command To A LiteLLM Proxy
id: 5b0f6c1e-2f0a-4d0e-9a53-6b1d0f7a42c1
status: experimental
description: POST to a LiteLLM MCP endpoint whose JSON body invokes a tool with a command argument. Needs request-body logging at the reverse proxy; the body field name is a placeholder for whatever your proxy calls it. Any hit on LiteLLM below 1.83.7 should be treated as exploitation.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-42271
logsource:
category: webserver
detection:
selection_request:
cs-method: POST
cs-uri-stem:
- /mcp
- /mcp-rest/test/connection
- /mcp-rest/test/tools/list
selection_call:
request_body|contains: '"method": "tools/call"'
selection_command:
request_body|re: '"(command|args)"\s*:'
condition: all of selection_*
falsepositives:
- An MCP shell tool you expose on purpose to trusted clients
level: high
فحوص أصالة لكشف مصيدة الجذب تُطلقها عملية وكيل نموذج لغوي (مرشَّحة).
title: Honeypot Fidelity Checks Spawned By An LLM Proxy Process
id: 0c9a7e52-8d1b-4a38-b0f4-3e5f2a9d7c10
status: experimental
description: A proxy process spawning the checks a client uses to decide whether the host is emulated. Seen immediately before the client abandoned the session. Works from ordinary process telemetry on the proxy host.
logsource:
product: linux
category: process_creation
detection:
selection_parent:
ParentImage|endswith:
- /python
- /python3
- /litellm
selection_checks:
CommandLine|contains:
- /dev/urandom
- date +%s
- /proc/1/cgroup
- marker_uniq_
condition: selection_parent and selection_checks
falsepositives:
- Container entrypoint or health-check scripts that read /proc/1/cgroup
level: high
منطق الكشف
- بطارية فحوص أصالة من مصدر واحد (سلوكية، مرشَّحة). خلال 120 ثانية من مصدر واحد، أحصِ الأوامر المتمايزة المطابقة لـ /dev/urandom و’date +%s’ و’^sleep [0-9]+$’ و’echo .* 1>&2’ و’^(sh|bash) -c ’ وعملية touch يليها cat للمسار نفسه في /tmp. ثلاث فئات أو أكثر تعني أن عميلًا يقرر ما إذا كان الهدف حقيقيًا؛ احتفظ بالتقاط الجلسة كاملًا.
- طلب POST غير مُصادَق عليه إلى /mcp على منفذ LiteLLM الافتراضي (شبكية، مرشَّحة). منفذ الوجهة 4000، والأسلوب POST، والمسار /mcp، دون ترويسة تفويض. اقرنها ببصمة مرحلة curl وهي po11nn050000_6e4c6fcb1a9b.
المعالجة
- حدِّث LiteLLM إلى 1.83.7 أو أحدث؛ يضيف الإصلاح قائمة أوامر مسموحًا بها وفحصًا لدور PROXY_ADMIN على نقاط اختبار MCP.
- إن لم يكن التحديث فوريًا، فاحجب POST /mcp-rest/test/connection وPOST /mcp-rest/test/tools/list عند الوكيل العكسي، ولا تُعرِّض TCP/4000 للإنترنت.
- رقِّع ثغرة تجاوز ترويسة Host في Starlette رقم CVE-2026-48710 على المكدس نفسه. فالثغرتان مُسلسَلتين تمنحان تنفيذ شيفرة عن بُعد دون مصادقة.
- أحصِ كل خادم MCP مُهيَّأ الوكيل لاستدعائه، وراجع حقلَي command وargs فيه بحثًا عن حقن من الدرجة الثانية.
- دوِّر أي مفاتيح API خاصة بالمزوّدين، وقيم LITELLM_MASTER_KEY، والمفاتيح الافتراضية التي يمكن الوصول إليها من بيئة عملية الوكيل أو من ملفات بيانات الاعتماد المُركَّبة.
- تعقَّب في المضيفات وجود /tmp/marker_uniq_
وعمليات فرعية لعملية الوكيل تنفّذ id أو whoami أو uname أو getent أو تعدادًا لمجلد مفاتيح حساب الجذر.
ربط MITRE ATT&CK
| التكتيك | التقنية | ما رُصد |
|---|---|---|
| الوصول الأولي | T1190 Exploit Public-Facing Application | 42 استدعاء MCP tools/call ضد وكيل نموذج لغوي مكشوف على TCP/4000، مع إساءة استخدام سطح أدوات MCP الخاص به. |
| التنفيذ | T1059.004 Command and Scripting Interpreter: Unix Shell | أداة bash في MCP مُشغَّلة بأسطر صدفة مفردة تشمل غلافَي sh -c وbash -c. |
| الاستكشاف | T1082 System Information Discovery | uname -a, cat /etc/os-release, uname -r, hostname -f, ls -la /, cat /proc/1/cmdline. |
| الاستكشاف | T1033 System Owner/User Discovery | id, id -u, whoami, getent passwd root, cat /etc/passwd | head -3. |
| الوصول إلى بيانات الاعتماد | T1552.004 Unsecured Credentials: Private Keys | تعدادان لمجلد المفاتيح الخاصة لحساب الجذر في دفعة الاستطلاع الأولى. |
| التهرب من الدفاعات | T1497 Virtualization/Sandbox Evasion | فحص الحاوية عبر /proc/1/cgroup، ثم بطارية الفحوص السبعة في العشرين ثانية الأخيرة. |
| الجمع | T1005 Data from Local System | استدعاء أداة read_file في MCP على /etc/hostname. |
المراجع
- NVD: CVE-2026-42271
- كتالوغ الثغرات المعروفة المُستغَلة من CISA
- Kinryū Labs: keyHunter، عملية مفاتيح ضد وكلاء نماذج اللغة سرّبت عُدّتها الخاصة
المنهجية وملاحظات المحلل
يستند هذا التقرير إلى عنوان مصدر واحد و10 مشاهدات موقوتة، قُرئت من قياسات المستشعرات، وقُوبلت بتغذيات استخبارات التهديدات العلنية وعمليات الإثراء، وتغطي نشاطًا في 6 سبتمبر 2026 ومحاور تتبع من 5 إلى 12 سبتمبر. توقف النشاط عند مرحلة الاستكشاف: لم تُحاوَل أي عملية جلب حمولة أو ترسيخ أو اتصال خارجي بخادم تحكم قبل انتهاء الجلسة.
ما زال مفتوحًا:
- ما الذي فعله 177.4.12[.]11 قبل 6 سبتمبر.
- إلى أين ذهب المشغّل بعد توقفه.
- هل لاحقة العلامة 93817 ثابتة في الأداة أم تُولَّد في كل جولة؟
- هل تطابق البطارية أي أداة استغلال أو كشف مصائد جذب منشورة؟
- هل كان مفتاح الوكيل مطلوبًا، أم أن الطلب ركب تجاوز ترويسة Host في CVE-2026-48710؟
للاستفسارات أو التصويبات: [email protected].