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

לפני כמה ימים פורסמה ידיעה שהפגיעות זוהתה (כבר מקוטלג תחת CVE-2022-0185) וn ממשק API להקשר של מערכת הקבצים מסופק על ידי ה ליבת לינוקס מה שיכול לאפשר למשתמש מקומי לקבל הרשאות שורש במערכת.

מוזכר ש הבעיה היא שמשתמש חסר הרשאות יכול לקבל הרשאות כאלה במיכל מבודד אם תמיכה במרחבי שמות משתמשים מופעלת במערכת.

לדוגמה, מרחבי שמות משתמשים מופעלים כברירת מחדל באובונטו ובפדורה, אך אינם מופעלים בדביאן וב-RHEL (אלא אם כן נעשה שימוש בפלטפורמות בידוד מיכל). בנוסף להסלמה של הרשאות, ניתן להשתמש בפגיעות גם כדי לצאת ממיכל מבודד אם למכולה יש סמכות CAP_SYS_ADMIN.

פגיעות קיים בפונקציה legacy_parse_param() ב-VFS והוא נובע מחוסר אימות נאות של הגודל המרבי של הפרמטרים שסופקו במערכות קבצים שאינן תומכות ב-API ההקשר של מערכת הקבצים.

לאחרונה, כמה חברים בצוות CTF Crusaders of Rust שלי ואני נתקלנו בהצפה של ערימת ליבות לינוקס למשך 0 ימים. מצאנו את הבאג דרך התערבות עם syzkaller ופיתחנו אותו במהירות לניצול LPE של אובונטו. לאחר מכן כתבנו אותו מחדש כדי לברוח ולהשרש את תשתית ה-CTF של Google Kubernetes. באג זה משפיע על כל גרסאות הליבה מאז 5.1 (5.16 נמצא כעת בתהליך) והוקצו לו CVE-2022-0185. כבר דיווחנו על כך לרשימת התפוצה של לינוקס ורשימת התפוצה האבטחה, והבאג תוקן נכון ליציאת מאמר זה.

העברת פרמטר גדול מדי עלולה לגרום להצפה של המשתנה השלם המשמש לחישוב גודל הנתונים הנכתבים; לקוד יש בדיקת גלישת מאגר "if (len > PAGE_SIZE - 2 - size)", שאינה פועלת אם ערך הגודל גדול מ-4094 עקב גלישת מספרים שלמים דרך הגבול התחתון (גלישה שלמה, כאשר ממיר 4096 – 2 – 4095 ל-int לא חתום, מקבל 2147483648).

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

החל משנת 2022, חברי הצוות שלנו החליטו למצוא יום 0 בשנת 2022. לא היינו בטוחים בדיוק איך להתחיל, אבל מכיוון שלצוות שלנו הייתה רמה גבוהה של היכרות עם פגיעויות ליבת לינוקס, החלטנו פשוט לקנות כמה שרתים ייעודיים. ולהפעיל את ה-syzkaller fuzzer של גוגל. ב-6 בינואר בשעה 22:30 PST, chop0 קיבל את הדיווח הבא על כשל של KASAN ב-legacy_parse_param: slab-out-of-bounds כתוב ב-legacy_parse_param. נראה ש-syzbot מצאה את הבעיה הזו רק 6 ימים קודם לכן כשהיא מטשטשת את אנדרואיד, אבל הבעיה לא טופלה וחשבנו בתמימות שאף אחד אחר לא שם לב.

לבסוף, ראוי להזכיר שהבעיה באה לידי ביטוי מאז גרסת ליבת לינוקס 5.1 ונפתרה בעדכונים ששוחררו לפני מספר ימים בגרסאות 5.16.2, 5.15.16, 5.10.93, 5.4.173.

חוץ מזה עדכוני חבילות פגיעות כבר שוחררו סעיף רהלדביאןפדורה ו אובונטו. אמנם הפתרון עדיין לא זמין ב Arch Linuxג'נטוSUSE y openSUSE.

במקרה של אלה, מוזכר כי כפתרון אבטחה למערכות שאינן משתמשות בבידוד קונטיינר, ניתן להגדיר את הערך של sysctl "user.max_user_namespaces" ל-0:

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

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


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

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

*

*

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

  1.   גליציאנית דיג'ו

    עוד סיבה לא לגעת בהצמדה עם מקל.