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

מה החולשה?

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

הפקודה המדוברת היא idp-add, שמגדירה ספק זהויות חיצוני. שניים מהערכים שהיא מקבלת מהמשתמש, אלה שמועברים בדגלים organization ו-base-url, אינם עוברים בדיקה מספקת ומגיעים אל קריאה כזאת. הרשומה מציינת שההרצה מוגבלת, כלומר אין כאן חופש מלא לכתוב תוכנית, וגם בתוך הגבולות האלה אפשר להוציא מהשרת דברים שלא נועדו לצאת.

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

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

מי מושפע?

התקנות של FreeIPA שבהן קיימת הפקודה idp-add. הרשומה אינה נוקבת בגרסאות ואינה מונה חבילות, והיא מפנה אל רשומת האבטחה של רד האט ואל דיווח הבאג, ושם מתפרסמות החבילות המתוקנות לכל הפצה.

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

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

האם מנוצלת בפועל?

לא, למיטב הידוע. סוכנות הסייבר האמריקאית CISA לא הכניסה את החולשה לקטלוג ה-KEV שלה, הרשימה שמאגדת חולשות שתוקפים כבר השתמשו בהן בפועל.

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

מה עושים?

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

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

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