שיפורי אבטחה

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

אנדרואיד 14

Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 14:

  • Hardware-assisted AddressSanitizer (HWASan), introduced in Android 10, is a memory error detection tool similar to AddressSanitizer. Android 14 brings significant improvements to HWASan. Learn how it helps prevent bugs from making it into Android releases, HWAddressSanitizer
  • In Android 14, starting with apps that share location data with third-parties, the system runtime permission dialog now includes a clickable section that highlights the app's data-sharing practices, including information such as why an app may decide to share data with third parties.
  • Android 12 introduced an option to disable 2G support at the modem level, which protects users from the inherent security risk from 2G's obsolete security model. Recognizing how critical disabling 2G could be for enterprise customers, Android 14 enables this security feature in Android Enterprise, introducing support for IT admins to restrict the ability of a managed device to downgrade to 2G connectivity.
  • Added support to reject null-ciphered cellular connections, ensuring that circuit-switched voice and SMS traffic is always encrypted and protected from passive over-the-air interception. Learn more about Android's program to harden cellular connectivity.
  • Added support for multiple IMEIs
  • Since Android 14, AES-HCTR2 is the preferred mode of filenames encryption for devices with accelerated cryptography instructions.
  • Cellular connectivity
  • Documentation added for Android Safety Center
  • If your app targets Android 14 and uses Dynamic Code Loading (DCL), all dynamically-loaded files must be marked as read-only. Otherwise, the system throws an exception. We recommend that apps avoid dynamically loading code whenever possible, as doing so greatly increases the risk that an app can be compromised by code injection or code tampering.

Check out our full AOSP release notes and the Android Developer features and changes list.

אנדרואיד 13

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

  • אנדרואיד 13 מוסיפה תמיכה במצגות מרובות מסמכים. ממשק מפגש מצגות חדש זה מאפשר לאפליקציה לבצע מצגת מרובת מסמכים, דבר שאינו אפשרי עם ה-API הקיים. למידע נוסף, עיין ב'אישור זהות'
  • באנדרואיד 13, כוונות שמקורן באפליקציות חיצוניות מועברות לרכיב מיוצא אם ורק אם הכוונות תואמות לרכיבי סינון הכוונות המוצהרים שלהם.
  • Open Mobile API (OMAPI) הוא API סטנדרטי המשמש לתקשורת עם ה-Secure Element של המכשיר. לפני אנדרואיד 13, רק לאפליקציות ולמודולי מסגרת הייתה גישה לממשק הזה. על ידי המרתו לממשק יציב של הספק, מודולי HAL מסוגלים גם לתקשר עם האלמנטים המאובטחים באמצעות שירות OMAPI. למידע נוסף, ראה ממשק יציב ספק OMAPI .
  • החל מ-Android 13-QPR, מזהי UID משותפים הוצאו משימוש. משתמשי אנדרואיד 13 ומעלה צריכים לשים את השורה `android:sharedUserMaxSdkVersion="32"` במניפסט שלהם. ערך זה מונע ממשתמשים חדשים לקבל UID משותף. למידע נוסף על מזהי UID, ראה חתימת יישומים .
  • אנדרואיד 13 הוסיפה תמיכה בפרימיטיבים קריפטוגרפיים סימטריים של Keystore כגון AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code), ואלגוריתמים קריפטוגרפיים א-סימטריים (כולל Elliptic Curve, RSA2048, RSA4096 ו-Curve 25519)
  • אנדרואיד 13 (רמת API 33) ומעלה תומך בהרשאת זמן ריצה לשליחת הודעות שאינן פטורות מאפליקציה . זה נותן למשתמשים שליטה על הודעות ההרשאה שהם רואים.
  • נוספה הנחיה לפי שימוש עבור אפליקציות המבקשות גישה לכל יומני המכשירים , מה שנותן למשתמשים את היכולת לאפשר או לדחות גישה.
  • הציג את מסגרת הווירטואליזציה של Android (AVF) , המפגישה היפרוויזורים שונים תחת מסגרת אחת עם ממשקי API סטנדרטיים. הוא מספק סביבות ביצוע מאובטחות ופרטיות לביצוע עומסי עבודה מבודדים על ידי היפרוויזר.
  • הוצגה סכימת חתימות APK v3.1 כל סיבובי המפתחות החדשים המשתמשים ב-apksigner ישתמשו בסכימת החתימה v3.1 כברירת מחדל כדי למקד סיבוב עבור Android 13 ומעלה.

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

