מטעין דינמי , הכלול ב-OpenBSD, עשוי, בתנאים מסוימים, - יישומים עוזבים את משתנה הסביבה LD_LIBRARY_PATH ובכך מאפשרים לטעון קוד של צד שלישי בהקשר של תהליך הפועל עם הרשאות גבוהות. תיקונים שמתקנים את הפגיעות זמינים עבור מהדורות . תיקונים בינאריים () עבור פלטפורמות amd64, i386 ו-arm64 כבר נמצאות בייצור ואמורות להיות זמינות להורדה עד לפרסום הידיעה הזו.
מהות הבעיה: במהלך הפעולה, ld.so מחלץ תחילה את הערך של המשתנה LD_LIBRARY_PATH מהסביבה ובאמצעות הפונקציה _dl_split_path() הופך אותו למערך של מחרוזות - נתיבים לספריות. אם מאוחר יותר יתברר שהתהליך הנוכחי מופעל על ידי יישום SUID/SGID, אז המערך שנוצר ולמעשה, המשתנה LD_LIBRARY_PATH נמחקים. יחד עם זאת, אם _dl_split_path() נגמר בזיכרון (מה שקשה בגלל המגבלה המפורשת של 256 קילובייט על גודל משתני הסביבה, אך אפשרי תיאורטית), אז המשתנה _dl_libpath יקבל את הערך NULL, ובדיקות עוקבות של הערך של משתנה זה יאלץ לדלג על הקריאה אל _dl_unsetenv("LD_LIBRARY_PATH").
פגיעות שנמצאה על ידי מומחים , בנוסף ל בעיות. חוקרי האבטחה שזיהו את הפגיעות ציינו באיזו מהירות הבעיה נפתרה: הוכן תיקון ועדכונים שוחררו תוך שלוש שעות לאחר שפרויקט OpenBSD קיבל הודעה.
תוספת: לבעיה הוקצה מספר . נוצר ברשימת התפוצה של oss-security , כולל ניצול אב טיפוס הפועל על ארכיטקטורות OpenBSD 6.6, 6.5, 6.2 ו-6.1
amd64 ו-i386 (ניתן להתאים את הניצול לארכיטקטורות אחרות).
הבעיה ניתנת לניצול בהתקנת ברירת המחדל ומאפשרת למשתמש מקומי ללא הרשאות להפעיל קוד כ-root באמצעות החלפת ספריה בעת הפעלת כלי העזר chpass או passwd suid. כדי ליצור את תנאי הזיכרון הנמוכים הדרושים לפעולה, הגדר את מגבלת RLIMIT_DATA באמצעות setrlimit.
מקור: OpenNet.ru
