ליבה מותאמת אישית של Kirisakura ל-OnePlus 8 Pro מאפשרת שלמות זרימת בקרה (CFI) לאבטחה טובה יותר

פרטים טכניים על שלמות זרימת שליטה

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

LLVMה-CFI של ה-CFI מנסה למתן את ההתקפות הללו על ידי הגבלת יעדי שיחות חוקיים וכפיית פאניקה של ליבה בעת זיהוי הפרת CFI. בדיקה מתווספת לפני כל ענף עקיף כדי לאשר שכתובת היעד מצביעה על פונקציה חוקית עם חתימה נכונה. זה מונע מסניף עקיף לקפוץ למיקום קוד שרירותי ואף מגביל את הפונקציות שניתן לקרוא. תוקף עדיין יוכל לשנות מצביע פונקציה, אם באג מאפשר גישה. אבל ה-CFI של LLVM מגביל 55% מהשיחות העקיפות לכל היותר ל-5 יעדים אפשריים ו-80% לכל היותר ל-20 יעדים. על מנת לקבוע את כל יעדי השיחות התקפים עבור כל ענף עקיף, המהדר צריך לראות את כל קוד הליבה בבת אחת.

השימוש ב-LTO (אופטימיזציה של זמן קישור) מאפשר זאת. ה-CFI של LLVM דורש שימוש ב-LTO, כאשר המהדר מייצר קוד סיביות ספציפי ל-LVM עבור כל ה-C יחידות קומפילציה, ומקשר מודע ל-LTO משתמש ב-LLVM backend כדי לשלב את ה-bitcode ולהדר אותו לתוך קוד מקורי.

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

ThinLTO כמעט והשיגה את שיפור הביצועים של LTOs. במצב ThinLTO, כמו ב-LTO רגיל, קלאנג פולט LLVM bitcode לאחר שלב ההידור. קוד הסיביות ThinLTO מתוגבר עם סיכום קומפקטי של המודול. במהלך שלב הקישור, רק הסיכומים נקראים ומתמזגים לאינדקס סיכום משולב, הכולל אינדקס של מיקומי פונקציות לייבוא ​​מאוחר יותר של פונקציות חוצות מודולים. לאחר מכן מתבצע ניתוח מהיר ויעיל של כל התוכנית על אינדקס הסיכום המשולב. ThinLTO מאפשר תהליך קישור מרובה הליכי, אשר מביא לזמן הידור מופחת.

עקב הפרעה של הפעלת תוכנית CFI בעת פגיעה במחלקות באגים מסוימות, הוא גם מסווג ככלי לאיתור באגים, כפי שהוזכר קודם לכן, כאשר נעשה בו שימוש במצב מתירני. CFI מתירני יציג הפרות CFI ביומן הליבה, מבלי לאלץ פאניקה של ליבה. ליבות 4.9 (מכשירי דור פיקסל 3) ו-4.14 (מכשירי דור פיקסל 4) היו בעלי מספר סוגי פונקציות אי-התאמות שגרמו להפרות של CFI, אשר טופלו על-ידי גוגל בסטטי תיקונים הזמינים בקרנל/הנפוץ מחזירים.

עם זאת, בשל אופי המערכת האקולוגית של אנדרואיד, סביר להניח שאי-התאמות הללו יימצאו גם בקוד ספציפי ליצרן SoC (במקרה זה, Qualcomm) או OEM (OnePlus). מספר הפרות CFI בקוד קוואלקום המובחן לגרעין 4.19 תוקנו בליבת Kirisakura עבור ה-OnePlus 8 Pro (לדוגמה: 1, 2, 3).

הפעלת הליבה ב-CFI מתירנית חשפה הפרות CFI בקוד הקשורות גם לדרייברים של OnePlus (ניתן למצוא התחייבויות רלוונטיות כאן ו כאן). ליבת Kirisakura עבור ה-OnePlus 8 Pro פועלת עם CFI נאכפת, ומגינה על המשתמשים שלה מפני סוג זה של התקפות שימוש חוזר בקוד."

קרא עוד

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