אנדרואיד 12

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

  • אנדרואיד 12 מציגה את BiometricManager.Strings API , המספק מחרוזות מקומיות עבור אפליקציות המשתמשות ב-BiometricPrompt לאימות. מחרוזות אלו נועדו להיות מודעות למכשיר ולספק יותר ספציפיות לגבי סוגי האימות שניתן להשתמש בהם. אנדרואיד 12 כולל גם תמיכה בחיישני טביעות אצבע מתחת לתצוגה
  • נוספה תמיכה בחיישני טביעות אצבע מתחת לתצוגה
  • הקדמה של שפת ההגדרה של ממשק אנדרואיד עם טביעת אצבע (AIDL)
  • תמיכה ב- Face AIDL החדש
  • הצגת Rust כשפה לפיתוח פלטפורמה
  • נוספה האפשרות למשתמשים להעניק גישה רק למיקומם המשוער
  • נוספו מחווני פרטיות בשורת המצב כאשר אפליקציה משתמשת במצלמה או במיקרופון
  • ליבת המחשב הפרטי של אנדרואיד (PCC)
  • נוספה אפשרות להשבית תמיכה ב-2G

אנדרואיד 11

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

אנדרואיד 10

Every Android release includes dozens of security enhancements to protect users. Android 10 includes several security and privacy enhancements. See the Android 10 release notes for a complete list of changes in Android 10.

Security

BoundsSanitizer

Android 10 deploys BoundsSanitizer (BoundSan) in Bluetooth and codecs. BoundSan uses UBSan's bounds sanitizer. This mitigation is enabled on a per-module level. It helps keep critical components of Android secure and shouldn't be disabled. BoundSan is enabled in the following codecs:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

Execute-only memory

By default, executable code sections for AArch64 system binaries are marked execute-only (nonreadable) as a hardening mitigation against just-in-time code reuse attacks. Code that mixes data and code together and code that purposefully inspects these sections (without first remapping the memory segments as readable) no longer functions. Apps with a target SDK of Android 10 (API level 29 or higher) are impacted if the app attempts to read code sections of execute-only memory (XOM) enabled system libraries in memory without first marking the section as readable.

Extended access

Trust agents, the underlying mechanism used by tertiary authentication mechanisms such as Smart Lock, can only extend unlock in Android 10. Trust agents can no longer unlock a locked device and can only keep a device unlocked for a maximum of four hours.

Face authentication

Face authentication allows users to unlock their device simply by looking at the front of their device. Android 10 adds support for a new face authentication stack that can securely process camera frames, preserving security and privacy during face authentication on supported hardware. Android 10 also provides an easy way for security-compliant implementations to enable app integration for transactions such as online banking or other services.

Integer Overflow Sanitization

Android 10 enables Integer Overflow Sanitization (IntSan) in software codecs. Ensure that playback performance is acceptable for any codecs that aren't supported in the device's hardware. IntSan is enabled in the following codecs:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

Modular system components

Android 10 modularizes some Android system components and enables them to be updated outside of the normal Android release cycle. Some modules include:

OEMCrypto

Android 10 uses OEMCrypto API version 15.

Scudo

Scudo is a dynamic user-mode memory allocator designed to be more resilient against heap-related vulnerabilities. It provides the standard C allocation and deallocation primitives, as well as the C++ primitives.

ShadowCallStack

ShadowCallStack (SCS) is an LLVM instrumentation mode that protects against return address overwrites (like stack buffer overflows) by saving a function's return address to a separately allocated ShadowCallStack instance in the function prolog of nonleaf functions and loading the return address from the ShadowCallStack instance in the function epilog.

WPA3 and Wi-Fi Enhanced Open

Android 10 adds support for the Wi-Fi Protected Access 3 (WPA3) and Wi-Fi Enhanced Open security standards to provide better privacy and robustness against known attacks.

Privacy

App access when targeting Android 9 or lower

If your app runs on Android 10 or higher but targets Android 9 (API level 28) or lower, the platform applies the following behavior:

  • If your app declares a <uses-permission> element for either ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION, the system automatically adds a <uses-permission> element for ACCESS_BACKGROUND_LOCATION during installation.
  • If your app requests either ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION, the system automatically adds ACCESS_BACKGROUND_LOCATION to the request.

Background activity restrictions

Starting in Android 10, the system places restrictions on starting activities from the background. This behavior change helps minimize interruptions for the user and keeps the user more in control of what's shown on their screen. As long as your app starts activities as a direct result of user interaction, your app most likely isn't affected by these restrictions.
To learn more about the recommended alternative to starting activities from the background, see the guide on how to alert users of time-sensitive events in your app.

Camera metadata

Android 10 changes the breadth of information that the getCameraCharacteristics() method returns by default. In particular, your app must have the CAMERA permission in order to access potentially device-specific metadata that is included in this method's return value.
To learn more about these changes, see the section about camera fields that require permission.

