این صفحه یک ترجمه است. نسخهٔ انگلیسی متن معتبر است. خواندن نسخهٔ انگلیسی
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، از 8 ژوئن 2026 در فهرست CISA KEV)، و در 6 سپتامبر یک کلاینت از سطح ابزار MCP در LiteLLM روی یک طعمه Kinryū Labs سوءاستفاده کرد: 42 فرمان پوسته اسکریپتشده در 66 ثانیه، سپس هفت بررسی برای اینکه آیا میزبان یک هانیپات است، و پس از آن سکوت.
نوشتهٔ Davis Zheng·
TLP:CLEAR. برای انتشار عمومی تأیید شده است. ثبتشده توسط شبکه حسگر هانیپات Kinryū Labs. شاخصهای زیر بیاثر (defanged) شدهاند.
خلاصه اجرایی
- 42فرمان پوسته که از طریق ابزارهای MCP ارسال شد
- 66 ثانیهاز نخستین فرمان تا آخرین فرمان
- 7بررسی هانیپات در 20 ثانیه پایانی
- 1منبع این فعالیت، 5 تا 12 سپتامبر
CVE-2026-42271 یک نقص تزریق فرمان در نقاط انتهایی آزمایشی MCP در LiteLLM است (نسخه 1.74.2 تا 1.83.6، CVSS 8.7، از 8 ژوئن 2026 در فهرست CISA KEV)، و در 6 سپتامبر یک کلاینت از سطح ابزار MCP در LiteLLM روی یک طعمه LiteLLM متعلق به Kinryū Labs سوءاستفاده کرد. از یک نشانی VPS در هنگکنگ ابزارهای MCP طعمه را فهرست کرد و سپس 42 فرمان پوسته را در 66 ثانیه از طریق آنها ارسال کرد: من چه کسی هستم، آیا درون یک کانتینر هستم، آیا کلیدهای SSH کاربر root خواندنی هستند، این شبکه چیست. بیست ثانیه پایانی را صرف بررسی واقعی بودن میزبان کرد، با یک فایل نشانهگذار، خواندن ساعت، برداشتی از /dev/urandom و سه توقف زمانبندیشده، و سپس متوقف شد؛ تا 12 سپتامبر هیچ چیز دیگری از آن مشاهده نشد. اگر LiteLLM را در نسخهای پایینتر از 1.83.7 اجرا میکنید و پورت 4000 قابل دسترسی است، ارتقا دهید؛ بخش شناسایی یک قاعده برای شکل درخواست و یکی برای آزمون هانیپات دارد.
درخواستها به tools/call روی /mcp ارسال شدند. توصیهنامه نقص را در نقاط انتهایی /mcp-rest/test/* توصیف میکند که این کلاینت به آنها دست نزد، بنابراین ما این فعالیت را سوءاستفاده از سطح ابزار MCP در LiteLLM توصیف میکنیم و نه همان CVE.
داوریهای کلیدی
- این یک اجرای اسکریپتشده علیه یک هدف واحد بود. کلاینت 42 فراخوانی ابزار را در 66 ثانیه ارسال کرد، در قالب رشتههایی با 130 تا 250 میلیثانیه فاصله میان فرمانها و توقفهای 9 تا 26 ثانیهای میان رشتهها، با بهکارگیری 37 فرمان متمایز. از یک نشانی آمد، یک بار بازدید کرد و تنها منبع این فعالیت میان 5 تا 12 سپتامبر بود. اطمینان متوسط.
- پس از شناسایی، کلاینت هفت بررسی هانیپات اجرا کرد و سپس متوقف شد. میان 01:28:21 و 01:28:41 مسیریابی stderr، نحوه مدیریت پوششدهنده پوسته، مسیرهای خطا، وضعیت سیستم فایل، ساعت، آنتروپی و زمانبندی توقف را آزمود. آخرین فرمان sleep 8 بود و تا 12 سپتامبر هیچ چیز دیگری از آن نشانی نیامد. اطمینان متوسط.
- شناسایی در پی یافتن راهی برای خروج از میزبان بود. دو بار دایرکتوری کلید خصوصی حساب root را فهرست کرد، /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؛ فهرستکردن دایرکتوری کلید root؛ 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
شناسایی یکراست به سراغ کلیدهای root و مرز کانتینر میرود
کلاینت در سه دقیقه نخست دو هویت متفاوت ارائه کرد. از 01:24:44 دو کاوش برشماری سطح ابزار را با عامل کاربری Mozilla/5.0 ارسال کرد. کمی کمتر از سه دقیقه بعد به curl/8.20.0 تغییر کرد، با اثر انگشت کلاینت HTTP متناسباً متفاوت، و شروع به فراخوانی ابزارها از طریق tools/call کرد.
نخست بررسیهای هویتی، id و hostname، سپس read_file روی /etc/hostname، و پس از آن دو تکخطی ترکیبی نشاندادهشده در نشست بالا را اجرا کرد.
اسکریپت دو بار دایرکتوری کلید خصوصی حساب root را فهرست کرد و 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 سپتامبر هیچ چیز دیگری از این نشانی نرسید. علت توقف دانسته نیست. ترتیب رویدادها همان چیزی است که خواندن این توالی را بهعنوان یک آزمون هانیپات و سپس تصمیم به توقف، با اطمینان متوسط، پشتیبانی میکند.
اپراتوری که نقاط انتهایی پروکسی LLM را پیش از اعتماد کردن برای هانیپات بودن میآزماید، در اینجا چیز تازهای نیست: گزارش keyHunter ما یکی را توصیف میکند که بازبین آن برای بازشناسی هانیپاتها ساخته شده بود. هیچ شاخصی نداریم که این دو را به هم پیوند دهد.
انتساب
زمانبندی یک چیز را قطعی میکند: این یک اسکریپت بود. چهلودو فراخوانی در 66 ثانیه، شلیکشده در رشتههایی با 130 تا 250 میلیثانیه فاصله میان فرمانها درون یک رشته و توقفهای 9 تا 26 ثانیهای میان رشتهها، ابزاری است که بهرهبرداری میکند، به دنبال کلیدها و مرز کانتینر میگردد، میزبان را اثر انگشت میگیرد و خارج میشود. این با جعبهابزار یک اپراتور هدفمند یا یک چارچوب تیم سرخ با پیشفیلتر اجتناب از سوختن سازگار است. با بهرهبرداری انبوه کالایی سازگار نیست، که یک بار داده ثابت را بازپخش میکند و مکرراً بازمیگردد؛ این کلاینت 37 رشته فرمان را تغییر داد، یک بار بازدید کرد و تنها منبع این فعالیت میان 5 تا 12 سپتامبر بود. یک پیمایش پژوهش امنیتی بهطور کامل کنار گذاشته نمیشود، چون مجموعه آزمونهای وفاداری نیز شیوه کار پژوهش تشخیص هانیپات است، اما منبع یک محدوده VPS تجاری در هنگکنگ است، کلاینت هیچ هویت پژوهشی اعلام نمیکند، و نشست دایرکتوری کلید root را فهرست کرد و /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
بررسیهای وفاداری هانیپات که از سوی یک فرایند پروکسی LLM ایجاد میشوند (نامزد).
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 یا فهرستکردن دایرکتوری کلید حساب root را اجرا میکنند شکار کنید.
نقشهبرداری MITRE ATT&CK
| تاکتیک | تکنیک | مشاهدهشده |
|---|---|---|
| دسترسی اولیه | T1190 Exploit Public-Facing Application | 42 فراخوانی MCP tools/call علیه یک پروکسی LLM در معرض دید روی 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 | دو بار فهرستکردن دایرکتوری کلید خصوصی حساب root در نخستین رشته شناسایی. |
| فرار از دفاع | T1497 Virtualization/Sandbox Evasion | بررسی کانتینر با /proc/1/cgroup، و سپس مجموعه هفتگانه آزمونها در 20 ثانیه پایانی. |
| گردآوری | T1005 Data from Local System | ابزار read_file در MCP که روی /etc/hostname فراخوانی شد. |
منابع
- NVD: CVE-2026-42271
- فهرست آسیبپذیریهای شناختهشده بهرهبرداریشده CISA
- Kinryū Labs: keyHunter، عملیاتی بر کلیدهای پروکسی LLM که جعبهابزار خودش را افشا کرد
روششناسی و یادداشتهای تحلیلگر
این گزارش بر 1 نشانی منبع و 10 مشاهده زماندار استوار است که از تلهمتری حسگر خوانده و با خوراکهای عمومی اطلاعات تهدید و جستوجوهای غنیسازی مقایسه شدهاند، و فعالیت 6 سپتامبر 2026 و پیگیریهای 5 تا 12 سپتامبر را در بر میگیرد. فعالیت در مرحله کشف متوقف شد: پیش از پایان نشست هیچ تلاشی برای دریافت داده مخرب، پایداری یا C2 خروجی انجام نشد.
هنوز باز:
- اینکه 177.4.12[.]11 پیش از 6 سپتامبر چه میکرد.
- اینکه اپراتور پس از توقف به کجا رفت.
- آیا پسوند نشانهگذار 93817 در ابزار ثابت است یا در هر اجرا تولید میشود؟
- آیا این مجموعه آزمون با هیچ ابزار بهرهبرداری یا تشخیص هانیپات منتشرشدهای مطابقت دارد؟
- آیا کلید پروکسی لازم بود، یا درخواست بر دور زدن هدر Host یعنی CVE-2026-48710 سوار شد؟
پرسشها یا اصلاحات: [email protected].