blob: 4ecae12b1e6aec51896826e5a2b4a7e2e3c00a7c [file] [log] [blame]
Nick Kralevichcb4c9272013-04-30 17:08:38 -07001page.title=Security Enhancements in Android 4.3
2@jd:body
3
4<p>
5Every Android release includes dozens of security enhancements to protect
6users. The following are some of the security enhancements available
7in Android 4.3:
8</p>
9
10<ul>
11 <li><strong>Android sandbox reinforced with SELinux.</strong>
12 Android now uses SELinux,
13 a mandatory access control (MAC) system in the Linux kernel originally
14 designed for government security, to augment the UID based Application
15 sandbox. This protects the operating system against potential security
16 vulnerabilities.</li>
17
18 <li><strong>No setuid/setgid programs.</strong>
19 Added support for filesystem capabilities
20 to Android system files and removed all setuid/setguid programs.  This
21 reduces root attack surface and the likelihood of potential security
22 vulnerabilities.</li>
23
24 <li><strong>ADB Authentication.</strong>
25 Since Android 4.2.2, connections to ADB are
26 authenticated with an RSA keypair. This prevents unauthorized use of
27 ADB where the attacker has physical access to a device.</li>
28
29 <li><strong>Restrict Setuid from Android Apps.</strong>
30 The /system partition is now mounted
31 nosuid for zygote-spawned processes, preventing Android applications
32 from executing setuid programs. This reduces root attack surface and
33 the likelihood of potential security vulnerabilities.</li>
34
35 <li><strong>Capability bounding.</strong>
36 Android zygote and ADB now use prctl(PR_CAPBSET_DROP) to drop
37 unnecessary capabilities prior to executing applications.
38 This prevents Android applications and applications launched from
39 the shell from acquiring privileged capabilities.</li>
40
41 <li><strong>AndroidKeyStore Provider.</strong>
42 Android now has a keystore provider that allows
43 applications to create exclusive use keys. This provides applications
44 with an API to create or store private keys that cannot be used by
45 other applications.</li>
46
47 <li><strong>KeyChain isBoundKeyAlgorithm.</strong>
48 Keychain API now provides a method
49 (isBoundKeyType) that allows applications to confirm that system-wide keys
50 are bound to a hardware root of trust for the device. This provides
51 a place to create or store private keys that cannot be exported off the
52 device, even in the event of a root compromise.</li>
53
54 <li><strong>NO_NEW_PRIVS.</strong>
55 Android zygote now uses prctl(PR_SET_NO_NEW_PRIVS) to block addition
56 of new privileges prior to execution application code. This
57 prevents Android applications from performing operations which can
58 elevate privileges via execve. (This requires Linux kernel version 3.5
59 or greater).</li>
60
61 <li><strong>FORTIFY_SOURCE enhancements.</strong>
62 Enabled FORTIFY_SOURCE on Android x86 and MIPS
63 and fortified strchr(), strrchr(), strlen(), and umask() calls. This
64 can detect potential memory corruption vulnerabilities or unterminated
65 string constants.</li>
66
67 <li><strong>Relocation protections.</strong>
68 Enabled read only relocations (relro) for
69 statically linked executables and removed all text relocations in Android
70 code. This provides defense in depth against potential memory corruption
71 vulnerabilities.</li>
72
73 <li><strong>Improved EntropyMixer.</strong>
74 EntropyMixer now writes entropy at shutdown /
75 reboot, in addition to periodic mixing. This allows retention of all
76 entropy generated while devices are powered on, and is especially useful
77 for devices that are rebooted immediately after provisioning.</li>
78
79 <li><strong>Security Fixes.</strong>
80 Android 4.3 also includes fixes for Android-specific
81 vulnerabilities. Information about these vulnerabilities has been provided
82 to Open Handset Alliance members and fixes are available in Android Open
83 Source Project. To improve security, some devices with earlier versions
84 of Android may also include these fixes.</li>
85</ul>