Rails היא מסגרת פיתוח נפוצה לאפליקציות ווב, ורכיב בשם Action View אחראי בה על בניית הדף שנשלח בחזרה לדפדפן. בגרסאות שלפני התיקון אפשר היה לשלוח כותרת HTTP אחת, בנויה במיוחד, ולגרום לאפליקציה להחזיר בתשובה את תוכנו של קובץ מהשרת. הציון 7.5, ו-CISA מסמנת את החולשה כמנוצלת בשטח.

מה החולשה?

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

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

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

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

מי מושפע?

לפי הרשומה: Rails מ-3.0.0 עד 4.2.11.1, מ-5.0.0 עד 5.0.7.2, מ-5.1.0 עד 5.1.6.2, ומ-5.2.0 עד 5.2.2.1. מצוינים שם גם מוצרים שארוזה בתוכם גרסה חשופה, ובהם CloudForms 4.6 ו-4.7 של רד האט, Software Collections, דביאן 8, Leap 15.0 ופדורה 30.

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

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

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

כן. ב-7 ביולי 2025 הוסיפה CISA את החולשה לקטלוג ה-KEV שלה, רשימת החולשות שידוע כי תוקפים משתמשים בהן בפועל, עם מועד תיקון לגופים הפדרליים ב-28 ביולי 2025.

הרשומה ב-NVD פורסמה ב-27 במרץ 2019, שש שנים קודם, וברשימת המקורות שלה מופיע גם פרסום ציבורי של כלי ניצול מאותה שנה. כלומר הדרך הייתה ידועה וזמינה מההתחלה, והכניסה לקטלוג ב-2025 מעידה בעיקר על כך שעדיין יש מערכות בטווח.

מה עושים?

עדכנו לגרסה שמעל התקרה של הקו שלכם: 4.2.11.1, 5.0.7.2, 5.1.6.2 או 5.2.2.1. הודעת השחרור של צוות Rails היא המקור הרשמי למספרים האלה.

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

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

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