השנה היא 2025, ובזמן שצוותי האבטחה מחזקים את ההגנה שלהם, רשימות התפוצה של לינוקס קרנל רוחשות מאיום חדש. קבוצת ניתוח האיומים (TAG) של גוגל אישרה את הפיכתו של CVE-2025-38352.
זה לא באג שגרתי של פגיעה בזיכרון. זה באג מתוחכם, התלוי בתזמון. תנאי מירוץ הנמצא עמוק בתוך תת-מערכת ה-POSIX CPU timer של ליבת לינוקס. עם ציון CVSS של 7.4, זה אולי נראה בר-ניהול במבט ראשון, אך אל תתפתו מהציון. בידי ספקי תוכנות ריגול מסחריות, פגיעות זו כבר נוצלה כנשק כדי להשיג אמינות. העלאת הרשאות מקומיות (LPE) במכשירים אנדרואיד עם עדכונים מלאים, תוך עקיפת אמצעי הגנה מודרניים כמו KASLR ו-PAN.
עבור מהנדסי אבטחה מובחרים, CVE-2025-38352 מייצג את שיא הניצול של "Race-to-Use-After-Free". הוא מנצל את הפער המיקרוסקופי בין תהליך שנכנס למצב "זומבי" לבין ניקוי הטיימרים של הקרנל. מאמר זה מוותר על סיכומים ברמה גבוהה כדי לבצע ניתוח כירורגי של kernel/time/posix-cpu-timers.c, הפיזיקה של הניצול, ומדוע ניתוח זמני מבוסס בינה מלאכותית הוא הדרך היחידה לתפוס את מה שפספסו מבקרי האנוש.
הפגם הקטלני של הקרנל: ריקוד ספין-לוק שבור
כדי להבין את CVE-2025-38352, עלינו לבחון כיצד ליבת לינוקס מטפלת במקבילות במהלך סיום תהליכים. הפגיעות נובעת מהפרה של אטומיות באופן שבו הליבה מעבדת טיימרים של מעבד שפג תוקפם, בעוד שתהליך מנסה למחוק אותם במקביל.
נתיב הקוד הפגיע
הפגם טמון ב handle_posix_cpu_timers() פונקציה. פונקציה זו אחראית על איטרציה על רשימת טיימרים פעילים והפעלת אלה שתוקפם פג. חשוב לציין כי כדי לבצע איטרציה זו, עליה להחזיק את sighand->siglock.
עם זאת, לפני התיקון, הלוגיקה הכילה רצף קטלני:
- רכישת נעילה: הקרנל רוכש
sighand->siglockלעבור על רשימת הטיימרים. - הטיפה: כדי לטפל ביכולת תפוגה ספציפית (בפרט
CPUCLOCK_PERTHREAD), הקוד בקצרה משחרר את הנעילה לבצע פעולת בדיקה או תור מחדש. - השימוש: הוא רוכש מחדש את הנעילה וממשיך לבטל את ההתייחסות לאובייקט הטיימר.
חלון המירוץ
בתוך חלון מיקרוסקופי זה — שבו המנעול יורד — התוקף מכה.
תהליך מקביל (תהליך B) מוציא קריאת מערכת timer_delete(). מכיוון שהנעילה פנויה, תהליך B רוכש אותה בהצלחה, מסיר את הטיימר מהרשימה ומשחרר את הזיכרון באמצעות kfree_rcu או הקצאת slab.
כאשר Thread A (הקשר הקורבן) רוכש מחדש את הנעילה, הוא מחזיק מצביע ל- posix_cputimer מבנה שכבר לא קיים מבחינה טכנית. הוא ממשיך לכתוב לזיכרון זה (למשל, לעדכן את זמן התפוגה), מה שמפעיל שימוש לאחר שחרור (UAF) לכתוב.

הפיכת הזומבי לנשק: פרימיטיבים של ניצול
ניצול תנאי מירוץ בקרנל מושווה לעתים קרובות לזכייה בלוטו. עם זאת, מפתחי ניצול מתקדמים אינם מהמרים; הם מכירים את כללי המשחק. בהקשר של CVE-2025-38352, התוקפים מכירים את כללי המשחק באמצעות תהליכים זומבים.
1. הרחבת החלון (טכניקת "הזומביפיקציה")
חלון המירוץ הסטנדרטי עשוי להיות ברוחב של ננו-שניות ספורות בלבד. כדי להפוך את הניצול לאמין (שיעור הצלחה של 90%+), התוקפים מנצלים את מצב היציאה מהתהליך.
על ידי יצירת תהליך-בן וסיומו — אך בכוונה תחילה לא קוצר את הפירות (באמצעות waitpid) — התהליך נכנס ל EXIT_ZOMBIE מצב. במצב זה, מבנה המשימה נשאר בזיכרון, אך לוגיקת הניקוי מושהית. התוקפים גילו כי הפעלת פעולות טיימר בתהליך זומבי מכריחה את הקרנל לעבור לנתיב קוד איטי ומורכב יותר בתוך posix_cpu_timer_del, מה שמרחיב באופן מלאכותי את חלון המירוץ מננו-שניות למיקרו-שניות.
2. SLUB פנג שואי (ריסוס ערימה)
ברגע שה-UAF מופעל, הקרנל כותב נתונים לחריץ זיכרון פנוי. אם החריץ ריק, הקרנל קורס (DoS). כדי להשיג גישה ל-Root, התוקף חייב להחליף את אובייקט הטיימר הפנוי במטען.
התוקפים מנצלים את מקצה SLUB התנהגות צפויה (אחרון נכנס, ראשון יוצא).
- חינם: הפעל את המירוץ לשחרור
טיימרמבנה. - תרסיס: הציפו מיד את ערימת הקרנל באובייקטים בשליטת המשתמש באותו הגודל בדיוק (למשל, באמצעות
שלח הודעהנתונים נלווים אוkey_serialאובייקטים). - שחיתות: הקרנל, מתוך מחשבה שהוא מעדכן את הטיימר, כותב לאובייקט של התוקף. אם התוקף פיזר מבנה המכיל מצביע פונקציה (למשל,
tty_structאוfile_operations), הקרנל מחליף את המצביע הזה. - ביצוע: כאשר התוקף מפעיל את האובייקט שהותז (למשל, סגירת הקובץ), הקרנל קופץ לכתובת שהוחלפה -> שרשרת ROP -> Root.

