החלף פגיעות של ביצוע ספקולטיבי חדש

SWAPGS-exploit-2

ل חוקרי Bitdefender זיהו פגיעות חדשה במנגנון לביצוע הוראות ספקולטיביות במעבדים מודרניים, שקיבל את השם SWAPGS, תואם לשם הוראת המעבד הגורם לבעיה.

פגיעות מאפשר לתוקף חסר זכות לקבוע את התוכן של אזורי זיכרון הליבה או הפעלת מכונות וירטואליות. הבעיה אושרה במעבדי אינטל (x86_64) ומשפיעה חלקית על מעבדי AMD שעבורם וקטור ההתקפה העיקרי אינו מופיע.

שיטות האנטי-פגיעות של Specter ו- Meltdown שהוטמעו בעבר אינן מגנות מפני התקפות SWAPGS באמצעות מעבדי אינטל, אך פתרונות עבור לינוקס, ChromeOS, אנדרואיד ו- Windows כבר הוצעו.

הפגיעות שייכת למחלקת Spectre v1 ומבוסס על הרעיון של אחזור נתונים ממטמון המעבד שנותר לאחר ביצוע ההוראות הספקולטיביות.

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

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

אודות SWAPGS

המוזרות של המתקפה החדשה היא שימוש בדליפה שמתעוררת במהלך הביצוע הספקולטיבי של הוראת SWAPGS, המשמש במערכות הפעלה להחלפת ערך הרישום של GS כאשר השליטה מועברת ממרחב המשתמש לליבת מערכת ההפעלה (ערך GS המשמש במרחב המשתמש מוחלף בערך המשמש בפעולות הליבה).

ליבת לינוקס בחנות GS מצביעת per_cpu, המשמש לגישה לנתוני הליבה, ו- מצביע על TLS (Thread Storage Storage) בשטח המשתמש.

כדי לא לכלול קריאה כפולה של הוראת ה- SWAPGS לאחר גישה חוזרת של הליבה ממרחב הליבה או בעת ביצוע קוד שאינו דורש החלפת רישום GS, מבצעים בדיקה ומעבר מותנה לפני ההוראה.

מנגנון הביצוע הספקולטיבי קודם לביצוע הקוד עם הוראות SWAPGS, מבלי להמתין לתוצאת האימות, ואם הענף שנבחר לא אושר, הוא זורק את התוצאה.

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

החוקרים הציעו שני תרחישי תקיפה עבורם הוכנו אבי טיפוס לנצל.

  • התרחיש הראשון מבוסס על המצב בו הוראת SWAPGS אינה מתבצעת באופן ספקולטיבי, אם כי היא משמשת לביצוע בפועל, והתרחיש השני הוא ההפך, כאשר ההוראה SWAPGS מבוצעת באופן ספקולטיבי, אם כי היא ממש לא אמורה להיות.
  • לכל תרחיש קיימות שתי אפשרויות תפעוליות: התוקף יכול לקבוע את הערך בכתובת ספציפית באזור הליבה, והתוקף יכול לחפש ערך ספציפי בכתובות אקראיות בליבה.

הפיתרון דורש התקנת עדכון ליבה הן בסביבות המארח והן בסביבות האורח, ואחריו אתחול מחדש של המערכת. כדי להשבית את ההגנה ב- Linux, באפשרותך להשתמש באפשרות "nospectre_v1", שמבטלת גם את האמצעים לחסימת הפגיעות של SWAPGS.

הפתרון זמין כתיקון עבור ליבת לינוקס, שכבר נכלל בגרסאות 4.19.65, 5.2.7, 4.14.137, 4.9.188 ו- 4.4.188, ואילו עבור הפצות לינוקס השונות התיקונים הרלוונטיים יגיעו בתקופה זו ובשבוע שלאחר מכן.


היה הראשון להגיב

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

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

*

*

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