Clipboard data

Unless your app is the default input method editor (IME) or is the app that currently has focus, your app cannot access clipboard data on Android 10 or higher.

Device location

To support the additional control that users have over an app's access to location information, Android 10 introduces the ACCESS_BACKGROUND_LOCATION permission.
Unlike the ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION permissions, the ACCESS_BACKGROUND_LOCATION permission only affects an app's access to location when it runs in the background. An app is considered to be accessing location in the background unless one of the following conditions is satisfied:

  • An activity belonging to the app is visible.
  • The app is running a foreground service that has declared a foreground service type of location.
    To declare the foreground service type for a service in your app, set your app's targetSdkVersion or compileSdkVersion to 29 or higher. Learn more about how foreground services can continue user-initiated actions that require access to location.

External storage

By default, apps targeting Android 10 and higher are given scoped access into external storage, or scoped storage. Such apps can see the following types of files within an external storage device without needing to request any storage-related user permissions:

To learn more about scoped storage, as well as how to share, access, and modify files that are saved on external storage devices, see the guides on how to manage files in external storage and access and modify media files.

MAC address randomization

On devices that run Android 10 or higher, the system transmits randomized MAC addresses by default.
If your app handles an enterprise use case, the platform provides APIs for several operations related to MAC addresses:

  • Obtain randomized MAC address: Device owner apps and profile owner apps can retrieve the randomized MAC address assigned to a specific network by calling getRandomizedMacAddress().
  • Obtain actual, factory MAC address: Device owner apps can retrieve a device's actual hardware MAC address by calling getWifiMacAddress(). This method is useful for tracking fleets of devices.

Non-resettable device identifiers

Starting in Android 10, apps must have the READ_PRIVILEGED_PHONE_STATE privileged permission in order to access the device's non-resettable identifiers, which include both IMEI and serial number.

If your app doesn't have the permission and you try asking for information about non-resettable identifiers anyway, the platform's response varies based on target SDK version:

  • If your app targets Android 10 or higher, a SecurityException occurs.
  • If your app targets Android 9 (API level 28) or lower, the method returns null or placeholder data if the app has the READ_PHONE_STATE permission. Otherwise, a SecurityException occurs.

Physical activity recognition

Android 10 introduces the android.permission.ACTIVITY_RECOGNITION runtime permission for apps that need to detect the user's step count or classify the user's physical activity, such as walking, biking, or moving in a vehicle. This is designed to give users visibility of how device sensor data is used in Settings.
Some libraries within Google Play services, such as the Activity Recognition API and the Google Fit API, don't provide results unless the user has granted your app this permission.
The only built-in sensors on the device that require you to declare this permission are the step counter and step detector sensors.
If your app targets Android 9 (API level 28) or lower, the system auto-grants the android.permission.ACTIVITY_RECOGNITION permission to your app, as needed, if your app satisfies each of the following conditions:

  • The manifest file includes the com.google.android.gms.permission.ACTIVITY_RECOGNITION permission.
  • The manifest file doesn't include the android.permission.ACTIVITY_RECOGNITION permission.

If the system-auto grants the android.permission.ACTIVITY_RECOGNITION permission, your app retains the permission after you update your app to target Android 10. However, the user can revoke this permission at any time in system settings.

/proc/net filesystem restrictions

On devices that run Android 10 or higher, apps cannot access /proc/net, which includes information about a device's network state. Apps that need access to this information, such as VPNs, should use the NetworkStatsManager or ConnectivityManager class.

Permission groups removed from UI

As of Android 10, apps cannot look up how permissions are grouped in the UI.

Removal of contacts affinity

Starting in Android 10, the platform doesn't keep track of contacts affinity information. As a result, if your app conducts a search on the user's contacts, the results aren't ordered by frequency of interaction.
The guide about ContactsProvider contains a notice describing the specific fields and methods that are obsolete on all devices starting in Android 10.

Restricted access to screen contents

To protect users' screen contents, Android 10 prevents silent access to the device's screen contents by changing the scope of the READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT, and CAPTURE_SECURE_VIDEO_OUTPUT permissions. As of Android 10, these permissions are signature-access only.
Apps that need to access the device's screen contents should use the MediaProjection API, which displays a prompt asking the user to provide consent.

USB device serial number

If your app targets Android 10 or higher, your app cannot read the serial number until the user has granted your app permission to access the USB device or accessory.
To learn more about working with USB devices, see the guide on how to configure USB hosts.

Wi-Fi

