באג בליבת לינוקס אפשר למשתמש מקומי, כלומר מי שכבר יש לו חשבון על המכונה, להרחיב את ההרשאות שלו ולהגיע ל-root. הוא תוקן עוד בגרסה 2.6.36 של הליבה, ובכל זאת CISA הכניסה אותו ב-2023 לרשימת החולשות שידוע כי תוקפים מנצלים בפועל. הציון הוא 7.8 מתוך 10.
מה החולשה?
בליבת לינוקס יש מודול שמממש פרוטוקול בשם RDS, ראשי תיבות של Reliable Datagram Sockets. הוא נועד לתקשורת מהירה בין מכונות באשכולות חישוב, ורוב מי שמריץ לינוקס מעולם לא נגע בו במודע.
הפונקציה rds_page_copy_user, בקובץ net/rds/page.c, מעבירה נתונים בין תוכנית של משתמש לבין הליבה. כשתוכנית מבקשת פעולה כזאת היא מוסרת כתובת בזיכרון, והליבה אמורה לבדוק שהכתובת באמת שייכת לתוכנית ואינה מצביעה לאזור שרק לליבה מותר לגעת בו. הבדיקה הזאת לא נעשתה כראוי.
מה עושים עם זה בפועל? מריצים את קריאות המערכת הרגילות לשליחה ולקבלה של נתונים, sendmsg ו-recvmsg, עם ערכים שנבנו במיוחד, ומשכנעים את הליבה לגעת במקום שלא היה אמור להיות נגיש. מי ששולט על מה שנכתב לזיכרון הליבה שולט בסוף על המערכת כולה.
מי מושפע?
כל ליבת לינוקס בגרסה מוקדמת מ-2.6.36. הרשומה מונה את ההפצות של התקופה: Ubuntu בגרסאות 6.06, 8.04, 9.04 ו-9.10, openSUSE 11.2 ו-11.3, ו-SUSE Linux Enterprise בענפי השרת, שולחן העבודה וההרחבה לזמן אמת בגרסה 11. מופיעים שם גם Red Hat Enterprise Linux ו-VMware ESXi, שנשענים אף הם על ליבת לינוקס.
היום זאת חולשה של מערכות שנשארו מאחור. כל הפצה נתמכת מריצה ליבה חדשה בהרבה מ-2.6.36, ולכן מי שהחולשה נוגעת לו בישראל הוא בעיקר בעלים של שרתים ותיקים שאיש כבר לא מתחזק, ושל ציוד משובץ שהיצרן שלו הפסיק להוציא עדכונים לפני שנים.
ותנאי אחד חשוב: התוקף צריך כבר להיות על המכונה, עם חשבון כלשהו ועם יכולת להריץ קוד. זאת אינה חולשה שתוקפים בה מהאינטרנט.
האם מנוצלת בפועל?
כן. ב-12 במאי 2023 הכניסה סוכנות הסייבר האמריקאית CISA את החולשה לקטלוג ה-KEV שלה, רשימת החולשות שידוע כי תוקפים משתמשים בהן בפועל, עם מועד יעד לגופים הפדרליים ב-2 ביוני 2023.
הסיבה שבאג משנת 2010 עדיין מגיע לרשימה כזאת נמצאת בין המקורות של הרשומה עצמה: קוד ניצול מוכן פורסם בפומבי, גם ב-Exploit Database וגם ב-Packet Storm. תוקף שנוחת על מכונה ישנה אינו צריך לפתח כלום. הוא צריך להוריד.
מה עושים?
בדקו איזו ליבה רצה אצלכם. הפקודה uname -r מדפיסה את המספר, וכל מה ש-2.6.35 ומטה חשוף. כל ליבה מ-2.6.36 והלאה כוללת כבר את התיקון.
אם המכונה מריצה הפצה נתמכת, עדכון רגיל של ההפצה מספיק, ואחריו צריך לאתחל כדי שהליבה החדשה תיטען בפועל. אם ההפצה יצאה מתמיכה, אין עדכון להתקין והפתרון היחיד הוא מעבר לגרסה נתמכת.
ובמכונה שאי אפשר לשדרג, צמצמו את מספר מי שיכול בכלל להתחבר אליה ולהריץ עליה קוד. החולשה דורשת נוכחות מקומית, כך ששרת שרק שני אנשים נכנסים אליו חשוף פחות בהרבה משרת משותף שיש עליו חשבונות לכל המחלקה.