POST /mcp-rest/test/tools/listשתי נקודות הקצה מקבלות במסגרת בקשת ה-JSON תצורת שרת MCP מלאה, הכוללת את השדות Cmd, args ו-env, שמנגנון ה-stdio transport משתמש בהם כדי להריץ תהליכי שרת . כאשר משתמש מאומת קורא לאחת מנקודות הקצה עם תצורה זו, LiteLLM לוקח את ערך ה-Cmd שסופק ומריץ אותו כתת-תהליך על המכונה המארחת, עם אותן הרשאות מערכת הפעלה שיש לתהליך פרוקסי ה-LiteLLM עצמו
.
במקור, BerriAI חשפה זאת כבאג ביצוע קוד מרחוק מאומת – תוקף נזקק למפתח API תקף כדי להגיע לנקודות הקצה, ולא הייתה בקרת הרשאות מבוססת תפקידים (role) שהגבילה מי יכול לקרוא להן. אפילו משתמש פנימי עם הרשאות נמוכות, המחזיק בכל מפתח API תקף לפרוקסי, יכול היה להריץ פקודות שרירותיות על המארח . אבל הסיפור לא נגמר כאן.
הפגיעות השנייה היא CVE-2026-48710, שזכתה לכינוי "BadHost" על ידי חוקרים. זוהי חולשת אימות של כותרת Host (Host Header) ב-Starlette, מסגרת העבודה הקלה ASGI שעליה מבוססים FastAPI, vLLM, ועוד אלפי יישומי ווב בפייתון – כולל LiteLLM . כל גרסאות Starlette מ-0.8.3 ועד 1.0.0 מושפעות
.
שורש הבעיה הוא אי-הסכמה בפענוח (parser disagreement) בין האופן שבו Starlette מנתבת בקשות נכנסות לבין האופן שבו היא משחזרת את ה-URL עבור לוגיקת היישום . שכבת ניתוב ה-ASGI משתמשת בנתיב ה-HTTP הגולמי מהבקשה כדי להחליט איזו נקודת קצה מטפלת בה. אך
request.url – ה-URL שמידלוור ודקורטורי האפליקציה רואים – נבנה מחדש על ידי שרשור ערך כותרת ה-Host הגולמי עם נתיב הבקשה, וזאת ללא ולידציה נאותה .
על ידי הזרקת תווי הפרדה בין סמכות ה-URI לנתיב (URI authority-to-path delimiters), כגון ? או #, לתוך כותרת ה-Host, תוקף יכול לגרום לכך ש-request.url.path ייראה שונה לחלוטין מנתיב הבקשה המנותב בפועל . מידלוור האימות רואה נתיב תמים כמו
/, בעוד מאחורי הקלעים, הנתב מעביר את הבקשה לנקודת הקצה האמיתית שהיא היעד. כל מידלוור אימות מבוסס-נתיב שסומך על request.url.path ניתן לעקיפה באופן טריוויאלי .
דקורטור האימות של LiteLLM בודק את request.url.path כדי לקבוע האם בקשה זקוקה למפתח API תקף. מעקף ה-BadHost מאפשר לתוקף לתמרן את ה-URL הזה כך שמידלוור האימות יראה נתיב שאינו דורש אימות, בעוד נתב ה-ASGI שולח את הבקשה במקביל לאחת מנקודות הקצה הפגיעות להזרקת הפקודות ב-MCP .
פעולה זו מסירה את שער בקרת הגישה היחיד שעמד בין האינטרנט לבין הרצת פקודות שרירותית. תוקף ללא אישורי גישה וללא שום גישה קודמת לרשת יכול לשלוח בקשת HTTP יחידה ומתוכננת בקפידה, שעוקפת לחלוטין את האימות ומריצה פקודות מערכת הפעלה על מארח פרוקסי ה-LiteLLM . Horizon3.ai אישרו ששרשרת הניצול המלאה עובדת, והעניקו לה ציון CVSS משולב של 10.0 – רמת החומרה המקסימלית – מכיוון שהיא משיגה ביצוע קוד מרחוק ללא אימות כלל
.
ניצול מוצלח נותן לתוקפים הרצת פקודות עם הרשאות תהליך פרוקסי ה-LiteLLM. מנקודה זו, משטח האיום מתרחב במהירות:
הוספת CVE-2026-42271 לקטלוג KEV של CISA ב-8 ביוני 2026 מאשרת שהפגיעות אינה תיאורטית – תוקפים מחמשים אותה בפועל ממש עכשיו . תחת 'הנחיית התפעול המחייבת 22-01', כל הסוכנויות הפדרליות האמריקאיות בזרוע המבצעת האזרחית חייבות להתקין טלאים לפגיעויות הרשומות ב-KEV בתוך לוח זמנים מוגדר לתיקון. CISA גם ממליצה בחום לכל הארגונים, ציבוריים ופרטיים, להתייחס לתוספות ל-KEV כאל סדרי עדיפויות חירום לתיקון
.
התיקון לניצול המשורשר דורש עדכונים בשתי חזיתות, בנוסף למספר צעדי הגנה לעומק לטיפול בחשיפת אישורי גישה:
Host נכנסות מול מפרט ה-URL ומתעלם מכותרות המכילות תווים לא חוקיים, ובכך מונע את טריק בלבול הנתיבים שמאפשר את עקיפת האימות POST /mcp-rest/test/connectionPOST /mcp-rest/test/tools/listHost שעברו מניפולציה דירוג החומרה CVSS 10.0 המשולב, הניצול הפעיל בשטח, והתיוג של CISA בקטלוג KEV – כל אלה מחייבים ארגונים המפעילים שירותים מבוססי LiteLLM או Starlette להתייחס לאירוע זה כאירוע חירום של "תיקון-והחלפה". חלון ההזדמנויות שבין ניצול פעיל לבין חילוץ אישורי גישה כבר פתוח.
Comments
0 comments