עמוד זה הוא תרגום. הגרסה האנגלית היא הנוסח המחייב. לקריאה באנגלית

litellm · mcp · cve-2026-42271 · kev · llm-abuse · honeypot-detection · sandbox-evasion

סיור MCP ב-LiteLLM בתוך 66 שניות: לקוח מבוסס סקריפט שבודק אם מדובר ב-honeypot

CVE-2026-42271 היא חולשת הזרקת פקודות בנקודות הקצה לבדיקת MCP של LiteLLM (1.74.2 עד 1.83.6, CVSS 8.7, ברשימת CISA KEV מאז 8 ביוני 2026), וב-6 בספטמבר לקוח אחד ניצל לרעה את משטח כלי ה-MCP של LiteLLM על פיתיון של Kinryū Labs: 42 פקודות shell מבוססות סקריפט בתוך 66 שניות, לאחר מכן שבע בדיקות לשאלה אם המכונה היא honeypot, ואז שקט.

מאת Davis Zheng·

CVE
CVE-2026-42271
CVSS
8.7

TLP:CLEAR. אושר לפרסום פומבי. נתפס על ידי רשת חיישני ה-honeypot של Kinryū Labs. האינדיקטורים להלן מנוטרלים.

תקציר מנהלים

  • 42פקודות shell שהועברו דרך כלי MCP
  • 66 sמהפקודה הראשונה עד האחרונה
  • 7בדיקות honeypot ב-20 השניות האחרונות
  • 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. מכתובת VPS בהונג קונג הוא מנה את כלי ה-MCP של הפיתיון, ולאחר מכן העביר דרכם 42 פקודות shell בתוך 66 שניות: מי אני, האם אני בתוך קונטיינר, האם מפתחות ה-SSH של root קריאים, איזו רשת זו. את 20 השניות האחרונות הוא הקדיש לבחינה אם המכונה אמיתית, באמצעות קובץ סימון, קריאת שעון, שליפה מ-/dev/urandom ושלוש השהיות מתוזמנות, ואז עצר; דבר נוסף לא הגיע ממנו עד 12 בספטמבר. מי שמריץ LiteLLM בגרסה נמוכה מ-1.83.7 עם פורט 4000 נגיש, צריך לשדרג; בפרק האיתור מופיע כלל לצורת הבקשה וכלל נוסף לבדיקת ה-honeypot.

