מתקפה חדשה המכונה Inception יכולה לשמש כדי להדליף נתונים רגישים מכל מעבד AMD.
טייק אווי מפתח
- חוקרים מ-ETH ציריך פיתחו מתקפת ביצוע חולפת חדשה בשם Training in Transient Execution (TTE), המנצלת ביצוע ספקולטיבי כדי להדליף זיכרון ליבה ולגשת לקבצים רגישים כמו /etc/shadow בלינוקס מכונות.
- Inception, הניצול מקצה לקצה שנבנה באמצעות TTE, יכול לדלוף עד 39 בתים לשנייה ב-AMD Zen 4 מעבדים ואחזר בהצלחה סיסמאות גיבוב של חשבון משתמש המאוחסנות ב-/etc/shadow בתוך 40 דקות.
- ההתחלה שונה מהתקפות ביצוע חולפות אחרות על ידי הכנסת תחזיות חדשות למנבא הענף במהלך חלון חולף, יצירת חלונות חולפים חזקים יותר שניתן להשתמש בהם כדי להציף את מאגר ה-Return Stack ולהשיג שליטה עליו המעבד. ירידת ההשפעה של מתקפה זו היא כנראה מאתגרת.
בעקבות זנבליד, חוקרים מ-ETH ציריך תכננו סוג חדש של התקפות ביצוע חולפות, המכונה Training in Transient Execution (TTE). באמצעות TTE, החוקרים בנו ניצול מקצה לקצה בשם Inception. זה יכול לדלוף זיכרון ליבה בקצב של עד 39 בתים לשנייה ב-AMD Zen 4, והחוקרים הצליחו להדליף /etc/shadow על לינוקס מכונה תוך 40 דקות. קובץ זה מכיל סיסמאות גיבוב של חשבון משתמש והוא מוגן על ידי המערכת, נגיש רק למשתמש השורש. במילים אחרות, הניצול הזה ממש גרוע.
כיצד פועלת Inception?
כמו עם Zenbleed, הַתחָלָה (CVE-2023-20569, באמצעות מחשב מצמרר) מנצל לרעה ביצוע ספקולטיבי באופן שבו זה עובד. חיזוי ענפים וביצוע ספקולטיבי מתייחסים באופן כללי למועד שבו המחשב שלך מבצע פעולות שעדיין אינן נחוצות אך ככל הנראה יהיה צורך במחזורים הבאים. זה נעשה לעתים קרובות בזמנים שבהם למערכת שלך יש משאבים פנויים, מכיוון שהוא מאיץ את העיבוד הכולל כאשר הוראות או נתונים לא היו עדיין מוכנים עבור ה-CPU. אם העבודה שבוצעה אינה נחוצה, היא בדרך כלל נמחקת והמעבד יכול לקפוץ לאן שהוא צריך כדי לבצע את ההוראה הבאה, הנכונה. כאשר הוא עושה זאת, זה נקרא חיזוי שגוי של ענף.
עם זאת, ישנן בעיות רבות בכל הנוגע לביצוע ספקולטיבי, ופגיעויות כמו Spectre ו-Zenbleed הן כתוצאה מכך. החוקרים הללו שילבו ניצול ישן יותר בשם "פנטום" (שהשפיע על ארכיטקטורות Zen 1 ו-Zen 2) עם מתקפת ה-TTE שלהם כדי ליצור את Inception.
"התחלה" הוא התייחסות לסרט בעל אותו שם, שבו הנחת היסוד של הסרט מסתמכת על נטיעת רעיון בראשו של מישהו כשהוא חולם. במקרה זה, החוקרים מצהירים שהם שותלים "רעיון" במעבד בזמן שהוא, במובן מסוים, "חולם". זה גורם לו לבצע הוראות שגויות, מה שמאפשר ל-Inception לחטוף את זרימת הבקרה של המעבד.
BTB הוא מאגר היעד של הענף ו-RSB הוא מאגר ה-Return Stack. נלקח מהספר הלבן של Inception:
"בשלב האימון הראשון T1, התוקף מבצע סניף אימון ב-TJ, שמתנגש עם כניסת ה-BTB של מקור PHANTOMJMP PJ. השוכנת במרחב הכתובות של הליבה, PJ היא הכתובת שיוזמת את ה-PHANTOMCALL הרקורסיב. ה-VR להחזרת הקורבן מוקצה לאחר PJ בזרימת הבקרה. היעד של ה-PHANTOMJMP מוגדר למחשב, שבו יופעל ה-PHANTOMCALL הרקורסיב. בשלב האימון T2, התוקף מבצע קריאת אימון ב-TC שמתנגשת עם PC ב-BTB, שתקבע את החיזוי עבור ה-PHANTOMCALL. היעד של שיחת הדרכה זו ב- מוגדר ל-PC, ויוצר חיזוי רקורסיבי של PHANTOMCALL. לאחר ביצוע המחשב, המעבד יזריק באופן רקורסיבי תחזיות RSB לגאדג'ט G, שמיקומו מיד עוקב אחר ה-PHANTOMCALL במחשב. מכיוון שהמחשב שוכן בחלל הקרנל, ענפי ההדרכה TJ ו-TC יפעילו תקלות דפים, מהן אנו מתאוששים."
המקום שבו Inception שונה מרוב התקפות הביצוע החולפות הוא שבמהלך החלון החולף, הוא מכניס במקום תחזיות חדשות למנבא הענף. כל הכנסה יוצרת חלונות חולפים נוספים שיכולים להיות חזקים יותר מהקודמים. במקרה של פנטום (CVE-2022-23825), ניתן ליצור חלון חולף באמצעות הוראות שרירותיות. המשמעות היא שהוראות (כגון אקסקלוסיבי-או, או XOR) יכולות לשמש כהוראת שיחה וליצור חלונות חולפים נוספים. זה משמש לאחר מכן כדי להציף את מאגר החזר מחסנית.
מה אתה יכול לעשות?
אין הרבה מה שאתה יכול לעשות כרגע, ואפילו במקרה של AMD, קשה לומר מה הם באמת יכולים לעשות בנידון. כדי לצמצם את השפעתה במלואה, AMD תצטרך לשטוף את מנבא המותג תוך מעבר בין הקשרים, דבר שעלול להיות יקר להפליא בביצועים.
AMD הציעה הקלה אחרת, וזו שגורמת לכך ש-AMD בחרה בכל הענפים העקיפים לחזות בטעות בכוח למיקום שפיר. עם זאת, עד שיתפרסו תיקונים, החומרה שלך תהיה רגישה.
א עיתון אודות Inception הולך להיות מוצג ב USENIX Security 2023 וכן א עיתון לגבי ספקולציות פנטום הולכת להיות מוצגת ב MICRO 2023. אתה יכול לקרוא מאמרים אלה כדי ללמוד עוד על הניצול.