Traefik יושב בכניסה לשירותים ואוכף עליהם הרשאות, ובגרסאות מסוימות אפשר לגרום לו להפסיק לאכוף אותן באמצע חיבור. בקשה שנכנסה דרך נתיב פתוח מגיעה כך אל נתיבים מוגנים על אותו שרת. הציון שקיבלה החולשה הוא 7 מתוך 10, והתיקון נמצא בגרסאות 2.11.57 ו-3.7.13.

מה החולשה?

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

ב-HTTP קיים מנגנון שמאפשר ללקוח לבקש באמצע חיבור לעבור לפרוטוקול אחר. הלקוח מציין בכותרות שהוא רוצה לשדרג ל-HTTP/2 בלי הצפנה, מה שמסומן h2c, והשרת יכול לענות שהוא מסכים.

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

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

מי מושפע?

לפי הרשומה מדובר ב-Traefik מגרסה 2.11.26 ועד 2.11.57, ומגרסה 3.4.2 ועד 3.7.13.

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

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

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

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

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

מה עושים?

עדכנו את Traefik. הגרסאות המתוקנות הן 2.11.57 בענף 2 ו-3.7.13 בענף 3.

בדקו קודם מה רץ אצלכם. אם אתם בין 2.11.26 ל-2.11.57, או בין 3.4.2 ל-3.7.13, אתם בטווח שהרשומה מתארת. בסביבת Kubernetes או Docker העדכון הוא בדרך כלל שינוי של תג התמונה בהגדרות הפריסה ואז החלפה מדורגת.

אם אי אפשר לעדכן מיד, יש שתי נקודות שבהן אפשר לשבור את השרשרת. הראשונה היא בשרת האחורי: אם הוא אינו מקבל שדרוג ל-h2c, התרחיש אינו מתחיל. השנייה היא ניקוי הכותרות Connection, Upgrade ו-HTTP2-Settings מבקשות נכנסות לפני שהן מועברות הלאה.

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