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

מה החולשה?

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

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

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

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

מי מושפע?

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

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

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

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

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

מה עושים?

1. בדקו איזו גרסת ליבה רצה אצלכם. הפקודה uname -r מחזירה אותה. השוו את המספר לגרסת התיקון בענף שלכם מתוך הרשימה שלמעלה: מי שרץ על 6.1 צריך 6.1.120 ומעלה, מי שרץ על 5.15 צריך 5.15.174 ומעלה, וכך הלאה.

2. עדכנו והפעילו מחדש. בהפצות מבוססות Debian ו-Ubuntu העדכון מגיע דרך apt update ואחריו apt full-upgrade. זו חולשה בליבה, ולכן ההפעלה מחדש היא חלק מהתיקון ולא המלצה: עד שהמכונה לא עלתה מחדש היא ממשיכה להריץ את הליבה הישנה.

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

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

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