הבקשות הופנו אל tools/call בנתיב /mcp. פרסום החולשה מתאר את הפגם בנקודות הקצה /mcp-rest/test/*, שבהן לקוח זה לא נגע, ולכן אנו מתארים את הפעילות כניצול לרעה של משטח כלי ה-MCP של LiteLLM ולא כאותה CVE.

הערכות מרכזיות

  • מדובר בהרצה מבוססת סקריפט נגד מטרה אחת. הלקוח שלח 42 הפעלות כלים בתוך 66 שניות, בפרצים עם 130 עד 250 ms בין פקודות והשהיות של 9 עד 26 שניות בין פרצים, תוך שימוש ב-37 פקודות שונות. הוא הגיע מכתובת אחת, ביקר פעם אחת, והיה המקור היחיד לפעילות זו בין 5 ל-12 בספטמבר. ביטחון בינוני.
  • לאחר הסיור, הלקוח הריץ שבע בדיקות honeypot ואז עצר. בין 01:28:21 ל-01:28:41 הוא בדק ניתוב stderr, טיפול בעוטפי shell, מסלולי שגיאה, מצב מערכת הקבצים, השעון, אנטרופיה ותזמון sleep. הפקודה האחרונה הייתה sleep 8, ודבר נוסף לא הגיע מהכתובת עד 12 בספטמבר. ביטחון בינוני.
  • הסיור חיפש דרך לצאת מהמכונה. הוא הציג פעמיים את תוכן ספריית המפתחות הפרטיים של חשבון root, קרא את /proc/1/cgroup ואת /proc/1/cmdline, ומנה כתובות רשת. בדיקת proof-of-concept אינה זקוקה לאף אחד מאלה. ביטחון בינוני.
  • לא הוצג מפתח proxy. אף בקשה ל-/mcp מכתובת זו לא הציגה מפתח proxy, מה שמתאים לשרשור הלא-מאומת עם עקיפת כותרת ה-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 תחת user agent של Mozilla/5.0. פחות משלוש דקות לאחר מכן הוא החליף ל-curl/8.20.0, עם טביעת אצבע שונה בהתאם של לקוח HTTP, והחל להפעיל כלים באמצעות tools/call.

תחילה הוא הריץ בדיקות זהות, id, hostname, לאחר מכן read_file נגד /etc/hostname, ולאחר מכן שתי השורות המורכבות שמוצגות בסשן שלמעלה.

הסקריפט הציג פעמיים את תוכן ספריית המפתחות הפרטיים של חשבון root והריץ ip a | grep inet. בדיקת proof-of-concept אינה זקוקה להצגת ספריות מפתחות או למניית רשת, ולכן אנו קוראים את הסיור הזה כהכנה ליציאה מהמכונה שמריצה את ה-proxy. הקריאות של /proc/1/cgroup ו-/proc/1/cmdline קובעות אם ה-shell נמצא בתוך קונטיינר.

ב-01:28:21 הלקוח מפסיק לשאול על המכונה ומתחיל לבחון אותה

במשך עשרים שניות הלקוח בדק אם הוא משוחח עם מכונה אמיתית. הוא הריץ echo hi 1>&2 כדי לראות אם stderr חוזר בערוץ הנפרד שלו; עוטפי sh -c ו-bash -c כדי לבדוק את הטיפול בהפעלת shell; 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 בספטמבר. הסיבה לעצירה אינה ידועה. סדר האירועים הוא שתומך בקריאה של זה כבדיקת honeypot ולאחריה החלטה לעצור, בביטחון בינוני.

מפעיל שבודק אם נקודות קצה של proxy ל-LLM הן honeypots לפני שהוא נותן בהן אמון אינו תופעה חדשה כאן: דוח keyHunter שלנו מתאר מפעיל שכלי האימות שלו נבנה כדי לזהות אותן. אין בידינו אינדיקטור שמקשר בין השניים.

שיוך

התזמון מכריע דבר אחד: מדובר בסקריפט. ארבעים ושתיים הפעלות בתוך 66 שניות, שנורו בפרצים, עם 130 עד 250 ms בין פקודות בתוך פרץ והשהיות של 9 עד 26 שניות בין פרצים, הן כלי שמנצל חולשה, מחפש מפתחות ואת גבול הקונטיינר, מטביע אצבע על המכונה ויוצא. הדבר מתאים לערכת כלים של מפעיל ממוקד או למסגרת red-team עם מסנן מקדים למניעת שריפת הכלי. הדבר אינו מתאים לניצול המוני מסחרי, שמשחזר מטען קבוע אחד וחוזר שוב ושוב; לקוח זה גיוון 37 מחרוזות פקודה, ביקר פעם אחת, והיה המקור היחיד לפעילות זו בין 5 ל-12 בספטמבר. סקר מחקר אבטחה אינו נשלל לחלוטין, מכיוון שסוללות בדיקות נאמנות הן גם הדרך שבה מתנהל מחקר לזיהוי honeypots, אך המקור הוא טווח VPS מסחרי בהונג קונג, הלקוח אינו מציג זהות מחקרית, והסשן הציג את ספריית המפתחות של root וקרא את /etc/passwd, מה שסקרים בעלי מוניטין אינם עושים.

איננו מרחיקים את השיוך מעבר לכך. הכתובת נמצאת ב-AS140227 (Hong Kong Communications International, 177.4.0[.]0/20), שהוא אחסון מסחרי. VirusTotal מציג שני פסקי דין זדוניים ושני חשודים ממנועים, בלי שיוך מצד ספק, והחולשה מופיעה ב-KEV עם קוד proof-of-concept פומבי, כך שהיכולת אינה מלמדת דבר על הזהות.

אינדיקטורים לפגיעה

אינדיקטור הרשת היחיד שלהלן מנוטרל; טביעות האצבע והנתיבים ניתנים כפי שנצפו.

רשת

אינדיקטורהקשר
177.4.12[.]11המקור היחיד לפעילות זו בין 5 ל-12 בספטמבר; כל הבקשות הופנו ל-/mcp על TCP/4000; AS140227, הונג קונג

ארטיפקטים במכונה

אינדיקטורהקשר
/tmp/marker_uniq_<digits>קובץ סימון שנכתב ואז נקרא חזרה בבדיקת ה-honeypot; הסיומת בסשן זה הייתה 93817, ולכן יש לחפש את התבנית

התנהגותי

אינדיקטורהקשר
po11nn050000_6e4c6fcb1a9bטביעת אצבע של לקוח HTTP בסגנון JA4H משלב הפקודות של curl/8.20.0
po11nn070000_39fa8e08ab4cטביעת אצבע של לקוח HTTP בסגנון JA4H משלב המנייה הראשוני של Mozilla/5.0

איתור

Sigma

קריאת MCP tools/call הנושאת פקודת shell אל proxy של 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

בדיקות נאמנות honeypot שנוצרות על ידי תהליך proxy של 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, בלי כותרת authorisation. שלבו זאת עם טביעת האצבע של שלב ה-curl, po11nn050000_6e4c6fcb1a9b.

צעדי תיקון

  • שדרגו את LiteLLM ל-1.83.7 או גרסה מאוחרת יותר; התיקון מוסיף רשימת היתר לפקודות ובדיקת תפקיד PROXY_ADMIN בנקודות הקצה לבדיקת MCP.
  • אם השדרוג אינו מיידי, חסמו POST /mcp-rest/test/connection ו-POST /mcp-rest/test/tools/list ב-reverse proxy, ואל תחשפו את TCP/4000 לאינטרנט.
  • תקנו את עקיפת כותרת ה-Host ב-Starlette, CVE-2026-48710, באותו מערך. בשרשור, השתיים מאפשרות הרצת קוד מרחוק ללא אימות.
  • ערכו מלאי של כל שרת MCP שה-proxy מוגדר לקרוא אליו, ובדקו את command ו-args שלו לאיתור הזרקה מסדר שני.
  • החליפו כל מפתחות API של ספקים, ערכי LITELLM_MASTER_KEY ומפתחות וירטואליים הנגישים מסביבת תהליך ה-proxy או מקבצי פרטי הזדהות מעוגנים.
  • חפשו במכונות את /tmp/marker_uniq_ ותהליכי בן של ה-proxy שמריצים id, whoami, uname, getent או הצגת תוכן ספריית המפתחות של חשבון root.

מיפוי MITRE ATT&CK

טקטיקהטכניקהנצפה
גישה ראשוניתT1190 Exploit Public-Facing Application42 הפעלות MCP tools/call נגד proxy ל-LLM חשוף על TCP/4000, בניצול לרעה של משטח כלי ה-MCP שלו.
הרצהT1059.004 Command and Scripting Interpreter: Unix Shellכלי ה-bash של MCP הופעל בשורות shell בודדות, כולל עוטפי sh -c ו-bash -c.
גילויT1082 System Information Discoveryuname -a, cat /etc/os-release, uname -r, hostname -f, ls -la /, cat /proc/1/cmdline.
גילויT1033 System Owner/User Discoveryid, 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.

הפניות

מתודולוגיה והערות אנליסט

דוח זה מבוסס על כתובת מקור 1 ו-10 תצפיות מתוזמנות, שנקראו מטלמטריית חיישנים, ונבדקו מול הזנות מודיעין איומים פומביות ושאילתות העשרה, ומכסות פעילות ב-6 בספטמבר 2026 ופיבוטים מ-5 עד 12 בספטמבר. הפעילות נעצרה בשלב הגילוי: לא נעשה ניסיון להורדת מטען, השגת אחיזה או תקשורת C2 יוצאת לפני סיום הסשן.

נותר פתוח:

  • מה עשתה 177.4.12[.]11 לפני 6 בספטמבר.
  • לאן פנה המפעיל לאחר שעצר.
  • האם הסיומת 93817 של קובץ הסימון קבועה בכלי או נוצרת בכל הרצה?
  • האם הסוללה תואמת לכלי ניצול או לכלי לזיהוי honeypot שפורסמו?
  • האם נדרש מפתח proxy, או שהבקשה נשענה על עקיפת כותרת ה-Host, CVE-2026-48710?

שאלות או תיקונים: contact@kinryu.sh.

How to cite
Kinryū Labs (2026). סיור MCP ב-LiteLLM בתוך 66 שניות: לקוח מבוסס סקריפט שבודק אם מדובר ב-honeypot. https://kinryu.sh/he/reports/litellm-mcp-scripted-honeypot-test/