באמצעות פוסט בבלוג, מהנדסי גוגל פרסם את סיכום התוצאות הראשונות של ההקדמה תמיכה בפיתוח חלודה באנדרואיד.
אנדרואיד 13, כ-21% מהקוד החדש הידור המצטבר כתוב ב-Rust ו-79% ב-C/C++, בהיותו מאגר ה-AOSP (Android Open Source Project), המפתח את קוד המקור לפלטפורמת אנדרואיד, הכוללת כ-1,5 מיליון שורות של קוד Rust.
הקוד מסופק על ידי AOSP זה קשור לרכיבים חדשים כמו מאגר המפתחות ההצפנה Keystore2, מחסנית שבבי UWB (Ultra-Wideband), הטמעת פרוטוקול DNS על HTTP3, מסגרת וירטואליזציה של AVF (Android Virtualization Framework), ערימות ניסיוניות עבור Bluetooth ו-Wi-Fi.
בתור עם האסטרטגיה שאומצה לעיל כדי להפחית את הסיכון לפגיעות שגיאות זיכרון, עד כה שימשה Rust בעיקר לפיתוח קוד חדש ולחיזוק הדרגתי של האבטחה של רכיבי התוכנה הפגיעים והחיוניים ביותר.
ככל שמספר הקודים החדשים שאינם מאובטחים בזיכרון שנכנסים לאנדרואיד ירד, מספר פגיעויות אבטחת הזיכרון ירד גם כן. מ-2019 עד 2022, הוא ירד מ-76% ל-35% מסך כל הפגיעויות באנדרואיד. 2022 היא השנה הראשונה שבה פרצות אבטחת זיכרון אינן מהוות את רוב הפגיעויות של אנדרואיד.
המטרה הכללית של העברת כל הפלטפורמה ל-Rust אינה מוגדרת, והקוד הישן נשאר ב-C/C++, והמאבק נגד באגים בו נעשה על ידי שימוש בבדיקות מטושטש, ניתוח סטטי ושימוש בטכניקות דומות. שימוש בסוג MiraclePtr (כריכה על פני מצביעים גולמיים, המבצעת בדיקות נוספות לגישה לאזורי זיכרון משוחררים), מערכת הקצאת זיכרון Scudo (תחליף בטוח ל-malloc/free) ומנגנוני זיהוי שגיאות בעבודה עם זיכרון HWAsan(Hardware Assisted AddressSanitizer) , GWP-ASAN ו-KFENCE.
לגבי סטטיסטיקה על אופי את הפגיעות בפלטפורמת אנדרואיד, נצפה כי כ מקטין את כמות הקוד החדש שעובד עם זיכרון בדרכים לא בטוחות, זה גם מקטין את מספר הפגיעויות הנגרמות משגיאות בעת עבודה עם זיכרון.
לדוגמה, שיעור הפגיעות שנגרמו כתוצאה מבעיות זיכרון ירד מ-76% ב-2019 ל-35% ב-2022. במספרים מוחלטים, זוהו 223 פגיעויות הקשורות לזיכרון ב-2019, 150 ב-2020, 100 ב-2021 ו-85 ב-2022. לא נמצאו). 2022 הייתה השנה הראשונה שבה פגיעויות הקשורות לזיכרון חדלו לשלוט.
עד כה, לא התגלו פרצות אבטחת זיכרון בקוד Rust של Android.
אנחנו לא מצפים שהמספר הזה יישאר על אפס לנצח, אבל בהתחשב בנפח של קוד Rust החדש בשתי גרסאות של אנדרואיד והרכיבים הרגישים לאבטחה שבהם נעשה בו שימוש, זו תוצאה משמעותית. זה מראה ש-Rust משרת את מטרתה המיועדת למנוע את המקור הנפוץ ביותר של פגיעויות אנדרואיד.
מאז פגיעויות הקשורות לזיכרון הן לרוב המסוכנות ביותר, הנתונים הסטטיסטיים כוללים גם ירידה במספר הבעיות והבעיות הקריטיות שניתן לנצל מרחוק. יחד עם זאת, הדינמיקה של איתור נקודות תורפה שאינן קשורות לעבודה עם זיכרון הייתה בערך באותה רמה ב-4 השנים האחרונות - 20 נקודות תורפה בחודש.
גם היחס בין בעיות מסוכנות לפגיעות שנגרמות משגיאות זיכרון זהה (אך ככל שמספר הפגיעות יורד, גם מספר הבעיות המסוכנות יורד).
הסטטיסטיקה גם עוקבת אחר המתאם בין כמות הקוד החדש שעובד עם הזיכרון בצורה לא מאובטחת לבין מספר הפגיעויות הקשורות לזיכרון (הצפת מאגר, גישה לזיכרון שכבר משוחרר וכו').
ההתבוננות הזו לאשר את ההנחה של שעיקר תשומת הלב ב הטמעת טכניקות תכנות מאובטחות יש לתת אותו לקוד החדש ולא לשכתב את הקיים, מכיוון שרוב הפגיעויות שזוהו נמצאות בקוד החדש.
מקור: https://security.googleblog.com/