הם זיהו באג בספריית libcue והוא משפיע ישירות על Gnome

פגיעות

אם מנוצלים, פגמים אלה יכולים לאפשר לתוקפים לקבל גישה לא מורשית למידע רגיש או לגרום לבעיות בדרך כלל

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

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

מוזכר כי חומרת הפגיעות נובעת מכך שזו מאפשר ביצוע קוד בעת עיבוד קבצי cue עוצב במיוחד. בנוסף, ספריית libcue משמשת במנוע החיפוש Tracker-miners המשמש בסביבת המשתמש של GNOME.

מאז tracker-miners אוטומטית אינדקסים קבצי מדיה חדשים בספריית הבית, לתקוף מערכות GNOME ו לגרום לקוד של התוקף להפעיל, כל מה שצריך זה עבור המשתמש פשוט הוסף קובץ שעוצב במיוחד באחת מהתיקיות הבאות ~/Downloads, ~/Music או e בתיקיית Videos, ללא צורך לפתוח אותה (לדוגמה, במקרים מסוימים, פשוט לחיצה על קישור בדפדפן).

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

אפילו יותר טוב, tracker-extract תמיד יוצר שרשור חדש כדי לסרוק את הקובץ שהורד, וגיליתי שפרסת הערימה בשדה malloc של השרשור מאוד עקבית: היא משתנה בין הפצות...

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

בדוגמה פשוטה:

TRACK 01 כותרת האודיו "Never Gonna Give You Up" ...
INDEX 01 00:00:00
כותרת אודיו של רצועה 02 "בכל פעם שאתה צריך מישהו" ...
INDEX 01 03:35:00

הפגיעות היא בטיפול בתחביר INDEX, המתרחש בעת החלפת אחת מההצהרות הללו. זה יפעיל את השגיאה:

אינדקס 4294567296 0

כדי להמיר מחרוזת למספר, משתמשים בפונקציית atoi, למשל. אם תציין את המספר 4294567296, הוא יומר ל-400000. הפגיעות נגרמת ישירות על ידי אי בדיקת הערך המתקבל כדי לוודא שהוא יכול להיות שלילי. החלק השני של הבעיה (וזו הפגיעות האמיתית) הוא ש-track_set_index לא מסומן עבור i ≥ 0:

void track_set_index(Track *track, int i, long ind) { if (i > MAXINDEX) { fprintf(stderr, "יותר מדי אינדקסים\n"); לַחֲזוֹר; } track->index[i] = ind;

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

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

ברוב ההפצות של GNOME, Tracker-Miners מופעלים כברירת מחדל והם נטענים כתלות פיזית של מנהל הקבצים של Nautilus (קבצי GNOME). מוזכר ש-tracker-miners יכולים להיות מושבתים ישירות על ידי המשתמש. אתה יכול לבדוק את הפרטים כדי להיות מסוגל להשבית Tracker-Miners ב- הקישור הבא.

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


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

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

*

*

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