Home | History | Annotate | Download | only in enhancements
      1 <html devsite>
      2   <head>
      3     <title>Security Enhancements in Android 4.3</title>
      4     <meta name="project_path" value="/_project.yaml" />
      5     <meta name="book_path" value="/_book.yaml" />
      6   </head>
      7   <body>
      8   <!--
      9       Copyright 2017 The Android Open Source Project
     10 
     11       Licensed under the Apache License, Version 2.0 (the "License");
     12       you may not use this file except in compliance with the License.
     13       You may obtain a copy of the License at
     14 
     15           http://www.apache.org/licenses/LICENSE-2.0
     16 
     17       Unless required by applicable law or agreed to in writing, software
     18       distributed under the License is distributed on an "AS IS" BASIS,
     19       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     20       See the License for the specific language governing permissions and
     21       limitations under the License.
     22   -->
     23 
     24 
     25 
     26 <p>
     27 Every Android release includes dozens of security enhancements to protect
     28 users. The following are some of the security enhancements available
     29 in Android 4.3:
     30 </p>
     31 
     32 <ul>
     33   <li><strong>Android sandbox reinforced with SELinux.</strong>
     34   This release strengthens the Android sandbox using the SELinux
     35   mandatory access control system (MAC) in the Linux kernel. SELinux
     36   reinforcement is invisible to users and developers, and adds robustness
     37   to the existing Android security model while maintaining compatibility
     38   with existing applications. To ensure continued compatibility this release
     39   allows the use of SELinux in a permissive mode. This mode logs any policy
     40   violations, but will not break applications or affect system behavior.</li>
     41 
     42   <li><strong>No setuid/setgid programs.</strong>
     43   Added support for filesystem capabilities
     44   to Android system files and removed all setuid/setguid programs. This
     45   reduces root attack surface and the likelihood of potential security
     46   vulnerabilities.</li>
     47 
     48   <li><strong>ADB Authentication.</strong>
     49   Since Android 4.2.2, connections to ADB are
     50   authenticated with an RSA keypair. This prevents unauthorized use of
     51   ADB where the attacker has physical access to a device.</li>
     52 
     53   <li><strong>Restrict Setuid from Android Apps.</strong>
     54   The /system partition is now mounted
     55   nosuid for zygote-spawned processes, preventing Android applications
     56   from executing setuid programs. This reduces root attack surface and
     57   the likelihood of potential security vulnerabilities.</li>
     58 
     59   <li><strong>Capability bounding.</strong>
     60   Android zygote and ADB now use prctl(PR_CAPBSET_DROP) to drop
     61   unnecessary capabilities prior to executing applications.
     62   This prevents Android applications and applications launched from
     63   the shell from acquiring privileged capabilities.</li>
     64 
     65   <li><strong>AndroidKeyStore Provider.</strong>
     66   Android now has a keystore provider that allows
     67   applications to create exclusive use keys. This provides applications
     68   with an API to create or store private keys that cannot be used by
     69   other applications.</li>
     70 
     71   <li><strong>KeyChain isBoundKeyAlgorithm.</strong>
     72   Keychain API now provides a method
     73   (isBoundKeyType) that allows applications to confirm that system-wide keys
     74   are bound to a hardware root of trust for the device. This provides
     75   a place to create or store private keys that cannot be exported off the
     76   device, even in the event of a root compromise.</li>
     77 
     78   <li><strong>NO_NEW_PRIVS.</strong>
     79   Android zygote now uses prctl(PR_SET_NO_NEW_PRIVS) to block addition
     80   of new privileges prior to execution application code. This
     81   prevents Android applications from performing operations which can
     82   elevate privileges via execve. (This requires Linux kernel version 3.5
     83   or greater).</li>
     84 
     85   <li><strong>FORTIFY_SOURCE enhancements.</strong>
     86   Enabled FORTIFY_SOURCE on Android x86 and MIPS
     87   and fortified strchr(), strrchr(), strlen(), and umask() calls. This
     88   can detect potential memory corruption vulnerabilities or unterminated
     89   string constants.</li>
     90 
     91   <li><strong>Relocation protections.</strong>
     92   Enabled read only relocations (relro) for
     93   statically linked executables and removed all text relocations in Android
     94   code. This provides defense in depth against potential memory corruption
     95   vulnerabilities.</li>
     96 
     97   <li><strong>Improved EntropyMixer.</strong>
     98   EntropyMixer now writes entropy at shutdown /
     99   reboot, in addition to periodic mixing. This allows retention of all
    100   entropy generated while devices are powered on, and is especially useful
    101   for devices that are rebooted immediately after provisioning.</li>
    102 
    103   <li><strong>Security Fixes.</strong>
    104   Android 4.3 also includes fixes for Android-specific
    105   vulnerabilities. Information about these vulnerabilities has been provided
    106   to Open Handset Alliance members and fixes are available in Android Open
    107   Source Project. To improve security, some devices with earlier versions
    108   of Android may also include these fixes.</li>
    109 </ul>
    110 
    111   </body>
    112 </html>
    113