
השתלטות על חשבונות SourceHut דרך יומני build: XSS ב-ansi2html (CVE-2026-92973)
חוקר אבטחה פרסם ניתוח של פרצת XSS בספריית ansi2html, שאיתה SourceHut ממירה פלט ANSI של יומני build ל-HTML. הפרצה אפשרה להריץ JavaScript בסשן של כל מבקר ולהשתלט על החשבון, ו-builds.sr.ht נותר פגיע כמעט ארבע שנים וחצי.
חוקר אבטחה בשם Arusekk פרסם בספטמבר 2026 ניתוח של פרצה בפלטפורמת SourceHut (sr.ht), שמארחת מאגרי git, רשימות תפוצה ואינטגרציה רציפה. הפרצה קיבלה את המזהה CVE-2026-92973 והיא נמצאת בספריית ansi2html, ספריית Python שממירה רצפי escape של ANSI מהפלט במסוף ל-HTML. SourceHut משתמשת בה כדי להציג יומני build בשירות ה-CI שלה, builds.sr.ht.
מי שיכול היה להכניס טקסט ליומן build גרם להרצת JavaScript שרירותי בדפדפן של כל מי שפתח את דף היומן. הדף מכיל אסימון CSRF ואת הרשאות הסשן, ולכן התוקף פעל בשם הקורבן: שלח משימות build והגיע למפתחות פריסה, כולל אלה ש-SourceHut שומרת לאינפרה של עצמה במופע הראשי. לדברי החוקר, די היה שהקורבן יפתח את הדף בדפדפן עם JavaScript פעיל.
איך עבדה ההשתלטות
ansi2html לא רק מוסיפה צבעים, היא ממירה קישורים אוטומטיים והיפר-קישורים מסוג OSC 8 לעוגני HTML. כתובת הקישור הוכנסה למאפיין href בלי escaping תקין, ולכן רצף escape שנבנה במיוחד הצליח לצאת מהמאפיין ולהוסיף מאפיינים חדשים, למשל autofocus, tabindex ו-onfocus. קישור כזה מריץ את המטען מיד עם טעינת הדף, בלי לחיצה, וגם כתובת javascript: עבדה.
לא היה צורך בחשבון כדי להזריק את הרצף ליומן: די היה לשלוח patch לרשימת תפוצה ציבורית שבה CI פעיל, או לשלוט במשאב חיצוני שהפלט שלו מודפס ליומן. המטען עצמו נטען משרת התוקף והורץ בזמן אמת. התוצאה היא XSS שמורה בדף פופולרי, ואף אוטומטית: הקורבן הופך מיד למקור לתקיפה הבאה. בהערכת CVSS 4.0 החוקר טוען שהחומרה גבוהה או קריטית ולא בינונית, ומזכיר שמשתמשים אינם יכולים למחוק משימת build, רק להסתיר אותה.
התיקון ולוח הזמנים
החוקר דיווח על הבעיה לרשימת האבטחה של SourceHut ב-1 באוגוסט 2026, יחד עם patch מקדים. ב-4 באוגוסט אישר Drew DeVault את הפרצה ותיקן את builds.sr.ht כך שהפלט של ansi2html עובר חיטוי אוטומטי. בפרויקט pycontribs/ansi2html התיקון הסופי שוחרר בגרסה 1.9.4 ב-2 בספטמבר 2026. הגרסאות הפגיעות: ansi2html מ-1.7.0 עד 1.9.3 ו-builds.sr.ht מ-0.40.0 עד 0.105.0. Arch Linux קיבלה את הגרסה המתוקנת ב-5 בספטמבר.
חלון החשיפה היה ארוך: ansi2html חובר ל-builds.sr.ht במרץ 2019, הבאג הופיע בפרויקט המקור בספטמבר 2021, והגרסה הפגיעה נארזה ל-Alpine ועלתה למופע הראשי בפברואר 2022. builds.sr.ht נותר פגיע כמעט ארבע שנים וחצי בדיוק. החוקר מציין שבדיקה חד-פעמית של התלות לא הייתה מצילה, כי צריך לבדוק מחדש בכל עדכון גרסה.
מה זה אומר לפלטפורמות אחרות
המקרה ממחיש את הסיכון בהצגת פלט build לא מהימן כ-HTML. החוקר מציע שלוש שכבות הגנה: הקשחת Content-Security-Policy והסרת 'unsafe-inline'; חיטוי נוסף של פלט הממיר, ש-SourceHut הוסיפה אך לדבריו באופן אגרסיבי מדי, עד שהצבעים נעלמו; ושכתוב הפרסר כאוטומט בעל מצבים במקום עיבוד מחרוזות. למפעילים הוא מפרט אינדיקטורים לפשרה: לחפש ביומנים הגולמיים רצפי OSC 8 שמכילים גרש מיותר או כתובת javascript:.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.