CVE-2025-68260 תואר באופן נרחב כ-CVE הראשון שהוקצה לקוד Rust בקרנל לינוקס הראשי. הפגיעות נמצאת במנהל ההתקן Android Binder מבוסס Rust (rust_binder) ומתואר כבאג מסוג crash-class: מצב תחרות שיכול לפגוע במצביעי רשימות מקושרות פולשניות ולגרום ל-kernel oops/panic (מניעת שירות).
זה חשוב לצוותי האבטחה משתי סיבות. ראשית, באגים בקרנל שגורמים לקריסה בלבד עדיין משפיעים באופן ממשי על התפעול — במיוחד בסביבות עם זמינות גבוהה או בסביבות מרובות משתמשים. שנית, החשיפה תלויה בתצורה: מערכות לינוקס רבות לא יושפעו, אלא אם כן יישום Rust Binder מופעל ונמצא בשימוש.
תקציר מנהלים למהנדסי אבטחה
- CVE: CVE-2025-68260
- רכיב: ליבת לינוקס Rust Android Binder driver (
rust_binder), הכוללNode::releaseורשימת המוותטיפול - סוג הבאג: תנאי מירוץ + מניפולציה פולשנית ולא בטוחה ברשימה → פגיעה בציון
- השפעה: קריסת קרנל / DoS (מתואר בפומבי)
- החשיפה תלויה ב: האם Rust Binder מופעל/נבחר (לדוגמה,
ANDROID_BINDER_IPC_RUST,binder.impl) - סטטוס NVD: "ממתין לניתוח" בזמן כתיבת שורות אלה (CVSS עשוי להיות בהמתנה)
מהו CVE-2025-68260: באג במקבילות במנהל ההתקן Rust Binder
הרשומה NVD מתארת פעולת הסרה לא בטוחה ספציפית ברשימה מקושרת פולשנית. הפעולה בטוחה רק אם אף חוט אחר אינו יכול לגעת באלמנט במקביל. קודם/הבא מצביעים. הכשל מתרחש כאשר דפוס שחרור נעילה ב- Node::release חופף עם מצב לא בטוח במקביל להסיר, מה שמוביל לשחיתות ברשימת הקישורים ולהתרסקויות.
NVD כולל תסמין קריסת קרנל מייצג ("לא ניתן לטפל בבקשת דפדוף הקרנל...") הקשור למצביעי הרשימה הפגומים, בהתאם לפגיעות מסוג קריסה ולא לפגם לוגי עדין.
תיאור קונספטואלי קצר של הדפוס הבעייתי (לצורך אינטואיציה, לא כניצול) נראה כך:
// סקיצה קונספטואלית (לא קוד גרעין מלא): lock(death_list); move_all_items_to_local_list(); unlock(death_list); // איטרציה ללא הנעילה עבור פריט ב-local_list { // עיבוד פריט }
// חוט מקביל עשוי לבצע: unsafe { death_list.remove(item) } // נוגע במצביעים הקודמים/הבאים // => תחרות נתונים => פגיעה במצביעים => קריסת הקרנל
המפתח הוא אי-שינוי המקבילות: נגיעה בטוחה במצביעי רשימה פולשניים דורשת ערבויות לגישה בלעדית, וערבויות אלה נכשלות כאשר ניתן לשנות אלמנטים ברשימה במקביל במהלך מעבר ללא נעילה.
מדוע זה הפך ל"CVE הראשון של ליבת Rust"
גרג קרואה-הארטמן (מנהל היציבות) תיאר זאת בפומבי כ-CVE הראשון של הקרנל עבור קוד Rust, והדגיש כי הבעיה "רק גורמת לקריסה" ואינה מהווה דרך מוכחת לפגיעה בזיכרון שניתן לנצל לצרכים זדוניים.
מסגרת זו שימושית מבחינה תפעולית: היא מסייעת לצוותי האבטחה לסווג את הבאג כסיכון לזמינות עם חשיפה התלויה בתצורה, תוך הימנעות מהגזמה לגבי יכולת הניצול שלו.
מערכות מושפעות: ציר זמן גרסאות ומציאות תצורה
שני עובדות מהוות את הבסיס למודל הציר הזמן והחשיפה:
- מנהל ההתקן Rust Android Binder אוחד לתוך לינוקס v6.18-rc1, על פי תיעוד פרויקט Rust עבור לינוקס.
- תצורת הקרנל של Android תומכת במפורש בבחירת יישום Binder, כולל גרסת Rust. התיעוד של Kconfig מתייחס לכך.
binder.implככפתור שורת הפקודה של הקרנל המשמש לבחירת היישום וכולל אפשרויות הקובעות את ברירת המחדל.
משמעות הדבר היא שהחשיפה אינה "כל לינוקס". צי שרתים גנרי עשוי לעולם לא לאפשר את Rust Binder. אך גרעינים הממוקדים באנדרואיד, מכונות פיתוח המריצות ערימות קונטיינרים של אנדרואיד, או גרסאות מותאמות אישית המאפשרות את יישום Rust Binder, צריכים להתייחס ל-CVE-2025-68260 כאל בעיה שניתן לטפל בה.
Binder עצמו הוא מנגנון IPC בסיסי של Android, המתועד בהרחבה בחומרי הארכיטקטורה של Android.
בדיקות חשיפה מהירות (ניתנות לביקורת, ללא תוכן ניצול)
השתמש בפקודות אלה כדי לקבוע אם הסביבה שלך נכללת בהיקף.
גרסת הקרנל
uname -r
תצורת קרנל: Rust + Binder + Rust Binder
# תצורת /boot בסגנון Distro (נפוצה במערכות רבות) grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST" /boot/config-$(uname -r) 2>/dev/null
# אם /proc/config.gz מופעל zcat /proc/config.gz 2>/dev/null | grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST"
בחירת יישום Binder (גרעיני Android משתמשים לעתים קרובות ב-binder.impl)
cat /proc/cmdline | tr ' ' '\n' | grep -E '^binder\.impl='
ה binder.impl הפרמטר מתועד בקרנל Kconfig של Android כחלק מהתנהגות בחירת היישום.
ציד אותות קריסה (תסמינים בלבד)
dmesg -T | egrep -i "rust_binder|binder|Unable to handle|paging request|Oops|KASAN" | tail -n 200
אסטרטגיית תיקון: שדרג תחילה, בצע Backport רק עם CI אמיתי
הגישה הבטוחה ביותר היא לעבור לגרסת קרנל יציבה המכילה את התיקון. הסיקור הציבורי מדגיש את השדרוג לקרנלים יציבים במקום בחירה סלקטיבית של התחייבויות מבודדות, בהתאם ליציבות הקרנל ולנהלי הבדיקה.
הרשומת NVD כוללת הפניות למקורות kernel.org העוקבים אחר הקשר התיקון.
אם אתה מפעיל גרעין Android מותאם אישית ואינך יכול לשדרג באופן מיידי, הדרך ההנדסית היא בדרך כלל: לבצע backport של התיקון לסט התיקונים שאתה מתחזק ולאמת אותו בעומסי עבודה כבדים של Binder. עם זאת, עבור רוב הארגונים, הבחירה הפרקטית היא: לצרוך עדכונים של ספקים (ערוץ הפצה/OEM/GKI) ולתעד את ראיות התיקון.
שולחן מיון
| שדה | ערך |
|---|---|
| CVE | CVE-2025-68260 |
| רכיב | מנהל התקן Rust Android Binder (rust_binder), Node::release / רשימת המוות שביל |
| סוג הפגיעות | תנאי מירוץ + פגיעה לא בטוחה במצביע רשימה פולשני |
| ההשפעה הגרועה ביותר | קריסת קרנל / DoS (תיאור ציבורי) |
| החשיפה תלויה ב | Rust Binder מופעל/נבחר (ANDROID_BINDER_IPC_RUST, binder.impl) |
| העשרת NVD | "ממתין לניתוח" (ייתכן שתהליך הטיפול עדיין מתבצע) |
הקשר: CVE של הקרנל הקשורים לצורך קביעת סדרי עדיפויות
CVE-2025-68260 מתואר בפומבי כקריסה. לצורך קביעת סדרי עדיפויות, ארגונים רבים מבצעים השוואות ביחס ל-CVE של הקרנל עם השפעה ברורה יותר על הרשאות:
- CVE-2019-2215 (Android Binder UAF / EoP): NVD מתאר העלאת הרשאות באמצעות שימוש חופשי ב-Binder; Project Zero מספק ניתוח מפורט.
- CVE-2022-0847 ("צינור מלוכלך"): מעקב נרחב אחר העלאת הרשאות מקומיות; CISA פרסמה התראה.
- CVE-2024-1086 (nf_tables UAF / LPE): NVD ו-Red Hat מסכמים את הפוטנציאל של LPE משימוש לאחר שחרור ב-netfilter/nf_tables.
המסקנה המעשית: התייחסו ל-CVE-2025-68260 כאל בעיה בעדיפות גבוהה כאשר Binder/Rust Binder נמצא בשימוש פעיל והקריסות משפיעות על העסק; אחרת, אל תתנו לכותרת "CVE הראשון ב-Rust" להסיט את תשומת הלב מבעיות ליבה מסוג LPE, שהשפעתן רחבה יותר.
יישום התגובה עם Penligent
במקרה של CVE בקרנל התלוי בתצורה, החסם הוא לעתים רחוקות קריאת ההודעה — אלא יצירת תשובות ניתנות להגנה וניתנות להרחבה לשאלות "היכן אנו חשופים" ו"האם התיקון אכן יושם". Penligent יכולה לייעל מחזור זה על ידי הפיכת CVE-2025-68260 לתהליך עבודה חוזר של איסוף ראיות: איסוף גרסאות קרנל ואותות תצורה מכל הנכסים, קיבוץ מארחים לפי הפעלת Rust Binder ו binder.impl בחירה, וייצור דוח תיקון מוכן לביקורת עם הפניות תומכות. גישה זו נועדה לאימות ולסגירה, ולא לניצול.
NVD: CVE-2025-68260
https://nvd.nist.gov/vuln/detail/CVE-2025-68260
הודעה של גרג קרואה-הארטמן (מסגרת קריסה; CVE ראשון של ליבת Rust)
https://social.kernel.org/notice/B1JLrtkxEBazCPQHDM
סיקור אבטחה מקוון
https://securityonline.info/rusts-first-breach-cve-2025-68260-marks-the-first-rust-vulnerability-in-the-linux-kernel/
Rust עבור Linux: מנהל התקן Android Binder (אוחד לגרסה v6.18-rc1)
https://rust-for-linux.com/android-binder-driver
Kconfig של ליבת Android (אפשרויות Binder Rust; בחירת binder.impl)
https://android.googlesource.com/kernel/common/+/refs/tags/android15-6.6-2024-07_r44/drivers/android/Kconfig
מסמכי Android: סקירה כללית על Binder IPC
https://source.android.com/docs/core/architecture/hidl/binder-ipc
NVD: CVE-2019-2215
https://nvd.nist.gov/vuln/detail/CVE-2019-2215
פרויקט Zero RCA: CVE-2019-2215
https://googleprojectzero.github.io/0days-in-the-wild/0day-RCAs/2019/CVE-2019-2215.html
NVD: CVE-2022-0847
https://nvd.nist.gov/vuln/detail/CVE-2022-0847
התראה של CISA: צינור מלוכלך
https://www.cisa.gov/news-events/alerts/2022/03/10/dirty-pipe-privilege-escalation-vulnerability-linux
NVD: CVE-2024-1086
https://nvd.nist.gov/vuln/detail/cve-2024-1086
Red Hat: CVE-2024-1086
https://access.redhat.com/security/cve/cve-2024-1086

