sudo היא הפקודה שדרכה משתמשים בלינוקס וב-Unix מריצים פעולות בהרשאות מנהל, והיא נמצאת כמעט בכל התקנה כזאת. בגרסאות שלפני 1.9.5p2 היה בה באג שאפשר למשתמש מקומי להסלים את עצמו ל-root, החשבון שהכול מותר לו. הציון שהחולשה קיבלה הוא 7.8, והיא נמצאת בקטלוג החולשות המנוצלות בפועל.

מה החולשה?

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

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

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

מי מושפע?

התקנות sudo בטווח 1.8.2 עד 1.8.32 ובטווח 1.9.0 עד 1.9.5, כולל 1.9.5 עצמה. התיקון נמצא בגרסה 1.9.5p2.

החולשה אינה עוצרת בשרתי לינוקס הרגילים. ברשומה מופיעים גם מוצרים סגורים שבתוכם ארוזה גרסת sudo חשופה, בהם McAfee Web Gateway בגרסאות 8.2.17, 9.2.8 ו-10.0.4, וכן Oracle Communications Performance Intelligence Center ו-Fedora בגרסאות 32 ו-33. זה החלק שנוטים לפספס: כשרכיב תשתית נפוץ מתגלה כחשוף, הוא חשוף גם בתוך מוצרים שאיש אינו חושב עליהם כעל מערכת לינוקס שצריך לעדכן.

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

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

כן. ב-6 באפריל 2022 נוספה החולשה לקטלוג ה-KEV של סוכנות הסייבר האמריקאית CISA, רשימת החולשות שידוע כי תוקפים משתמשים בהן בפועל, עם מועד תיקון לגופים הפדרליים ב-27 באפריל.

הרשומה הפומבית נפתחה הרבה קודם, ב-26 בינואר 2021, יותר משנה לפני הכניסה לקטלוג. בין המקורות שמצורפים לה יש דיון ברשימת התפוצה oss-security של openwall, המקום שבו חולשות בתוכנת קוד פתוח נדונות בגלוי, וכן שלושה עדכוני אבטחה תקופתיים של Oracle שכללו את התיקון למוצרים שלה. הפרטים היו זמינים לכל מי שרצה אותם, לתוקפים ולמגינים כאחד.

מה עושים?

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

עדכנו דרך מנהל החבילות של ההפצה: ב-Debian וב-Ubuntu עם sudo apt update ואחריה sudo apt install --only-upgrade sudo, ובהפצות ממשפחת Red Hat ו-Fedora עם sudo dnf update sudo.

ואת החלק הזה קל לשכוח. מוצרים ארוזים שמריצים sudo בתוכם מתעדכנים רק דרך היצרן שלהם ולא דרך מנהל החבילות שלכם. אם אתם מפעילים McAfee Web Gateway או Oracle Communications Performance Intelligence Center בגרסאות שמופיעות למעלה, חפשו את עדכון האבטחה של אותו מוצר. הקישורים לעדכוני Oracle נמצאים במידע הטכני בתחתית הדף.

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