שתי נקודות תורפה נמצאו ב-Snap והורשו להריץ קוד כ-root

Qualys נחשף החדשות שאני מזהה שתי נקודות תורפה (CVE-2021-44731 ו-CVE-2021-44730) בכלי השירות snap-confine, נשלח עם דגל השורש SUID ונקרא על ידי תהליך snapd כדי ליצור סביבת הפעלה עבור יישומים המופצים בחבילות snapd.

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

הפגיעות הראשונה מאפשרת התקפת מניפולציה פיזית של קישורים, אך דורש השבתת הגנת קישורים קשיחים של המערכת (על ידי הגדרת sysctl fs.protected_hardlinks ל-0).

הבעיה זה נובע מאימות שגוי של מיקום קובצי ההפעלה של כלי השירות snap-update-ns ו-snap-discard-ns שפועלים כשורש. הנתיב לקבצים אלו חושב בפונקציה sc_open_snapd_tool() בהתבסס על נתיב משלה מ-/proc/self/exe, מה שמאפשר לך ליצור קישור קשיח להגבלה בספרייה שלך ולשים את האפשרויות שלך ל-snap-update-ns ו-snap -discard-ns בספרייה זו. כאשר יופעל מקישור קשיח, snap-confine כ-root יבצע את קבצי snap-update-ns ו-snap-discard-ns שהוחלפו על ידי התוקף מהספרייה הנוכחית.

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

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

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

מצב Race מתבטא בפונקציה setup_private_mount(). נקרא במהלך הכנת מרחב השמות של נקודת ההרכבה עבור החבילה המיידית. פונקציה זו יוצרת ספרייה זמנית "/tmp/snap.$SNAP_NAME/tmp" או משתמשת בספרייה קיימת כדי לקשר אליה ולטעון ספריות עבור חבילת ה-Snap.

מכיוון ששם הספרייה הזמנית ניתן לחיזוי, תוקף יכול לשנות את תוכנו לקישור סמלי לאחר אימות הבעלים, אך לפני הקריאה למערכת ה-mount. לדוגמה, אתה יכול ליצור קישור סימול "/tmp/snap.lxd/tmp" בספריית /tmp/snap.lxd שמצביע על ספרייה שרירותית והקריאה mount() תעקוב אחר הקישור הסמלי ותעלה את הספרייה במרחב של שמות.

באופן דומה, אתה יכול להעלות את התוכן שלו ב-/var/lib, ולעקוף את /var/lib/snapd/mount/snap.snap-store.user-fstab, לארגן לטעון את ספריית /etc שלך ב-snap space name של החבילה כדי לטעון את הספרייה שלך מגישה לשורש על ידי החלפת /etc/ld.so.preload.

נצפה כי יצירת ניצול התבררה כמשימה לא טריוויאלית, מכיוון שהכלי snap-confine נכתב באמצעות טכניקות תכנות מאובטחות (snapd כתוב ב-Go, אבל C משמש ל-snap-confine), יש לו הגנה המבוססת על פרופילי AppArmor, מסנן קריאות מערכת על סמך מנגנון seccomp ומשתמש במרחב שמות mount לבידוד.

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

לבסוף, ראוי להזכיר זאתהבעיות תוקנו בעדכון חבילת snapd עבור אובונטו גרסאות 21.10, 20.04 ו-18.04.

בנוסף להפצות האחרות שעושות שימוש ב-Snap, שוחרר Snapd 2.54.3, אשר בנוסף לבעיות הנ"ל, מתקן פגיעות נוספת (CVE-2021-4120), המאפשרת, בעת התקנת חבילות פלאגין מעוצבות במיוחד, לעקוף כללי AppArmor שרירותיים ולעקוף את מגבלות הגישה שהוגדרו עבור החבילה.

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


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

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

*

*

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