GWP-ASan ו-KFENCE

GWP-ASan ו-KFENCE הם כלים סטטיסטיים לזיהוי זיכרון במרחב המשתמש ובליבה, בהתאמה. כשהאפשרות הזו מופעלת, מספר קטן של הקצאות מוגנות באמצעות דפי זיכרון נוספים שמקיפים את הזיכרון שהוקצה. כך אפשר לזהות זליגות מאגרים (buffer overflows) ושימוש לאחר שחרור (use-after-frees) בעלות ביצועים זניחה. גם עם שיעור דגימה קטן להקצאות המוגנות, כשפורסים אותן בקנה מידה רחב הן יכולות לזהות באגים בטיחותיים בזיכרון בצורה יעילה. מאז ההשקה שלהם, הכלים האלה עזרו לזהות מספר רב של באגים בפלטפורמה והם הוכיחו את עצמם ככלי חשוב לשיפור היציבות והאבטחה. אנחנו ממליצים לספקים להפעיל אותם ולעקוב מקרוב אחרי הבאגים שזוהו במכשירי משתמשי הקצה.

המפתחים צריכים לבדוק אם יש קריסות על ידי בדיקה של /data/tombstones או logcat, או על ידי מעקב אחרי צינור עיבוד הנתונים של הספק DropboxManager כדי לאתר באגים של משתמשי קצה.

מידע נוסף זמין במסמכים שלנו בנושא ניפוי באגים בקוד מקורי ל-Android.

ניפוי באגים בקוד של פלטפורמת Android מקורית

GWP-ASan לזיהוי באגים של בטיחות זיכרון במרחב המשתמש

GWP-ASan הוצג ב-Android 11 להקצאות אשכול במרחב המשתמש. כש-GWP-ASan מזהה באג, הוא מתעד דוח קריסה עם Cause: [GWP-ASan]: ומפסיק את התהליך. דוחות הבאגים מכילים מידע נוסף על הקצאה ועל ביטול הקצאה, שעוזר לזהות את הגורם לבעיה.

GWP-ASan מופעל באופן אקראי בזמן ההפעלה, ב-1% מהתהליכים או מהאפליקציות במערכת, ובאפליקציות שמגדירות את הערך android:gwpAsanMode בקובץ AndroidManifest.xml.

GWP-ASan

KFENCE לאיתור באגים באבטחת הזיכרון בליבה

ב-Android 12 הושק KFENCE להקצאות של אשכול הליבה. כש-KFENCE מזהה באג, הוא מתעד דוח קריסה שמתחיל ב-BUG: KFENCE,, משבית את דפי השמירה וממשיך את הביצוע. כך מופעל מנגנון לזיהוי באגים בליבה, שמשפיע באופן מינימלי על חוויית המשתמש.

מידע נוסף על KFENCE זמין במסמכי התיעוד בכתובת https://www.kernel.org