Apps targeting Android 10 or higher cannot enable or disable Wi-Fi. The WifiManager.setWifiEnabled() method always returns false.
If you need to prompt users to enable and disable Wi-Fi, use a settings panel.

Restrictions on direct access to configured Wi-Fi networks

To protect user privacy, manual configuration of the list of Wi-Fi networks is restricted to system apps and device policy controllers (DPCs). A given DPC can be either the device owner or the profile owner.
If your app targets Android 10 or higher, and it isn't a system app or a DPC, then the following methods don't return useful data:

אנדרואיד 9

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

אנדרואיד 8

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

  • הצפנה . נוספה תמיכה לפינוי מפתח בפרופיל העבודה.
  • אתחול מאומת . נוסף אתחול מאומת של אנדרואיד (AVB). בסיס קוד אתחול מאומת התומך בהגנה לאחור לשימוש במעמיסי אתחול שנוספו ל-AOSP. המלץ על תמיכה ב-bootloader להגנת החזרה לאחור עבור HLOS. ניתן לבטל את הנעילה של מעמיסי אתחול ממליצים רק על ידי אינטראקציה פיזית של המשתמש עם המכשיר.
  • מסך נעילה . נוספה תמיכה בשימוש בחומרה עמידה בפני חבלה כדי לאמת את אישור מסך הנעילה.
  • חנות מפתח . אישור מפתח נדרש עבור כל המכשירים הנשלחים עם Android 8.0+. נוספה תמיכה בהוכחת זיהוי כדי לשפר את רישום Zero Touch.
  • ארגז חול . ארגז חול הדוק יותר רכיבים רבים באמצעות הממשק הסטנדרטי של Project Treble בין רכיבים ספציפיים למסגרת ומכשיר. החיל סינון seccomp על כל האפליקציות שאינן מהימנות כדי לצמצם את משטח ההתקפה של הקרנל. WebView מופעלת כעת בתהליך מבודד עם גישה מוגבלת מאוד לשאר המערכת.
  • התקשות גרעין . הטמעת עותק משתמש מוקשח , אמולציית PAN, קריאה בלבד לאחר init ו-KASLR.
  • הקשחת מרחב המשתמש . הטמיע CFI עבור ערימת המדיה. שכבות-על של אפליקציות כבר לא יכולות לכסות חלונות קריטיים למערכת ולמשתמשים יש דרך לבטל אותם.
  • עדכון מערכת הפעלה זורמת . עדכונים מופעלים במכשירים ששטח הדיסק שלהם נמוך.
  • התקן אפליקציות לא ידועות . משתמשים חייבים להעניק הרשאה להתקין אפליקציות ממקור שאינו חנות אפליקציות של צד ראשון.
  • פרטיות . ל-Android ID (SSAID) יש ערך שונה לכל אפליקציה ולכל משתמש במכשיר. עבור אפליקציות דפדפן אינטרנט, Widevine Client ID מחזיר ערך שונה עבור כל שם חבילת אפליקציה ומקור אינטרנט. net.hostname כעת ריק ולקוח ה-dhcp כבר לא שולח שם מארח. android.os.Build.SERIAL הוחלף ב- Build.SERIAL API המוגן מאחורי הרשאה הנשלטת על ידי המשתמש. שיפור באקראיות של כתובות MAC בכמה ערכות שבבים.

אנדרואיד 7

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

  • הצפנה מבוססת קבצים . הצפנה ברמת הקובץ, במקום להצפין את כל שטח האחסון כיחידה אחת, מבודדת ומגינה טוב יותר על משתמשים ופרופילים בודדים (כגון אישי ועבודה) במכשיר.
  • אתחול ישיר . מופעל על ידי הצפנה מבוססת קבצים, אתחול ישיר מאפשר לאפליקציות מסוימות כגון שעון מעורר ותכונות נגישות לפעול כאשר המכשיר מופעל אך אינו נעול.
  • אתחול מאומת . אתחול מאומת נאכף כעת בקפדנות כדי למנוע אתחול של מכשירים שנפגעו; הוא תומך בתיקון שגיאות כדי לשפר את המהימנות נגד השחתת נתונים לא זדונית.
  • SELinux . תצורת SELinux מעודכנת וכיסוי מוגבר של ה-seccomp נועלים עוד יותר את ארגז החול של האפליקציה ומצמצמים את משטח ההתקפה.
  • אקראית לפי סדר עומס של ספרייה ו-ASLR משופר . אקראיות מוגברת הופכת חלק מהתקפות שימוש חוזר בקוד לפחות אמינות.
  • התקשות גרעין . הוספה הגנה נוספת על זיכרון עבור גרעינים חדשים יותר על ידי סימון חלקים מזיכרון הליבה כקריאה בלבד, הגבלת גישת הליבה לכתובות של מרחב המשתמש והפחתה נוספת של משטח ההתקפה הקיים.
  • סכימת חתימות APK v2 . הציג סכימת חתימה של קובץ שלם המשפרת את מהירות האימות ומחזקת ערבויות שלמות.
  • חנות CA מהימנה . כדי להקל על אפליקציות לשלוט בגישה לתעבורת הרשת המאובטחת שלהן, רשויות אישורים שהותקנו על ידי משתמשים וכאלה שהותקנו באמצעות ממשקי API של ניהול מכשיר אינם מהימנים כברירת מחדל עבור אפליקציות המתמקדות ב-API ברמה 24+. בנוסף, כל מכשירי האנדרואיד החדשים חייבים להישלח עם אותה חנות CA מהימנה.
  • תצורת אבטחת רשת . הגדר את אבטחת הרשת ואת TLS באמצעות קובץ תצורה הצהרתי.

