ב-TeamCity של JetBrains היה אפשר לשתול קוד בדף הסקירה הקלאסי של פרויקט, כך שהוא ירוץ בדפדפן של כל מי שייכנס לדף אחר כך. הציון הוא 8.0 מתוך 10, גבוה למה שנחשב בדרך כלל חולשה בדפדפן, והגרסאות המתוקנות הן 2025.11.8, 2026.1.4 ו-2026.2.
מה החולשה?
דף אינטרנט מורכב משני דברים שמגיעים באותו מקום: תוכן שנועד להיקרא, וקוד שנועד לרוץ. כשמשתמש מקליד תוכן והמערכת מציגה אותו אחר כך בדף בלי לנטרל אותו, אפשר להקליד במקום תוכן את מה שהדפדפן יזהה כקוד. הדפדפן של מי שפותח את הדף ירוץ אותו, ומבחינתו הקוד הגיע מהאתר עצמו ולכן הוא מקבל את כל מה שלאתר הזה מותר.
כשהתוכן הזה נשמר בשרת ומוצג מחדש לכל מי שנכנס, ולא רק למי שנפל על קישור מעוצב, קוראים לזה XSS מאוחסן. זה ההבדל המעשי בין מתקפה שצריך לשלוח למישהו ובין מלכודת שמחכה בדף שאנשים נכנסים אליו בלי קשר.
הרשומה מצביעה על מקום מסוים, דף הסקירה הקלאסי של פרויקט, ולא על כל ממשק המוצר.
מה שדוחף את הציון למעלה הוא שני סימונים בדירוג. הראשון הוא שינוי היקף, כלומר הפגיעה אינה נעצרת ברכיב שבו נמצאה החולשה. השני הוא פגיעה גבוהה בסודיות, בשלמות ובזמינות, ולא נזק מקומי לדף. מצד שני הדירוג דורש גם הרשאה מסוימת במערכת כדי לשתול את התוכן, גם שמישהו ייכנס לדף, וגם תנאים שיתיישרו.
והנה הנקודה שמחברת את שני הצדדים: מי שפותח דף סקירה של פרויקט בשרת בנייה הוא בדרך כלל מפתח או מנהל, וקוד שרץ בדפדפן שלו פועל בתוך החיבור הפעיל שלו ועם ההרשאות שיש לו.
מי מושפע?
לפי הרשומה, כל גרסה של TeamCity שמוקדמת מ-2025.11.8, וכל גרסה בקו 2026.1 שמוקדמת מ-2026.1.4. גם כאן 2026.2 מופיעה כגרסה שהבעיה אינה קיימת בה.
מכיוון שהחולשה דורשת הרשאה לשתול תוכן, החשיפה האמיתית תלויה בשאלה מי יכול לערוך תוכן של פרויקטים אצלכם. בשרת שמשרת צוות קטן ומוכר זה אומר דבר אחד, ובשרת שיש בו עשרות משתמשים, קבלנים או לקוחות עם גישה, זה אומר דבר אחר לגמרי.
האם מנוצלת בפועל?
אין דיווח מאומת על ניצול, והחולשה אינה בקטלוג ה-KEV שמנהלת CISA, הרשימה של חולשות שתועד לגביהן שימוש בידי תוקפים. הרשומה היא מ-15 באוקטובר 2026, כלומר טרייה, ולכן אין להסיק מההיעדר יותר ממה שהוא אומר.
מה עושים?
1. זהו את הגרסה שרצה אצלכם במסך הניהול של השרת, והשוו לטווחים שלמעלה.
2. התקינו את הגרסה המתוקנת: 2025.11.8, 2026.1.4 או 2026.2, לפי הקו שאתם עליו. הפרטים מתפרסמים בדף התיקונים של JetBrains.
3. במקביל, עברו על רשימת מי שיכול לערוך תוכן של פרויקטים. ההרשאה הזאת היא התנאי שמאפשר לשתול את הקוד מראש, ובשרתים רבים היא רחבה יותר ממה שמישהו החליט במכוון.
4. אחרי העדכון, סיימו את ההתחברויות הפעילות במערכת וכפו התחברות מחדש. קוד שרץ בדפדפן של משתמש מחובר יכול היה לקחת את מה שמחזיק את החיבור שלו, והעדכון אינו מבטל חיבור שנפתח לפניו.