פגיעות ב- KVM מאפשרת ביצוע קוד מחוץ למערכת האורחים במעבדי AMD

חוקרים מצוות Google Project Zero חשפו לפני מספר ימים בפוסט בבלוג את זה זיהו פגיעות (CVE-2021-29657) ב- KVM hypervisor (קוד פתוח פתוח מבוסס לינוקס התומך בווירטואליזציה מואצת חומרה ב- x86, ARM, PowerPC ו- S / 390) מאפשר לך למנוע בידוד של מערכת האורחים והפעל את הקוד שלך בסביבת המארח.

ההודעה מזכירה כי הבעיה מתבטא מליבת לינוקס 5.10-rc1 ל- v5.12-rc6, כלומר, מכסה רק גרעינים 5.10 ו- 5.11 (מרבית הענפים היציבים של ההפצות לא הושפעו מהבעיה). הבעיה קיימת במנגנון nested_svm_vmrun, המיושם באמצעות הרחבה AMD SVM (Secure Virtual Machine) ומאפשר הפעלה מקוננת של מערכות אורח.

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

הבאג שנדון הוקצה ל- CVE-2021-29657, משפיע על גרסאות הגרעין v5.10-rc1 ל- v5.12-rc6 ותוקן בסוף מרץ 2021. מכיוון שהבאג הפך לניצול רק ב- v5.10 והתגלה כחמש חודשים לאחר מכן, אין לפגוע ברוב פריסות ה- KVM בעולם האמיתי. אני עדיין חושב שהבעיה היא מחקר מקרה מעניין בעבודה הנדרשת לבניית בריחה אורחת-מארחת יציבה כנגד KVM ואני מקווה שמאמר זה יכול לגרום למקרה שפשרים של היפרורורור אינם רק בעיות תיאורטיות.

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

לאחר ניתוח היישום KVM המוצע, החוקריםs נתקל בשגיאה הגיונית המאפשרת את תוכן ה- MSR (רישום ספציפי למודל) של המארח להיות מושפע ממערכת האורחים, אשר באמצעותם ניתן לבצע קוד ברמת המארח.

בפרט, הפעלת פעולת VMRUN מאורח ברמה מקוננת שניה (L2 הושק מאורח אחר) מובילה לשיחה שנייה ל- nested_svm_vmrun ומשחיתת את מבנה svm-> nested.hsave, אשר מכוסה בנתונים מ- vmcb ממערכת האורחים L2 .

כתוצאה מכך נוצר מצב שברמת האורח L2 ניתן לפנות זיכרון במבנה svm-> nested.msrpm, המאחסן את ביט ה- MSR, למרות שהוא ממשיך בשימוש, ולגשת ל- MSR של המארח. סביבה.

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

בנוסף, KVM יכול לפרוק את מרבית העבודות הקשורות להדמיית המכשיר לרכיב שטח המשתמש.

הבעיה קיימת בקוד המשמש במערכות עם מעבדי AMD (מודול kvm-amd.ko) ואינו מופיע במעבדי אינטל.

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

החוקרים בנוסף לתיאור הבעיה הם גם הכינו אב-טיפוס עובד של נצל המאפשרת הפעלת מעטפת שורש מסביבת אורחים בסביבת מארח במערכת עם מעבד AMD Epyc 7351P וליבת Linux 5.10.

נצפה כי זהו האורח הראשון שמארח את הפגיעות ב- KVM hypervisor עצמו, לא קשור לבאגים ברכיבי שטח משתמש כמו QEMU. התיקון התקבל בליבה בסוף מרץ.

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


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

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

*

*

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