אנדרואיד 6

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

  • הרשאות זמן ריצה . יישומים מבקשים הרשאות בזמן ריצה במקום להיות מוענקות בזמן התקנת האפליקציה. משתמשים יכולים להפעיל ולכבות הרשאות הן עבור יישומי M והן לפני M.
  • אתחול מאומת . ערכה של בדיקות קריפטוגרפיות של תוכנת המערכת מתבצעת לפני הביצוע כדי לוודא שהטלפון תקין ממטען האתחול ועד למערכת ההפעלה.
  • אבטחה מבודדת חומרה . שכבת אבסטרקציית חומרה חדשה (HAL) בשימוש על ידי Fingerprint API, Lockscreen, Device Encryption ואישורי לקוח כדי להגן על מפתחות מפני התפשרות ליבה ו/או התקפות פיזיות מקומיות
  • טביעות אצבע . כעת ניתן לבטל את הנעילה של מכשירים בלחיצה אחת בלבד. מפתחים יכולים גם לנצל ממשקי API חדשים כדי להשתמש בטביעות אצבע כדי לנעול ולפתוח מפתחות הצפנה.
  • אימוץ כרטיס SD . ניתן לאמץ מדיה נשלפת למכשיר ולהרחיב את האחסון הזמין עבור נתונים מקומיים של אפליקציה, תמונות, סרטונים וכו', אך עדיין להיות מוגן על ידי הצפנה ברמת הבלוק.
  • נקה תנועת טקסט . מפתחים יכולים להשתמש ב-StrictMode חדש כדי לוודא שהאפליקציה שלהם לא משתמשת בטקסט ברור.
  • הקשחת מערכת . הקשחת המערכת באמצעות מדיניות שנאכפת על ידי SELinux. זה מציע בידוד טוב יותר בין משתמשים, סינון IOCTL, הפחתת האיום של שירותים חשופים, הידוק נוסף של דומיינים של SELinux וגישה מוגבלת ביותר ל/proc.
  • בקרת גישה ל-USB: על המשתמשים לאשר לאפשר גישת USB לקבצים, לאחסון או לפונקציונליות אחרת בטלפון. ברירת המחדל היא כעת חיוב רק עם גישה לאחסון הדורשת אישור מפורש מהמשתמש.

אנדרואיד 5

