בליבת לינוקס יש טיפול נפרד בשני דגמי שמע ותיקים בחיבור USB, Extigy ו-Mbox, שדורשים קריאה חוזרת של התצורה שלהם. הקריאה החוזרת קיבלה את מספר התצורות מההתקן עצמו, בלי לוודא שהמספר החדש נכנס בתוך המקום שהוקצה בסבב הראשון. התקן שמדווח מספר גדול יותר מוביל לגישה מחוץ לתחום, והציון הוא 7.8 מתוך 10. סוכנות הסייבר האמריקאית CISA מסמנת את החולשה כמנוצלת בפועל.

מה החולשה?

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

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

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

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

מי מושפע?

טווח הגרסאות כאן הוא הפרט המעניין. לפי הרשומה החולשה נמצאת בקוד מגרסה 2.6.12 והלאה, כלומר הבאג התגלגל בליבה קרוב לשני עשורים לפני שנסגר. התיקון נכנס ב-4.19.325, ב-5.4.287, ב-5.10.231, ב-5.15.174, ב-6.1.120, ב-6.6.64, ב-6.11.11 וב-6.12.2. Debian 11 מופיעה ברשומה בשמה.

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

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

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

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

הרשומה עצמה פורסמה ב-NVD ב-27 בדצמבר 2024. הידיעה על ניצול הגיעה כאן אחרי הפרסום ולא יחד איתו.

מה עושים?

1. בררו על איזו גרסת ליבה אתם יושבים, בפקודה uname -r, ואיזה ענף תחזוקה זה. מי שעל 4.19 צריך להגיע ל-4.19.325, מי שעל 5.10 ל-5.10.231, מי שעל 6.6 ל-6.6.64, וכן הלאה לפי הרשימה שלמעלה.

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

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

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

5. את התיקון בקוד אפשר לראות בעץ הגרסאות היציבות של הליבה, יחד עם ההסבר על ההקצאה שלא הספיקה.