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

באגים של בטיחות זיכרון משפיעים לרעה על האיכות והיציבות, והם אחראים לחלק משמעותי מהקריסות שנצפו במכשירים של משתמשי הקצה. לכן, צפיפות גבוהה של באגים שקשורים לבטיחות הזיכרון קשורה ישירות לחוויית משתמש גרועה.
קוד מקומי, שנכתב בשפות לא בטוחות לזיכרון כמו C, C++ ו-Assembly, מייצג יותר מ-70% מקוד הפלטפורמה של Android, ונמצא בכ-50% מהאפליקציות בחנות Google Play.
בגלל המורכבות ההולכת וגוברת של הקוד, אם לא יטפלו בבעיה, מספר הבאגים בנושאי בטיחות בזיכרון יגדל עם הזמן. לכן, חשוב מאוד לספק לסביבה העסקית שלנו את הכלים והטכנולוגיות שיכולים לזהות ולצמצם באגים כאלה, כדי שנוכל להמשיך להצליח בטווח הארוך.
בשנים האחרונות עבדנו בשיתוף פעולה הדוק עם שותפי החומרה שלנו כדי לפתח טכנולוגיות חומרה כמו תיוג זיכרון של Arm, והוספנו את Rust לקוד הבסיסי של Android.
הטכנולוגיות האלה יקלו עלינו להגיע לבטיחות בזיכרון, ויעזרו לתעשיית התוכנה לטפל בבעיה מרכזית.
באגים של בטיחות זיכרון משפיעים לרעה על האיכות
באגים לא גלויים באבטחת הזיכרון עלולים לגרום לתוצאות לא חד-משמעיות, בהתאם למצב המערכת. ההתנהגות הבלתי צפויה הזו מובילה לקריסות ולמצב של אי-נוחות בקרב המשתמשים שלנו.
מדי יום אנחנו רואים מיליוני קריסות מקוריות במכשירים של משתמשי הקצה, ובעזרת GWP-ASan הצלחנו לזהות את רובן כבאגים של בטיחות זיכרון.
הנקודה הזו בתרשים מאשרת את הקורלציה בין האיכות לבין הצפיפות של באגים שקשורים לבטיחות זיכרון, והיא תואמת למה שאנחנו רואים אצל הקולגות שלנו ב-Chrome (ראו רשימת הבאגים החמים של GWP-ASan ב-Chrome).
באגים של בטיחות זיכרון משפיעים לרעה על האבטחה
באגים של בטיחות זיכרון הם הגורם העיקרי לפרצות האבטחה ב-Android, כבר מהגרסה הראשונה של Android.

אנחנו שמחים לדעת שזו לא בעיה רק ב-Android (ראו נתונים סטטיסטיים של Chrome ושל Microsoft), אבל אנחנו צריכים לעשות יותר כדי לשמור על בטיחות המשתמשים שלנו.
צוות Project Zero
ב-Google עוקב
אחרי נקודות חולשה למתקפות אפס ימים ששימשו במתקפות אמיתיות נגד משתמשים. אלה לא באגים היפותטיים, אלא נקודות חולשה שמשמשות באופן פעיל להתקפות על משתמשים. רוב הבאגים הם באגים של בטיחות זיכרון (זיהום זיכרון ו-use-after-free).
באגים של בטיחות זיכרון מעלים את העלויות
עדכון המכשירים לתיקוני אבטחה שומר על בטיחות המשתמשים, אבל כרוך בעלות כספית לסביבה העסקית שלנו.
הצפיפות הגבוהה של באגים שקשורים לבטיחות הזיכרון בקוד של ספקים ברמה נמוכה, שכוללים לעיתים קרובות שינויים מותאמים אישית, מגדילה באופן משמעותי את עלויות התיקון והבדיקה. עם זאת, זיהוי הבאגים האלה בשלב מוקדם במחזור הפיתוח יכול להפחית את העלויות האלה.
מחקרים מראים שזיהוי באגים בשלב מוקדם יותר יכול להפחית את העלויות פי 6. עם זאת, בהתחשב ברמת המורכבות של הסביבה העסקית שלנו, במספר הבסיסים הממוצעים של קוד שמנוהלים על ידי ספק ובמורכבות ההולכת וגוברת של התוכנות, החיסכון עשוי להיות גבוה יותר.
בטיחות בזיכרון
החל מ-Android 12, ביצענו שינויים שיטתיים כדי לצמצם את הצפיפות של באגים בנושאי בטיחות זיכרון בקוד הבסיסי של Android. אנחנו מרחיבים את הכלים לשמירה על בטיחות הזיכרון ב-Android ומציגים דרישות חדשות שמעודדות את הסביבה העסקית שלנו לטפל בקטגוריה הזו של באגים. לאורך זמן, השיפורים האלה אמורים להוביל לאיכות גבוהה יותר ולאבטחה טובה יותר למשתמשים שלנו, ולעלויות נמוכות יותר לספקים שלנו.
סביר להניח שבטיחות הזיכרון תהפוך לגורם מבדיל של איכות ואבטחה בשנים הקרובות, ו-Android מתכננת להוביל את הדרך.
דרישות לתמיכה בבטיחות הזיכרון
מסמך ההגדרה של תאימות ל-Android (CDD) ממליץ מאוד להשתמש בכלי לבדיקת בטיחות הזיכרון במהלך הפיתוח.
אנחנו עובדים בשיתוף פעולה הדוק עם הסביבה העסקית שלנו כדי להגדיל את השימוש בכלים לבטיחות זיכרון ולשלב אותם בתהליכי השילוב והבדיקה המתמשכים.
עם הזמן, אנחנו רוצים לוודא שכל מכשיר עובר בדיקה מלאה של חבילת בדיקות התאימות (CTS) באמצעות כלים לבדיקת בטיחות הזיכרון, כדי להוכיח שלא נמצאו באגים כאלה. לדוגמה, פלטפורמות Arm v9 יצטרכו לספק הפעלה של CTS עם תגיית זיכרון מופעלת, ואילו פלטפורמות Arm v8 יצטרכו לספק הפעלה של CTS באמצעות HWASAN ו-KASAN.
Rust כשפת תכנות חדשה לקוד פלטפורמה
ב-Android 12 הושק Rust כשפת פלטפורמה. Rust מספק אבטחה של זיכרון ושל חוטים ברמות ביצועים דומות ל-C/C++. אנחנו צופים ש-Rust יהיה הבחירה המועדפת ברוב הפרויקטים החדשים בקוד מקורי. עם זאת, לא ניתן לכתוב מחדש ב-Rust את כל הקוד שעלול לגרום לזיהום זיכרון, שמייצג כרגע יותר מ-70% מקוד הפלטפורמה של Android. מעכשיו והלאה, Rust ישלים את הכלים לאבטחת זיכרון.
כלים לבדיקת בטיחות בזיכרון
Android תומך במגוון רחב של כלים שיעזרו לכם לזהות באגים של בטיחות זיכרון. באיור הבא מוצגת קטגוריה של הכלים הזמינים לאבטחת הזיכרון ב-Android.

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