5.0

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

  • מוצפן כברירת מחדל. במכשירים הנשלחים עם L מחוץ לקופסה, הצפנת דיסק מלאה מופעלת כברירת מחדל כדי לשפר את ההגנה על נתונים על מכשירים שאבדו או נגנבו. ניתן להצפין מכשירים שמתעדכנים ל-L בהגדרות > אבטחה .
  • הצפנת דיסק מלאה משופרת. סיסמת המשתמש מוגנת מפני התקפות של כוח גס באמצעות scrypt , ובמידת האפשר, המפתח קשור למאגר המפתחות של החומרה כדי למנוע התקפות מחוץ למכשיר. כמו תמיד, סוד נעילת מסך אנדרואיד ומפתח ההצפנה של המכשיר אינם נשלחים מהמכשיר או נחשפים לאפליקציה כלשהי.
  • ארגז חול אנדרואיד מחוזק ב-SELinux . אנדרואיד דורשת כעת את SELinux במצב אכיפה עבור כל הדומיינים. SELinux היא מערכת בקרת גישה חובה (MAC) בליבת לינוקס המשמשת להגדלת מודל האבטחה הקיים של בקרת גישה לפי שיקול דעת (DAC). שכבה חדשה זו מספקת הגנה נוספת מפני פרצות אבטחה אפשריות.
  • Smart Lock. אנדרואיד כולל כעת trustlets המספקים גמישות רבה יותר לפתיחת מכשירים. לדוגמה, trustlets יכולים לאפשר ביטול נעילה אוטומטי של מכשירים כאשר הם קרובים למכשיר מהימן אחר (דרך NFC, Bluetooth) או בשימוש על ידי מישהו עם פנים מהימנות.
  • ריבוי משתמשים, פרופיל מוגבל ומצבי אורח עבור טלפונים וטאבלטים. אנדרואיד מספקת כעת מספר משתמשים בטלפונים וכוללת מצב אורח שניתן להשתמש בו כדי לספק גישה זמנית קלה למכשיר שלך מבלי להעניק גישה לנתונים ולאפליקציות שלך.
  • עדכונים ל-WebView ללא OTA. כעת ניתן לעדכן את WebView ללא תלות במסגרת וללא OTA של מערכת. זה יאפשר תגובה מהירה יותר לבעיות אבטחה פוטנציאליות ב-WebView.
  • קריפטוגרפיה מעודכנת עבור HTTPS ו-TLS/SSL. TLSv1.2 ו-TLSv1.1 מופעלים כעת, כעת מועדף סודיות קדימה, AES-GCM מופעל כעת, וחבילות צופן חלשות (MD5, 3DES וחבילות צופן ייצוא) מושבתות כעת. ראה https://developer.android.com/reference/javax/net/ssl/SSLSocket.html לפרטים נוספים.
  • תמיכת קישור ללא PIE הוסרה. אנדרואיד דורשת כעת את כל קובצי ההפעלה המקושרים באופן דינמי כדי לתמוך ב-PIE (קובצי הפעלה בלתי תלויים במיקום). זה משפר את יישום הפריסה האקראית של מרחב הכתובות (ASLR) של אנדרואיד.
  • שיפורים FORTIFY_SOURCE. הפונקציות הבאות של libc מיישמות כעת הגנות FORTIFY_SOURCE: stpcpy() , stpncpy() , read() , recvfrom() , FD_CLR() , FD_SET() ו- FD_ISSET() . זה מספק הגנה מפני פגיעויות של שחיתות זיכרון המערבות פונקציות אלו.
  • תיקוני אבטחה. אנדרואיד 5.0 כולל גם תיקונים עבור פרצות ספציפיות לאנדרואיד. מידע על פגיעויות אלו נמסר לחברי Open Handset Alliance, ותיקונים זמינים ב-Android Open Source Project. כדי לשפר את האבטחה, מכשירים מסוימים עם גרסאות קודמות של אנדרואיד עשויים לכלול גם תיקונים אלה.

אנדרואיד 4 ומטה

