הם מצאו פגיעות ב-cgroups v1 המאפשרת פריצה ממיכל מבודד

לפני כמה ימים החדשות פורסמו נחשפו פרטים פגיעות שנמצא ביישום המנגנון הגבלת משאבים cgroup v1 בליבת לינוקס שכבר מקוטלגת תחת CVE-2022-0492.

פגיעות זו נמצאה סניתן להשתמש ב-e כדי לצאת ממיכלים מבודדים ומפורט שהבעיה קיימת מאז ליבת לינוקס 2.6.24.

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

את הקובץ release_agent משמש להגדרת התוכנית שהקרנל מפעיל כאשר תהליך מסתיים ב-cgroup. תוכנית זו פועלת כשורש עם כל ה"יכולות" במרחב השמות של השורש. רק למנהל המערכת הייתה אמורה להיות גישה לתצורת release_agent, אך למעשה, הבדיקות הוגבלו למתן גישה למשתמש השורש, מה שלא מנע את שינוי התצורה מהמכולה או על ידי משתמש השורש שאינו מנהלי (CAP_SYS_ADMIN ) .

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

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

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

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

המערכת חייבת לאפשר תמיכה במרחבי שמות משתמש (מופעל כברירת מחדל באובונטו ובפדורה, אך אינו מופעל בדביאן וב-RHEL) ויש להם גישה ל-cgroup root v1 (לדוגמה, Docker מריץ קונטיינרים ב-cgroup הבסיס של RDMA). ההתקפה אפשרית גם עם הרשאות CAP_SYS_ADMIN, ובמקרה זה לא נדרשת תמיכה במרחבי שמות משתמשים וגישה להיררכיית השורש של cgroup v1.

בנוסף לפריצה מהמיכל המבודד, הפגיעות מאפשרת גם תהליכים שהתחילו על ידי משתמש השורש ללא "יכולת" או כל משתמש בעל זכויות CAP_DAC_OVERRIDE (המתקפה דורשת גישה לקובץ /sys/fs/cgroup/*/release_agent שבבעלות root) כדי לקבל גישה לכל ה"יכולות" של המערכת.

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

יחידה 42 ממליצה למשתמשים לשדרג לגרסת ליבה קבועה. עבור אותם מכולות הפועלות, הפעל את Seccomp וודא ש-AppArmor או SELinux מופעלים. משתמשי Prisma Cloud יכולים לעיין בסעיף "Prisma Cloud Protections" כדי לראות את ההקלות שמספק Prisma Cloud.

שימו לב שלא ניתן לנצל את הפגיעות בעת שימוש במנגנוני הגנה של Seccomp, AppArmor או SELinux לבידוד מיכל נוסף, מכיוון ש-Seccomp חוסמת את קריאת המערכת unshare() ו-AppArmor ו-SELinux לא מאפשרות להרכיב cgroupfs במצב כתיבה.

לבסוף, ראוי להזכיר שזה תוקן בגרסאות ליבה 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 ו-4.9.301. אתה יכול לעקוב אחר שחרור עדכוני החבילות בהפצות בדפים אלה: דביאןSUSEאובונטורהלפדורהג'נטוArch Linux.

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


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

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

*

*

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