שני נתיבים, אחד שלפיו השרת מנתב את הבקשה ואחד שהקוד קורא. כשהם לא זהים, בדיקת הרשאה שמסתמכת על השני שומרת על משהו אחר ממה שבאמת נתבקש. זה מה שקרה ב-Starlette בגרסאות שלפני 1.0.1, והחולשה נכנסה ב-2 בספטמבר 2026 לקטלוג החולשות המנוצלות של CISA.

מה החולשה?

Starlette הוא framework קל בפייתון לכתיבת שירותי רשת, מהסוג שיושב בין השרת לבין הקוד שכותב המפתח. אחד הדברים שהוא נותן למפתח הוא אובייקט שמייצג את הבקשה הנכנסת, ובתוכו את הכתובת שנתבקשה.

הכתובת הזאת לא נלקחת כמו שהיא. היא נבנית מחדש, וחלק ממנה מגיע מכותרת Host ששלח מי ששלח את הבקשה. עד גרסה 1.0.1 הכותרת הזאת לא נבדקה לפני שהיא שימשה לבנייה מחדש, ושולח שהכניס לתוכה תוכן פגום גרם לכתובת המשוחזרת לצאת שונה מהנתיב שהתבקש בפועל.

כאן זה הופך מבאג לחולשה. הניתוב עצמו מתבצע לפי הנתיב הגולמי, כך שהבקשה מגיעה ליעד האמיתי שלה. אבל קוד ביניים שבודק הרשאות לפי הכתובת המשוחזרת בודק כתובת אחרת לגמרי. בדיקה שאומרת חסום כל מה שמתחיל בנתיב הניהול יכולה לראות נתיב תמים ולתת לבקשה לעבור אל היעד שהיא הייתה אמורה לחסום.

התיקון בגרסה 1.0.1 בודק את כותרת ה-Host מול הדקדוק שמגדירים תקני האינטרנט, ואם היא פגומה הוא נופל בחזרה על נתוני השרת עצמו במקום להאמין לשולח.

מי מושפע?

הרשומה מציינת Starlette מגרסה 0.8.3 ועד 1.0.1, לא כולל. גרסה 1.0.1 ומעלה מתוקנת.

לא כל מי שמריץ את הגרסאות האלה חשוף באותה מידה, וזה הבדל שכדאי לבדוק ולא להניח. החולשה נוגעת בקוד שמפעיל הגבלות אבטחה לפי הכתובת המשוחזרת. שירות שמחליט על הרשאות לפי הנתיב הגולמי אינו במסלול הזה. הדירוג משקף את הסייג: פגיעה נמוכה בסודיות ובשלמות, בלי פגיעה בזמינות, ציון 6.5.

בישראל זה נוגע בעיקר לצוותי פיתוח ולשירותים פנימיים שנכתבו בפייתון, לא למשתמש הקצה. הרכיב הזה נמשך פעמים רבות כתלות של חבילה אחרת, ולכן הבדיקה הנכונה היא בסביבה שרצה בפועל.

האם מנוצלת בפועל?

כן. ב-2 בספטמבר 2026 החולשה נכנסה לקטלוג ה-KEV של CISA, שמרכז את החולשות שידוע על ניצול שלהן בשטח, עם מועד תיקון לגופים הפדרליים ב-16 בספטמבר.

הציון 6.5 נמוך יחסית לחברה שהיא נמצאת בה עכשיו, וזו תזכורת שימושית: הכניסה לקטלוג נקבעת לפי מה שנצפה בשטח, לא לפי הציון. הרשומה מפנה גם לאתר שהוקם לחולשה ולפרסום של ארגון OSTIF.

מה עושים?

שדרגו את Starlette לגרסה 1.0.1 ומעלה. זו הגרסה שמכניסה את הבדיקה של כותרת ה-Host, וכל גרסה מ-0.8.3 ועד אליה חשופה.

בדקו את הגרסה שמותקנת בפועל ולא את זו שכתובה בקובץ הדרישות. בסביבות פייתון השתיים אינן תמיד אותו דבר, במיוחד כשהחבילה הגיעה כתלות של חבילה אחרת ולא הותקנה ישירות.

עברו על הקוד שמבצע בדיקות הרשאה בשירות שלכם ובדקו על מה בדיוק הוא מסתמך. אם הוא בודק את הכתובת שהאובייקט מחזיר, זה הקוד שהיה חשוף, והוא שווה קריאה נוספת גם אחרי השדרוג. השדרוג סוגר את הדרך הזאת; הוא לא הופך את הבדיקה עצמה לנכונה.

ההודעה של הפרויקט מתארת את הבדיקה שנוספה ואת ההתנהגות החדשה כשהכותרת פגומה.