מעבר ל-Syzkaller: מדוע פוזינג מסורתי נכשל
CVE-2025-38352 לא זוהה במשך שנים על ידי תוכנות פאזינג אוטומטיות כמו Syzkaller של גוגל. מדוע?
פוזינג מסורתי המונחה על ידי כיסוי הוא הסתברותי. הוא משגר קריאות מערכת אקראיות לקרנל בתקווה לגרום לקריסתו.
- זה לא מבין תזמון.
- זה לא מבין תלות במדינה (לדוגמה, "הליך A חייב לצאת בזמן שהליך B מוחק טיימר").
ההסתברות הסטטיסטית ש-fuzzer עיוור יפגע במצב מירוץ ספציפי זה, כאשר התהליך נמצא בדיוק זומבי המדינה, הוא נמוך באופן אסטרונומי.
הפתרון של הבינה המלאכותית: ניתוח זמני של Penligent
כישלון זה של הכלים המסורתיים מדגיש את הצורך ב ניתוח לוגי מבוסס בינה מלאכותית. זה המקום שבו Penligent.ai משנה את הפרדיגמה מ"Fuzzing" ל"Reasoning".
Penligent משתמשת בטכנולוגיה מיוחדת סוכן AI המודע לזמן מיועד לאיתור באגים במקביל:
1. זיהוי תבניות מקביליות
במקום קלט אקראי, המודל של Penligent מנתח את AST (עץ תחביר מופשט) של מקור הקרנל. הוא מזהה "צמדים מסוכנים" — קריאות מערכת המשנות את אותו משאב משותף (במקרה זה, posix_cputimer) אך עוקבים אחר נתיבי נעילה שונים. הוא סימן טיימר_מחיקה ו handle_posix_cpu_timers כמטרה בעלת סבירות גבוהה להתנגשות.
2. הרחבת חלון המירוץ באמצעות בינה מלאכותית
Penligent לא רק מבצע קריאות מערכת, אלא גם מתאם ביניהן. מתוך הכרה בצורך להרחיב את חלון המירוץ, ה-AI הסיק באופן אוטומטי את EXIT_ZOMBIE טכניקה על ידי ניתוח דוחות פגיעות "Ref-Count" קודמים. היא יצרה הוכחת היתכנות (Proof-of-Concept) שגרמה לעיכוב תוכניתי של המעבד (באמצעות sched_yield או מחסומי זיכרון נרחבים) כדי להבטיח את ההתנגשות.
עבור מהנדס האבטחה, משמעות הדבר היא ש-Penligent עובר מדיווח על "באגים פוטנציאליים" למתן פתרונות. מאומת, ניצול לרעה של פרצות אבטחה המציגים את פרופיל הסיכון האמיתי של הקוד.
תיקון וצוות כחול זיהוי
התיקון, שולב בקרנל לינוקס בסוף 2025, כולל בדיקת לוגיקה ולא רק נעילה.
התיקון:
ב-run_posix_cpu_timers(), הקרנל בודק כעת במפורש אם (tsk->exit_state). אם המשימה כבר מתה או גוססת, הוא מפסיק את עיבוד הטיימר באופן מיידי. פעולה זו מסירה למעשה את המשתנה "זומבי" מהמשוואה.
אסטרטגיות זיהוי (EDR/Syslog):
צוותי Blue Teams צריכים לחפש את האינדיקטורים הבאים לפריצה (IoC) בשרתים Linux/Android:
- תזמון תדירות גבוהה: תהליך שיוצר וממחק במהירות אלפי טיימרים POSIX בשנייה.
- שיטפונות זומבים: הצטברות יוצאת דופן של
Zתהליכים מדינתיים שנוצרים במהירות ואינם מנוצלים. - זיהום הקרנל:
dmesgיומנים המציגים "שגיאות הגנה כלליות" או "פגיעה בסלאב" ב-kmalloc-192(או גודל הלוח הספציפי עבור טיימרים בקשת שלך).
סיכום
CVE-2025-38352 משמש תזכורת חגיגית לכך שקוד ישן הוא שדה מוקשים. קוד הטיימר POSIX נכתב לפני עשרות שנים, אך הוא הכיל פגם סמוי שדרש את סביבת הזיכרון המורכבת של 2025 כדי להפוך אותו לנשק.
עבור מהנדס אבטחה מנוסה, הלקח ברור: העתיד של מחקר הפגיעות אינו קשור למציאת הצפות חיץ פשוטות. הוא קשור להבנת הממד הרביעי של הקוד—זמן. כל עוד גרעינים משתמשים במנגנוני נעילה מורכבים, תנאי מירוץ יישארו "תכשיטי הכתר" של הניצול.

