הם זיהו פגיעות ב-firejail שאפשרה גישת שורש למערכת

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

Firejail משתמש במנגנון מרחבי השמות, AppArmor וסינון שיחות מערכת (seccomp-bpf) בלינוקס לצורך בידוד, אך דורש הרשאות מוגברות כדי להגדיר מהדורה מבודדת, אותה היא משיגה על ידי קשירה לכלי השירות suid root flag או הפעלה עם sudo.

הפגיעות נובעת משגיאה בלוגיקה של אפשרות "–join=". », מיועד להתחבר לסביבה מבודדת שכבר פועלת (בדומה לפקודת הכניסה לסביבת ארגז חול) עם הסביבה המוגדרת על ידי מזהה התהליך שפועל בה. בשלב שלפני ההשקה, Firejail מזהה את ההרשאות של התהליך שצוין ומחיל אותן על התהליך החדש שמצטרף לסביבה עם אפשרות "-join".

לפני החיבור, בודק אם התהליך שצוין פועל בסביבת firejail. בדיקה זו מעריכה את קיומו של קובץ /run/firejail/mnt/join. כדי לנצל את הפגיעות, תוקף יכול לדמות סביבת אש פיקטיבית לא מבודדת באמצעות מרחב השמות של mount ולאחר מכן התחברות אליו באמצעות האפשרות "--join".

אם התצורה לא מאפשרת את המצב של איסור קבלת הרשאות נוספות בתהליכים חדשים (prctl NO_NEW_PRIVS), firejail יחבר את המשתמש לסביבה פיקטיבית ותנסה להחיל את תצורת מרחב שמות המשתמש של מזהי המשתמש (משתמש מרחב שמות) של תהליך הפתיחה ( PID 1).

רוב ההיגיון מאחורי פונקציית הצטרפות נמצא בקוד המקור מהקובץ `src/firejail/join.c`. חלקים קריטיים של הקוד מבוצעים עם הרשאות מוגברות (UID 0 יעיל). המזהה של התהליך עבר כפקודה ארגומנט הקו נבדק כדי לקבוע אם הוא rמיכל ולקבוע כמה מהמאפיינים שלו כי זה חל גם על תהליך הכניסה החדש.

הקריטריונים העיקריים להחלטה אם להצטרף לתהליך היעד מצליח היא נוכחות של קובץ במרחב השמות של ה-mount של היעד, התהליך נמצא ב-/run/firejail/mnt/join. אימות זה נעשה ב-fהפונקציה `is_ready_for_join()`. הקובץ נפתח באמצעות lהדגלים `O_RDONLY|O_CLOEXEC` ותוצאת המעקב `fstat()` צריכים עומדים בדרישות הבאות:

- הקובץ חייב להיות קובץ רגיל.
- הקובץ חייב להיות בבעלות userid 0 (כפי שניתן לראות מהמשתמש הראשוני
מרחב שמות).
- הקובץ חייב להיות בגודל של בייט אחד.

כתוצאה מכך, התהליך המחובר באמצעות "firejail --join" יסתיים במרחב השמות מזהה המשתמש המקורי של המשתמש עם הרשאות ללא שינוי, אבל במרחב נקודת התקנה שונה, נשלט לחלוטין על ידי התוקף.

המעטפת שהתקבלה "הצטרפה" תופיע כעת על המשתמש הראשוני
עם זאת, מרחב שמות, עדיין שומר על הרשאות המשתמש הרגילות המקוריות מרחב השמות של ה-mount יהיה זה שנשלט על ידי התוקף. כפי ש
תצורת nonnewprivs לא הוחלה, התוקף יכול כעת
הפעל תוכניות setuid-root בתוך מרחב השמות של mount זה

בפרט, תוקף יכול להריץ תוכניות setuid-root במרחב של נקודת הטעינה שהוא יצר, מה שמאפשר לו, למשל, לשנות את תצורת /etc/sudoers או פרמטרי PAM בהיררכיית הקבצים שלו ולהשיג את היכולת להריץ פקודות בתור root באמצעות sudo או כלי השירות שלה.

לבסוף, ראוי להזכיר שפותח ניצול פונקציונלי, שנבדק על גרסאות עדכניות של openSUSE, Debian, Arch, Gentoo ו-Fedora עם כלי השירות Firejail מותקן.

הבעיה תוקנה בגירסת Firejail 0.9.70. כתיקון אבטחה, אתה יכול להגדיר את התצורה (/etc/firejail/firejail.config) ל-"no join" ו-"force-nonewprivs yes".

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


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

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

*

*

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