Pack2TheRoot (CVE-2026-41651): פגם ב-PackageKit שפוגע בלינוקס

נקודות מפתח:
  • הכשל מבוסס על מצב מרוץ (TOCTOU) בתוך ניהול עסקאות D-Bus, תוך עקיפת הרשאת polkit.
  • זה משפיע ישירות על הפצות פופולריות כמו אובונטו, דביאן, פדורה ורוקי לינוקס בהתקנות ברירת המחדל שלהן.
  • תוקף יכול לדרוס את הדגלים של עסקה מאובטחת על ידי שליחת בקשה שנייה לפני שהמתזמן מתחיל את הפעולה.
  • הפגיעות תוקנה ב-PackageKit 1.3.5, וישנה גישה זמנית להפחתת הסיכון על ידי יצירת כללים מותאמים אישית ב-polkit.

חבילת שורש

לפני כמה ימים פורסם מידע על פגיעות קריטית חדשה שמשפיע על סביבות לינוקס הנקראות "Pack2TheRoot". מקוטלג תחת CVE-2026-41651פגם זה משפיע על PackageKit (כלי שפועל כשכבת הפשטה של ​​D-Bus כדי לאחד את ניהול החבילות על פני מספר הפצות)

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

Pack2TheRoot: פגיעות PackageKit מעניקה גישת מנהל מערכת בלינוקס

El גילוי Pack2TheRoot היה תוצאה של חקירה בראשות הצוות האדום של דויטשה טלקום, אשר הם השתמשו במודל הבינה המלאכותית של קלוד אופוס כדי להנחות את הניתוח שלהם של וקטורי הסלמה מקומיים של הרשאות.

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

המכניקה של ההתקפה

השורש של ה- הפגיעות טמונה במצב הקריירה (סוג TOCTOU: מזמן בדיקה לזמן שימוש) דנטרו ניהול עסקאות תהליכי רקע (דמון) של PackageKitPackageKit, הפועל כמשתמש הבסיס, מאציל הרשאות למערכת polkit. כאשר לקוח מבקש להתקין חבילה, למשל באמצעות שיטת InstallFiles, הוא משדר קבוצת דגלים המכתיבים את התנהגות הטרנזקציה.

דגלים ספציפיים, כגון SIMULATE או ONLY_DOWNLOAD, מורים ל-PackageKit לדלג על הרשאת polkit. מכיוון שהן מייצגות פעולות בטוחות שבתיאוריה, אינן משנות את מצב המערכת. הכשל מופעל מכיוון שמטפל הטרנזקציות דורס אינדיקטורים אלה נשמרים במטמון ללא תנאי עם כל קריאה חדשה, מבלי לוודא האם העסקה כבר אושרה או נמצאת בתהליך ביצוע.

pack2theroot-poc2

Un תוקף יכול ליזום עסקה באמצעות אינדיקטורים "בטוחים" (ובכך עוקפים את אישורו של פולקיט) ואלפיות שנייה לאחר מכן, לשלוח בקשת D-Bus שנייה עבור אותה עסקה, אך הפעם עם דגלים זדוניים המפקחים על התקנה בפועל. עקב ארכיטקטורת עדיפות לולאת האירועים של GLib (שם הודעות D-Bus מעובדות לפני קריאות חוזרות במצב סרק), הבקשה השנייה דורסת את הפרמטרים רגע לפני שהמתזמן מתחיל את הפעולה.

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

פתרונות וטיפול בבעיות

יש לציין כי ה הפגיעות תוקנה בגרסה 1.3.5 של PackageKitלכן, המפתחים קוראים למנהלי המערכת לבדוק אם המערכות שלהם פגיעות על ידי בדיקת סטטוס השירות באמצעות פקודות כגון systemctl status packagekit או על ידי ניטור פעילות באמצעות pkmon.

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

זה הכלל דוחה באופן מיידי ובשקט פעולות התקנה של PackageKit. עבור כל משתמש שאינו root, פעולה זו מונעת את פתיחת חלון תנאי המרוץ. חשוב לציין שלמרות שהניצול מהיר ושקט, הוא משאיר עקבה ברורה ביומני המערכת: לאחר ניצול מוצלח, הדמון PackageKit קורס עקב כשל בקביעה (assertion failed: (!transaction->priv->emitted_finished)). למרות ש-systemd מפעיל מחדש את השירות, ומונע התקפת מניעת שירות, נוכחות הודעה זו ב-journalctl היא אינדיקציה חזקה לכך שהמערכת נפגעה.

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


הוסף כמקור מועדף