לשם השוואה, ניצול ה-BootROM הקודם, checkm8, שהתגלה ב-2019, השפיע על טווח הדגמים A5–A11 . כעת usbliter8 מרחיב את הבעיה לדור הבא. מעבד A11 אינו פגיע מכיוון שהדרייבר שלו מאפס את מצביע ה-DMA ידנית לאחר כל חבילה
. גם שבבי A14 ומעלה מוגנים, כי הם מגדירים נכון את הגנת הזיכרון DART ב-SecureROM
.
חוסר התאמה במצביע הטבעת: הבקר שומר עד שלוש חבילות Setup רצופות במאגר DMA. לאחר כל כתיבה, הוא מגדיל מצביע חומרה לפי גודל הנתונים. לאחר החבילה השלישית, הוא מאפס על ידי הקטנת המצביע ב-24 בתים קבועים .
טריק חבילה קטנה: הבקר מקבל חבילות קטנות מ-8 בתים, אך תמיד שומר אותן בנתחים של 4 בתים. כאשר מתקבלת חבילה קטנה, הגדלת המצביע (הנתונים שנכתבו בפועל) אינה תואמת להקטנה הקבועה של 24 בתים, מה שיוצר חסר של 12 בתים (buffer underflow) – המצביע למעשה הולך אחורה בזיכרון .
כתיבה לזיכרון: זה מאפשר לתוקף לכתוב לאזורי SRAM שאמורים להיות חסומים במהלך האתחול, כולל נתוני מחסנית ומטא-נתונים של ערימה (heap) .
ביצוע קוד: ב-A12, התוקף כותב על אוגר קישור (LR) שמור על מחסנית משימת ה-USB כדי להשיג שליטה ישירה על מונה הפקודות (PC). ב-A13, קודי אימות מצביע (PAC) מסבכים את התהליך, והתוקף נדרש לבצע מספר צעדים מורכבים כדי לעקוף את ההגנות .
ה-BootROM (SecureROM) הוא הקוד הראשון שהשבב מריץ בעת ההפעלה. הוא צרוב בזיכרון לקריאה בלבד (ROM) במהלך ייצור השבב ואינו בר שינוי לאחר שהמכשיר עוזב את המפעל . מכיוון שהסיבה היא באג בחומרה של בקר ה-USB – לא באג בתוכנה – אפל לא יכולה לתקן אותו באמצעות עדכון קושחה או מערכת הפעלה
. הפיתרון היחיד היעיל הוא מעבר לחומרה חדשה יותר (A14 ואילך)
.
הניצול דורש גישה פיזית למכשיר באמצעות כבל USB בזמן שהוא במצב DFU (Device Firmware Update) . מכאן שמדובר באיום מוגבל יחסית למשתמש הממוצע, אבל פגיעות משמעותית עבור משתמשים החוששים מגניבת מכשיר או גישה לא מורשית של צד שלישי. לאחר הניצול, התוקף יכול להוריד באופן זמני את רמת האבטחה, להריץ תוכנה לא חתומה, ולסמן את המכשיר בסימן "PWND"
. הפגיעות אינה פוגעת ישירות ב-Secure Enclave, אך היא מורידה משמעותית את הרף להתקפה עליו
.
Comments
0 comments