בטיחות זיכרון

חוסר בטיחות בזיכרון

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

באגי בטיחות זיכרון משפיעים על חווית המשתמש, עלויות ואבטחה.
איור 1 : באגי בטיחות בזיכרון והשפעתם השלילית על האיכות, האבטחה והעלויות

באגי בטיחות זיכרון משפיעים לרעה על האיכות והיציבות ומהווים חלק ניכר מהקריסות שנצפו במכשירי משתמש קצה. לכן צפיפות גבוהה של באגי בטיחות בזיכרון מתאמת ישירות לחוויית משתמש ירודה.
קוד מקורי, שנכתב בשפות לא בטוחות בזיכרון כמו C, C++ ו-Assembly מייצגים למעלה מ-70% מקוד פלטפורמת אנדרואיד וקיים בכ-50% מהאפליקציות של חנות Play.
בהתחשב במורכבות ההולכת וגוברת של הקוד, אם יישארו ללא השגחה, באגי בטיחות בזיכרון הולכים לגדול עם הזמן. לכן, לספק למערכת האקולוגית שלנו את הכלים והטכנולוגיות שיכולים לזהות ולצמצם באגים כאלה הוא קריטי להצלחתנו בטווח הארוך.
במהלך השנים האחרונות, עבדנו בשיתוף פעולה הדוק עם שותפי החומרה שלנו לפיתוח טכנולוגיות חומרה כגון Arm Memory Tagging והכנסנו את Rust בבסיס הקוד של אנדרואיד.
טכנולוגיות אלו הולכות להאיץ את דרכנו לבטיחות זיכרון והולכות לעזור לתעשיית התוכנה הרחבה יותר להתמודד עם תחום בעיה מרכזי.

באגי בטיחות בזיכרון משפיעים לרעה על האיכות

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

מדי יום אנו צופים במיליוני קריסות מקוריות ממכשירי משתמש קצה ועם הצגת GWP-ASan , איתרנו את רובן לבאגי בטיחות בזיכרון.
נקודת נתונים זו מאמתת את המתאם בין איכות וצפיפות של באגי בטיחות בזיכרון והיא תואמת את מה שקולגות שלנו ב-Chrome רואים (ראה רשימת באגים חמים של Chrome GWP-ASan ).

באגי בטיחות בזיכרון משפיעים לרעה על האבטחה

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

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

אמנם זה מעודד לדעת שזו לא רק בעיה באנדרואיד (ראה נתונים סטטיסטיים של Chrome ו- Microsoft ), אנחנו צריכים לעשות יותר למען בטיחות המשתמשים שלנו.
צוות Project Zero בגוגל עוקב אחר ניצול יום אפס ששימשו בהתקפות אמיתיות נגד משתמשים כנקודות תורפה של יום אפס. אלה אינם באגים היפותטיים אלא ניצולים המשמשים באופן פעיל בהתקפות נגד משתמשים. באגי בטיחות זיכרון (שחיתות זיכרון ושימוש-אחרי-חופשי) מהווים רוב מכריע.

באגי בטיחות בזיכרון מגדילים עלויות

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

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

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

בטיחות זיכרון

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

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

דרישות לתמיכה בבטיחות זיכרון

מסמך הגדרת תאימות אנדרואיד (CDD) ממליץ בחום על שימוש בכלי בטיחות זיכרון במהלך הפיתוח.
אנו עובדים בשיתוף פעולה הדוק עם המערכת האקולוגית שלנו כדי להגביר את השימוש בכלי בטיחות זיכרון ולשלבם בתהליכי האינטגרציה והבדיקה המתמשכים.
לאורך זמן, נרצה להבטיח שכל מכשיר יעבור ריצה מלאה של חבילת בדיקת תאימות ( CTS ), תוך שימוש בכלי בטיחות זיכרון, מה שמוכיח שלא נמצאו באגים כאלה. לדוגמה, פלטפורמות Arm v9 יידרשו לספק ריצת CTS עם תיוג זיכרון מופעל, בעוד שפלטפורמות Arm v8 יתבקשו לספק ריצת CTS באמצעות HWASAN ו-KASAN.

חלודה כשפת תכנות חדשה לקוד פלטפורמה

אנדרואיד 12 הציגה את Rust כשפת פלטפורמה . חלודה מספקת זיכרון ובטיחות חוטים ברמות ביצועים דומות ל-C/C++. אנו מצפים ש- Rust תהיה הבחירה המועדפת עבור רוב הפרויקטים המקומיים החדשים. עם זאת, שכתוב כל הקוד הלא בטוח בזיכרון, המייצג כיום למעלה מ-70% מקוד פלטפורמת אנדרואיד, ב-Rust אינו אפשרי. להתקדם Rust יהיה משלים לכלי בטיחות זיכרון.

כלי בטיחות זיכרון

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

באגי בטיחות זיכרון משפיעים לרעה על האבטחה.
איור 3 : נוף כלי בטיחות בזיכרון אנדרואיד

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