Every Android release includes dozens of security enhancements to protect users. The following are some of the security enhancements available in Android 4.4:

  • Android sandbox reinforced with SELinux. Android now uses SELinux in enforcing mode. SELinux is a mandatory access control (MAC) system in the Linux kernel used to augment the existing discretionary access control (DAC) based security model. This provides additional protection against potential security vulnerabilities.
  • Per User VPN. On multi-user devices, VPNs are now applied per user. This can allow a user to route all network traffic through a VPN without affecting other users on the device.
  • ECDSA Provider support in AndroidKeyStore. Android now has a keystore provider that allows use of ECDSA and DSA algorithms.
  • Device Monitoring Warnings. Android provides users with a warning if any certificate has been added to the device certificate store that could allow monitoring of encrypted network traffic.
  • FORTIFY_SOURCE. Android now supports FORTIFY_SOURCE level 2, and all code is compiled with these protections. FORTIFY_SOURCE has been enhanced to work with clang.
  • Certificate Pinning. Android 4.4 detects and prevents the use of fraudulent Google certificates used in secure SSL/TLS communications.
  • Security Fixes. Android 4.4 also includes fixes for Android-specific vulnerabilities. Information about these vulnerabilities has been provided to Open Handset Alliance members and fixes are available in Android Open Source Project. To improve security, some devices with earlier versions of Android may also include these fixes.

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

  • ארגז חול אנדרואיד מחוזק ב-SELinux. מהדורה זו מחזקת את ארגז החול של אנדרואיד באמצעות מערכת בקרת הגישה החובה של SELinux (MAC) בליבת לינוקס. חיזוק SELinux אינו נראה למשתמשים ומפתחים, ומוסיף חוסן למודל האבטחה הקיים של אנדרואיד תוך שמירה על תאימות עם אפליקציות קיימות. כדי להבטיח תאימות מתמשכת מהדורה זו מאפשרת שימוש ב-SELinux במצב מתירני. מצב זה מתעד כל הפרות מדיניות, אך לא ישבור יישומים או ישפיע על התנהגות המערכת.
  • אין תוכניות setuid/setgid. הוספה תמיכה ביכולות מערכת הקבצים לקבצי מערכת אנדרואיד והסרה את כל תוכניות setuid/setguid. זה מקטין את משטח התקפת השורש ואת הסבירות לפרצות אבטחה פוטנציאליות.
  • אימות ADB. מאז אנדרואיד 4.2.2, חיבורים ל-ADB מאומתים באמצעות צמד מפתחות RSA. זה מונע שימוש לא מורשה ב-ADB כאשר לתוקף יש גישה פיזית למכשיר.
  • הגבל את Setuid מאפליקציות אנדרואיד. מחיצת /system מותקנת כעת nosuid עבור תהליכים שהולידה זיגוטה, ומונעת מיישומי אנדרואיד להפעיל תוכניות setuid. זה מקטין את משטח התקפת השורש ואת הסבירות לפרצות אבטחה פוטנציאליות.
  • גבול יכולת. Android zygote ו-ADB משתמשים כעת ב-prctl(PR_CAPBSET_DROP) כדי להוריד יכולות מיותרות לפני הפעלת יישומים. זה מונע מיישומי אנדרואיד ויישומים שהושקו מהמעטפת לרכוש יכולות מורשות.
  • ספק AndroidKeyStore. לאנדרואיד יש כעת ספק מאגר מפתחות המאפשר לאפליקציות ליצור מפתחות שימוש בלעדי. זה מספק ליישומים ממשק API ליצירה או אחסון של מפתחות פרטיים שלא ניתן להשתמש בהם על ידי יישומים אחרים.
  • KeyChain isBoundKeyAlgorithm. Keychain API מספק כעת שיטה (isBoundKeyType) המאפשרת ליישומים לאשר שמפתחות כלל המערכת קשורים לשורש חומרה של אמון עבור המכשיר. זה מספק מקום ליצור או לאחסן מפתחות פרטיים שלא ניתן לייצא מהמכשיר, אפילו במקרה של פגיעה בשורש.
  • NO_NEW_PRIVS. Android zygote משתמש כעת ב-prctl(PR_SET_NO_NEW_PRIVS) כדי לחסום הוספה של הרשאות חדשות לפני ביצוע קוד יישום. זה מונע מיישומי אנדרואיד לבצע פעולות שיכולות להעלות הרשאות באמצעות execve. (זה דורש גרסת ליבת לינוקס 3.5 ומעלה).
  • שיפורים של FORTIFY_SOURCE. פעיל FORTIFY_SOURCE ב-Android x86 ו-MIPS וקריאות מבוצרות strchr(), strrchr(), strlen() ו-umask(). זה יכול לזהות פגיעויות פוטנציאליות של שחיתות זיכרון או קבועי מחרוזת בלתי נגמרים.
  • הגנות רילוקיישן. אפשרו העברות לקריאה בלבד (relro) עבור קובצי הפעלה מקושרים סטטית והסירו את כל העברות הטקסט בקוד אנדרואיד. זה מספק הגנה מעמיקה מפני פגיעויות פוטנציאליות של שחיתות זיכרון.
  • EntropyMixer משופר. EntropyMixer כותב כעת אנטרופיה בעת כיבוי/אתחול מחדש, בנוסף לערבוב תקופתי. זה מאפשר שמירה על כל האנטרופיה שנוצרת בזמן שהמכשירים מופעלים, והוא שימושי במיוחד עבור מכשירים שמופעלים מחדש מיד לאחר ההקצאה.
  • תיקוני אבטחה. אנדרואיד 4.3 כולל גם תיקונים עבור פרצות ספציפיות לאנדרואיד. מידע על פגיעויות אלו נמסר לחברי Open Handset Alliance ותיקונים זמינים ב-Android Open Source Project. כדי לשפר את האבטחה, מכשירים מסוימים עם גרסאות קודמות של אנדרואיד עשויים לכלול גם תיקונים אלה.

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

  • אימות אפליקציה - משתמשים יכולים לבחור להפעיל "אמת אפליקציות" ולבצע סינון של יישומים על ידי מאמת אפליקציה, לפני ההתקנה. אימות אפליקציה יכול להתריע בפני המשתמש אם הוא מנסה להתקין אפליקציה שעלולה להזיק; אם אפליקציה גרועה במיוחד, זה יכול לחסום את ההתקנה.
  • יותר שליטה ב-SMS פרימיום - אנדרואיד תספק התראה אם ​​אפליקציה תנסה לשלוח SMS לקוד קצר המשתמש בשירותי פרימיום שעלולים לגרום לחיובים נוספים. המשתמש יכול לבחור אם לאפשר לאפליקציה לשלוח את ההודעה או לחסום אותה.
  • VPN תמיד פועל - ניתן להגדיר VPN כך שלאפליקציות לא תהיה גישה לרשת עד ליצירת חיבור VPN. זה מונע מיישומים לשלוח נתונים על פני רשתות אחרות.
  • הצמדת אישורים - ספריות הליבה של Android תומכות כעת בהצמדת אישורים . דומיינים מוצמדים יקבלו כשל באימות אישור אם האישור אינו משורשר לקבוצה של אישורים צפויים. זה מגן מפני פשרה אפשרית של רשויות האישורים.
  • תצוגה משופרת של הרשאות אנדרואיד - ההרשאות אורגנו בקבוצות המובנות יותר למשתמשים. במהלך סקירת ההרשאות, המשתמש יכול ללחוץ על ההרשאה כדי לראות מידע מפורט יותר על ההרשאה.
  • התקשות מותקנות - הדמון installd אינו פועל כמשתמש השורש, מה שמפחית את משטח ההתקפה הפוטנציאלי להסלמה של הרשאות שורש.
  • הקשחת script init - סקריפטים של init מיישמים כעת סמנטיקה של O_NOFOLLOW כדי למנוע התקפות הקשורות ל-Symlink.
  • FORTIFY_SOURCE - אנדרואיד מיישמת כעת FORTIFY_SOURCE . זה משמש ספריות ויישומים של המערכת כדי למנוע השחתת זיכרון.
  • תצורת ברירת המחדל של ContentProvider - יישומים המכוונים לרמת API 17 יוגדרו כברירת מחדל "ייצוא" ל-"false" עבור כל ספק תוכן , מה שמפחית את משטח ההתקפה המוגדר כברירת מחדל עבור יישומים.
  • קריפטוגרפיה - שינה את מימושי ברירת המחדל של SecureRandom ו- Cipher.RSA לשימוש ב-OpenSSL. נוספה תמיכת SSL Socket עבור TLSv1.1 ו-TLSv1.2 באמצעות OpenSSL 1.0.1
  • תיקוני אבטחה - ספריות קוד פתוח משודרגות עם תיקוני אבטחה כוללות WebKit, libpng, OpenSSL ו-LibXML. אנדרואיד 4.2 כולל גם תיקונים עבור פרצות ספציפיות לאנדרואיד. מידע על פגיעויות אלו נמסר לחברי Open Handset Alliance ותיקונים זמינים ב-Android Open Source Project. כדי לשפר את האבטחה, מכשירים מסוימים עם גרסאות קודמות של אנדרואיד עשויים לכלול גם תיקונים אלה.

