פגיעות בליבה מאפשרת הסלמה של הרשאות באמצעות מניפולציה בספריות

פגיעות מערכתית

לאחרונה חוקרי אבטחה של קוואלי (חברת אבטחה, תאימות ושירותים קשורים בענן) פרסמו פרטים על פגיעות מה הם גילו ומה הם משפיעים על ליבת לינוקס.

CVE-2021-33909 משפיע על הליבה ומאפשר למשתמש מקומי להשיג ביצוע קוד ולהסביר הרשאות על ידי מניפולציה בספריות מקוננות מאוד.

הפגיעות נובעת מחוסר אימות של התוצאה של המרת size_t לסוג int לפני ביצוע פעולות בקוד seq_file, שיוצר קבצים מתוך רצף רשומות. חוסר אימות יכול לגרום לכתיבה לאזור שמחוץ לגבולות החיץ בעת יצירה, הרכבה ושחרור של מבנה ספריות עם רמת קינון גבוהה מאוד (גודל נתיב גדול מ- 1GB).

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

כתוצאה מכך, תוקף יכול לקבל מחרוזת של 10 בתים "// נמחק" עם קיזוז של "- 2 GB - 10 בתים", המצביע על האזור מיד לפני המאגר שהוקצה.

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

ניצול מוצלח של פגיעות זו מאפשר לכל משתמש חסר הרשאות להשיג הרשאות שורש על המארח הפגיע. חוקרי אבטחה של Qualys הצליחו לאמת באופן עצמאי את הפגיעות, לפתח ניצול ולקבל הרשאות שורש מלאות בהתקנות ברירת מחדל של אובונטו 20.04, אובונטו 20.10, אובונטו 21.04, דביאן 11 ופדורה 34 תחנת העבודה. הפצות לינוקס אחרות עשויות להיות פגיעות וככל הנראה ניתנות לניצול.

עבודת הניצול מסתכמת ביצירת היררכיה של כמיליון ספריות מקונן באמצעות שיחת mkdir () כדי להשיג גודל נתיב קובץ גדול מ- 1GB.

ספרייה זו מותקנת בכריכת רכיבה במרחב שמות משתמשים נפרד, ולאחר מכן מופעלת הפונקציה rmdir () כדי להסיר אותה. במקביל, נוצר חוט שמטען תוכנית eBPF קטנה, שתלויה בשלב לאחר אימות ה- Pseudocode של eBPF, אך לפני אוסף ה- JIT שלה.

במרחב שמות זיהוי המשתמש הבלתי-מורשה, הקובץ / proc / self / mountinfo נפתח וקורא את נתיב הספריה הארוך המותקן עם bind-mount, וכתוצאה מכך השורה "// נמחקה" נכתבת באזור לפני תחילת המאגר. המיקום לכתיבת השורה נבחר בצורה שתדרוס את ההוראה בתוכנית eBPF שכבר נבדקה אך טרם הורכבה.

יתר על כן, ברמת התוכנית eBPF, כתיבה בלתי מבוקרת מתוך המאגר הופכת ליכולת קריאה / כתיבה נשלט במבני גרעין אחרים על ידי מניפולציה של מבני btf ו- map_push_elem.

לאחר מכן הנצל ממקם את מאגר modprobe_path [] בזיכרון הליבה ומחליף בתוכו את הנתיב "/ sbin / modprobe", ומאפשר הפעלת כל קובץ הפעלה כשורש אם מתבצעת שיחת request_module (), שמבוצעת למשל בעת יצירת שקע netlink ...

החוקרים סיפקו כמה פתרונות היעילים רק לניצול ספציפי, אך הם אינם פותרים את הבעיה עצמה.

ככזה מומלץ להגדיר את הפרמטר "/ proc / sys / kernel / unprivileged_userns_clone" ל 0 כדי להשבית את הרכבת הספריות במרחב שמות משתמש נפרד ו- "/ proc sys / kernel / unprivileged_bpf_disabled" ל -1 כדי להשבית את טעינת תוכניות eBPF לתוך הגרעין.

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

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


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי על הנתונים: AB Internet Networks 2008 SL
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.