SmashEx, מתקפה על Intel SGX כדי לחלץ נתונים או להפעיל קוד

חוקרים מאוניברסיטת ההגנה למדע וטכנולוגיה של צבא השחרור העממי, האוניברסיטה הלאומית של סינגפור ובית הספר הטכני הגבוה בשוויץ בציריך פיתחו שיטה חדשה לתקוף מובלעות מבודדות של אינטל SGX (תוספי Software Guard).

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

בואו נזכור את הטכנולוגיה הזו SGX הופיע על מעבדי Intel Core מהדור השישי (סקיילייק) ומציע סדרה של הוראות שמרשה ליישומים ברמת המשתמש מוקצים אזורי זיכרון פרטיים, מובלעות, שלא ניתן לקרוא או לשנות את תוכנן אפילו על ידי הקרנל והקוד המבוצעים במצבי ring0, SMM ו-VMM.

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

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

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

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

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

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

לנצל אבות טיפוס להתכונן מובלעות עם זמן ריצה מבוסס Intel SGX SDK (CVE-2021-0186) ו Microsoft OpenEnclave (CVE-2021-3376).

במקרה הראשון, הוכחה היכולת לחלץ את מפתח ה-RSA המשמש בשרת האינטרנט עבור HTTPS, ובמקרה השני, ניתן היה לקבוע את התוכן שהתקבל על ידי כלי השירות cURL הפועל בתוך המובלעת.

הפגיעות כבר תוקנה בתוכנה בגירסאות Intel SGX SDK 2.13 ו-Open Enclave 0.17.1.

מקור: https://jasonyu1996.github.io


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

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

*

*

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