אנדרואיד מספקת מודל אבטחה רב-שכבתי המתואר בסקירת האבטחה של Android . כל עדכון לאנדרואיד כולל עשרות שיפורי אבטחה כדי להגן על המשתמשים. להלן כמה משיפורי האבטחה שהוצגו בגרסאות אנדרואיד 1.5 עד 4.1:

אנדרואיד 1.5
  • ProPolice למניעת חריפות מחסנית מחסנית (-fstack-protector)
  • safe_iop כדי להפחית את הצפת מספרים שלמים
  • הרחבות ל- OpenBSD dlmalloc כדי למנוע פגיעויות כפולות של free() ולמנוע התקפות של קונסולידציה של נתחים. התקפות קונסולידציה של נתחים הן דרך נפוצה לנצל שחיתות ערימה.
  • OpenBSD calloc למניעת הצפת מספרים שלמים במהלך הקצאת זיכרון
אנדרואיד 2.3
  • הגנות מפני פגיעות של מחרוזת (-Wformat-security -Werror=format-security)
  • מבוסס חומרה No eXecute (NX) למניעת ביצוע קוד בערימה ובערימה
  • Linux mmap_min_addr כדי לצמצם את הסלמה של הרשאות הרשאות מצביע null (משופר עוד יותר באנדרואיד 4.1)
אנדרואיד 4.0
רנדומיזציה של פריסת מרחב כתובות (ASLR) כדי לבצע אקראית מיקומי מפתח בזיכרון
אנדרואיד 4.1
  • תמיכה ב-PIE (Position Independent Executable).
  • העברות לקריאה בלבד / כריכה מיידית (-Wl,-z,relro -Wl,-z,now)
  • dmesg_restrict מופעל (הימנע מדליפת כתובות ליבה)
  • kptr_restrict מופעל (הימנע מדליפת כתובות ליבה)