Skip to content
Snippets Groups Projects
  1. Jan 18, 2018
    • Jeff Vander Stoep's avatar
      Enforce per-app data protections for targetSdk 28+ · 6231b4d9
      Jeff Vander Stoep authored
      Adds per-app categories to untrusted app domains and their
      app data types. Per-app categories are in addition to the
      existing per-user categories.
      
      Apps targeting sdk version 28+ will now have the following
      characteristics:
      Domain: u:r:untrusted_app:s0:c[0-9]+,c[0-9]+,c[0-9],c[0-9]
      Data context: u:object_r:app_data_file:s0:c[0-9]+,c[0-9]+,c[0-9],c[0-9]
      
      Whereas apps targeting 27- will look like:
      Domain: u:r:untrusted_app_27:s0:c[0-9]+,c[0-9]+
      Data context: u:object_r:app_data_file:s0:c[0-9]+,c[0-9]+
      
      To ensure backwards compatibility with previous SDK versions,
      the levelFrom=all now enforces categories by dominance instead of
      equality. Apps with per-app and per-user categories will continue
      to have selinux permissions (but not necessarily unix permissions)
      to access app data with only per-user categories, but apps with only
      per-user categories will not be able to access the data of apps with
      both per-app and per-user categories.
      
      Bug: 63897054
      Test: Boot sailfish, run apps, verify no new selinux denials.
      Test: cts-tradefed run cts -m CtsSelinuxTargetSdkCurrentTestCases
      Test: cts-tradefed run cts -m CtsSelinuxTargetSdk27TestCases
      Test: cts-tradefed run cts -m CtsSelinuxTargetSdk25TestCases
      Test: adb sideload an OTA and verify that files are correctly labeled.
      Change-Id: I64b013874fe87b55f47e817a1279e76ecf86b7c0
      6231b4d9
  2. Jan 05, 2017
    • Alex Klyubin's avatar
      Move untrusted_app policy to private · fce60d3d
      Alex Klyubin authored
      This leaves only the existence of untrusted_app domain as public API.
      All other rules are implementation details of this domain's policy and
      are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules from untrusted_domain_current
            attribute (as expected).
      Bug: 31364497
      
      Change-Id: Ief71fa16cfc38437cbe5c58100bba48b9a497c92
      fce60d3d
  3. Jan 04, 2017
    • Nick Kralevich's avatar
      untrusted_app: allow access to /proc/tty/drivers · e427a2b2
      Nick Kralevich authored
      /proc/tty/drivers is read by applications to figure out if they are
      running in an emulated environment. Specifically, they look for the
      string "goldfish" within that file.
      
      Arguably this is not an Android API, and really shouldn't be exposed to
      applications, but:
      
      1) A largish number of applications break if they can't read this file;
      2) The information here isn't particularly sensitive
      
      While we could spend a bunch of time trying to get applications fixed,
      there are bigger fish to fry. It's not worth the battle.
      
      Test: "ls -laZ /proc/tty/drivers" is labeled properly.
      Bug: 33214085
      Bug: 33814662
      Bug: 33791054
      Bug: 33211769
      Bug: 26813932
      Change-Id: Icc05bdc1c917547a6dca7d76636a1009369bde49
      e427a2b2
  4. Dec 08, 2016
    • dcashman's avatar
      Restore app_domain macro and move to private use. · 3e8dbf01
      dcashman authored
      app_domain was split up in commit: 2e00e637 to
      enable compilation by hiding type_transition rules from public policy.  These
      rules need to be hidden from public policy because they describe how objects are
      labeled, of which non-platform should be unaware.  Instead of cutting apart the
      app_domain macro, which non-platform policy may rely on for implementing new app
      types, move all app_domain calls to private policy.
      
      (cherry-pick of commit: 76035ea0)
      
      Bug: 33428593
      Test: bullhead and sailfish both boot. sediff shows no policy change.
      Change-Id: I4beead8ccc9b6e13c6348da98bb575756f539665
      3e8dbf01
    • dcashman's avatar
      Restore app_domain macro and move to private use. · 76035ea0
      dcashman authored
      app_domain was split up in commit: 2e00e637 to
      enable compilation by hiding type_transition rules from public policy.  These
      rules need to be hidden from public policy because they describe how objects are
      labeled, of which non-platform should be unaware.  Instead of cutting apart the
      app_domain macro, which non-platform policy may rely on for implementing new app
      types, move all app_domain calls to private policy.
      
      Bug: 33428593
      Test: bullhead and sailfish both boot. sediff shows no policy change.
      Change-Id: I4beead8ccc9b6e13c6348da98bb575756f539665
      76035ea0
  5. Dec 06, 2016
    • dcashman's avatar
      sepolicy: add version_policy tool and version non-platform policy. · 2e00e637
      dcashman authored
      In order to support platform changes without simultaneous updates from
      non-platform components, the platform and non-platform policies must be
      split.  In order to provide a guarantee that policy written for
      non-platform objects continues to provide the same access, all types
      exposed to non-platform policy are versioned by converting them and the
      policy using them into attributes.
      
      This change performs that split, the subsequent versioning and also
      generates a mapping file to glue the different policy components
      together.
      
      Test: Device boots and runs.
      Bug: 31369363
      Change-Id: Ibfd3eb077bd9b8e2ff3b2e6a0ca87e44d78b1317
      2e00e637
  6. Nov 22, 2016
    • Nick Kralevich's avatar
      neverallow some /proc file reads · 0b7506ff
      Nick Kralevich authored
      Lock in the gains we've made so far in restricting access to generically
      labeled /proc files. There's more we can do here, but let's avoid
      inadvertent regressions.
      
      Test: policy compiles. Only compile time assertions added.
      Bug: 26813932
      Change-Id: If354c2ddc1c59beed7f0eb4bcbd3f0d9971c3b8a
      0b7506ff
  7. Nov 20, 2016
    • Daniel Micay's avatar
      only permit text relocations in untrusted_app · dc083f59
      Daniel Micay authored
      The other domains either don't have the same backwards compatibility
      issues (isolated_app) or are privileged components that are pretty much
      part of the platform and can be expected to meet a higher standard.
      
      It would be possible to expose a build option for disabling the ART JIT,
      allowing conditional removal of execmem from some of these domains too
      (ones not ever using the WebView, until that's always in isolated_app).
      
      Bug: 20013628
      Change-Id: Ic22513157fc8b958b2a3d60381be0c07b5252fa5
      dc083f59
  8. Oct 06, 2016
    • dcashman's avatar
      Split general policy into public and private components. · cc39f637
      dcashman authored
      Divide policy into public and private components.  This is the first
      step in splitting the policy creation for platform and non-platform
      policies.  The policy in the public directory will be exported for use
      in non-platform policy creation.  Backwards compatibility with it will
      be achieved by converting the exported policy into attribute-based
      policy when included as part of the non-platform policy and a mapping
      file will be maintained to be included with the platform policy that
      maps exported attributes of previous versions to the current platform
      version.
      
      Eventually we would like to create a clear interface between the
      platform and non-platform device components so that the exported policy,
      and the need for attributes is minimal.  For now, almost all types and
      avrules are left in public.
      
      Test: Tested by building policy and running on device.
      
      Change-Id: Idef796c9ec169259787c3f9d8f423edf4ce27f8c
      cc39f637
    • Eric Bae's avatar
      allow policy to create a file by vfat (fs_type) for a case using sdcardfs · adf210d6
      Eric Bae authored
      Change-Id: Ia938d73b1a49b9ba4acf906df37095d21edee22e
      adf210d6
  9. Sep 12, 2016
    • Amith Yamasani's avatar
      Allow apps to read preloaded photos · aa2a33a2
      Amith Yamasani authored
      (cherry picked from commit e01654f9)
      
      For Retail Demo mode, we need to preload photos in
      /data/preloads and allow regular apps to access the
      photos returned by the media provider from the preloads
      directory.
      
      Bug: 29940807
      Change-Id: Ic1061dac55ace1b125ae04b5b0c70aae9aa0c732
      aa2a33a2
  10. Sep 10, 2016
  11. Sep 09, 2016
  12. Aug 29, 2016
  13. Jul 22, 2016
  14. Jul 15, 2016
    • dcashman's avatar
      Grant untrusted_app dir access to asec_apk_file. · 83348b0b
      dcashman authored
      untrusted_app lost all of the domain_deprecated permissions in N,
      including the ability to read asec_apk_file dirs.  This is used for
      forward locked apps.
      
      Addresses the following denials:
      avc: denied { search } for name="asec" dev="tmpfs" ino=9298 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:asec_apk_file:s0 tclass=dir permissive=0
      avc: denied { getattr } for path="/mnt/asec" dev="tmpfs" ino=9298 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:asec_apk_file:s0 tclass=dir permissive=0
      
      (cherry-pick of internal commit: addd3c9f)
      
      Bug: 30082229
      Change-Id: I87758f1daee19197d9299bca261f0324e01af5e0
      83348b0b
  15. Jul 14, 2016
    • Amith Yamasani's avatar
      Allow apps to read preloaded photos · e01654f9
      Amith Yamasani authored
      For Retail Demo mode, we need to preload photos in
      /data/preloads and allow regular apps to access the
      photos returned by the media provider from the preloads
      directory.
      
      Bug: 29940807
      Change-Id: Ic1061dac55ace1b125ae04b5b0c70aae9aa0c732
      e01654f9
  16. Jul 13, 2016
    • dcashman's avatar
      Grant untrusted_app dir access to asec_apk_file. · addd3c9f
      dcashman authored
      untrusted_app lost all of the domain_deprecated permissions in N,
      including the ability to read asec_apk_file dirs.  This is used for
      forward locked apps.
      
      Addresses the following denials:
      avc: denied { search } for name="asec" dev="tmpfs" ino=9298 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:asec_apk_file:s0 tclass=dir permissive=0
      avc: denied { getattr } for path="/mnt/asec" dev="tmpfs" ino=9298 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:asec_apk_file:s0 tclass=dir permissive=0
      
      Bug: 30082229
      Change-Id: I44119f218433b9009cf8d09d0ee5f8a13cc15dd9
      addd3c9f
  17. Jun 06, 2016
  18. May 12, 2016
    • Jeff Vander Stoep's avatar
      Remove domain_deprecated from isolated_app · 0b430aba
      Jeff Vander Stoep authored
      Address denials:
      avc: denied { read } for name="meminfo" dev="proc" ino=4026544360 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:proc_meminfo:s0 tclass=file permissive=0
      
      Bug: 28722489
      Change-Id: I3c55bd95bb82ec54e88e9e9bc42d6392a216a936
      0b430aba
  19. Apr 23, 2016
  20. Apr 16, 2016
  21. Apr 15, 2016
    • Jeff Vander Stoep's avatar
      Further restrict socket ioctls available to apps · 32333536
      Jeff Vander Stoep authored
      (cherry picked from commit 6ba383c5)
      
      Restrict unix_dgram_socket and unix_stream_socket to a whitelist.
      Disallow all ioctls for netlink_selinux_socket and netlink_route_socket.
      
      Neverallow third party app use of all ioctls other than
      unix_dgram_socket, unix_stream_socket, netlink_selinux_socket,
      netlink_route_socket, tcp_socket, udp_socket and rawip_socket.
      
      Bug: 28171804
      Change-Id: Icfe3486a62fc2fc2d2abd8d4030a5fbdd0ab30ab
      32333536
    • Jeff Vander Stoep's avatar
      Further restrict socket ioctls available to apps · 6ba383c5
      Jeff Vander Stoep authored
      Restrict unix_dgram_socket and unix_stream_socket to a whitelist.
      Disallow all ioctls for netlink_selinux_socket and netlink_route_socket.
      
      Neverallow third party app use of all ioctls other than
      unix_dgram_socket, unix_stream_socket, netlink_selinux_socket,
      netlink_route_socket, tcp_socket, udp_socket and rawip_socket.
      
      Bug: 28171804
      Change-Id: Icfe3486a62fc2fc2d2abd8d4030a5fbdd0ab30ab
      6ba383c5
    • Nick Kralevich's avatar
      neverallow /data/anr access for isolated/untrusted apps · 0e61a7a9
      Nick Kralevich authored
      Add a neverallow rule (compile time assertion + CTS test) that
      isolated_apps and untrusted_apps can't do anything else but append
      to /data/anr/traces.txt. In particular, assert that they can't
      read from the file, or overwrite other data which may already be
      in the file.
      
      Bug: 18340553
      Bug: 27853304
      
      (cherry picked from commit 369cf8cd)
      
      Change-Id: Ib33e7ea0342ad28e5a89dfffdd9bc16fe54d8b3d
      0e61a7a9
  22. Mar 25, 2016
    • Nick Kralevich's avatar
      neverallow /data/anr access for isolated/untrusted apps · 369cf8cd
      Nick Kralevich authored
      Add a neverallow rule (compile time assertion + CTS test) that
      isolated_apps and untrusted_apps can't do anything else but append
      to /data/anr/traces.txt. In particular, assert that they can't
      read from the file, or overwrite other data which may already be
      in the file.
      
      Bug: 18340553
      Bug: 27853304
      Change-Id: I249fe2a46401b660efaa3f1102924a448ed750d5
      369cf8cd
  23. Mar 14, 2016
    • dcashman's avatar
      Mark batteryproperties service as app_api_service. · 027ec206
      dcashman authored
      Applications do not explicitly request handles to the batteryproperties
      service, but the BatteryManager obtains a reference to it and uses it
      for its underlying property queries.  Mark it as an app_api_service so
      that all applications may use this API.  Also remove the batterypropreg
      service label, as this does not appear to be used and may have been a
      duplication of batteryproperties.  As a result, remove the
      healthd_service type and replace it with a more specific
      batteryproperties_service type.
      
      (cherry-picked from commit: 9ed71eff)
      
      Bug: 27442760
      Change-Id: I537c17c09145b302728377bf856c1147e4cc37e9
      027ec206
    • dcashman's avatar
      Mark batteryproperties service as app_api_service. · 9ed71eff
      dcashman authored
      Applications do not explicitly request handles to the batteryproperties
      service, but the BatteryManager obtains a reference to it and uses it
      for its underlying property queries.  Mark it as an app_api_service so
      that all applications may use this API.  Also remove the batterypropreg
      service label, as this does not appear to be used and may have been a
      duplication of batteryproperties.  As a result, remove the
      healthd_service type and replace it with a more specific
      batteryproperties_service type.
      
      Bug: 27442760
      Change-Id: I5c0f9d7992ff2ec64adaeef22356e88fd0e8169c
      9ed71eff
    • dcashman's avatar
      Create sysfs_hwrandom type. · f100b2c4
      dcashman authored
      HwRngTest needs access to the hwrandom sysfs files, but untrused_app
      does not have access to sysfs.  Give these files their own label and
      allow the needed read access.
      
      (cherry-pick from internal commit: 85c0f8af)
      
      Bug: 27263241
      Change-Id: If572ad0931a534d76e148b688b76687460e99af9
      f100b2c4
  24. Mar 11, 2016
    • dcashman's avatar
      Create sysfs_hwrandom type. · 85c0f8af
      dcashman authored
      HwRngTest needs access to the hwrandom sysfs files, but untrused_app
      does not have access to sysfs.  Give these files their own label and
      allow the needed read access.
      
      Bug: 27263241
      Change-Id: I718ba485e9e6627bac6e579f746658d85134b24b
      85c0f8af
  25. Mar 07, 2016
  26. Mar 01, 2016
    • Calin Juravle's avatar
      Add SElinux policies to allow foreign dex usage tracking. · 837bc42f
      Calin Juravle authored
      This is a special profile folder where apps will leave profile markers
      for the dex files they load and don't own. System server will read the
      markers and decide which apk should be fully compiled instead of
      profile guide compiled.
      
      Apps need only to be able to create (touch) files in this directory.
      System server needs only to be able to check wheter or not a file with a
      given name exists.
      
      Bug: 27334750
      Bug: 26080105
      
      Change-Id: I2256e4aba1ec0e5117de6497123223b9a74f404e
      837bc42f
  27. Feb 29, 2016
    • Nick Kralevich's avatar
      Allow bluetooth access to the tun device. · ba12da95
      Nick Kralevich authored
      Bluetooth uses the tun device for tethering. Allow access.
      
        STEPS TO REPRODUCE:
        0. Have two devices to test on, say Device A and Device B
        1. On Device A, Go to settings ->Bluetooth .
        2. Turn on the Bluetooth .
        3. Pair it with device B
        4. Tap on the paired device
      
        OBSERVED RESULTS:
        -Bluetooth share crash is observed with "Bluetooth share has stopped"
        error message
        -Unable to use Bluetooth tethering due to this issue
      
        EXPECTED RESULTS:
        No crash and Bluetooth devices should be able to connect for tethering
      
      Addresses the following denial:
      
      com.android.bluetooth: type=1400 audit(0.0:131): avc: denied { open }
      for comm=425420536572766963652043616C6C path="/dev/tun" dev="tmpfs"
      ino=12340 scontext=u:r:bluetooth:s0 tcontext=u:object_r:tun_device:s0
      tclass=chr_file permissive=0
      
      Bug: 27372573
      
      (cherry picked from commit 9a1347ee)
      
      Change-Id: Ibd16e48c09fe80ebb4f3779214de3b4806c12497
      ba12da95
    • Nick Kralevich's avatar
      Allow bluetooth access to the tun device. · 9a1347ee
      Nick Kralevich authored
      Bluetooth uses the tun device for tethering. Allow access.
      
        STEPS TO REPRODUCE:
        0. Have two devices to test on, say Device A and Device B
        1. On Device A, Go to settings ->Bluetooth .
        2. Turn on the Bluetooth .
        3. Pair it with device B
        4. Tap on the paired device
      
        OBSERVED RESULTS:
        -Bluetooth share crash is observed with "Bluetooth share has stopped"
        error message
        -Unable to use Bluetooth tethering due to this issue
      
        EXPECTED RESULTS:
        No crash and Bluetooth devices should be able to connect for tethering
      
      Addresses the following denial:
      
      com.android.bluetooth: type=1400 audit(0.0:131): avc: denied { open }
      for comm=425420536572766963652043616C6C path="/dev/tun" dev="tmpfs"
      ino=12340 scontext=u:r:bluetooth:s0 tcontext=u:object_r:tun_device:s0
      tclass=chr_file permissive=0
      
      Bug: 27372573
      Change-Id: I07724d8d68ffcdda691f1179787a4f40a0ab1c73
      9a1347ee
  28. Feb 24, 2016
    • dcashman's avatar
      Label /proc/meminfo. · f25ea5f9
      dcashman authored
      Address the following denial:
      m.chrome.canary: type=1400 audit(0.0:15): avc: granted { read open } for path="/proc/meminfo" dev="proc" ino=4026544360 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file
      
      (cherry-pick of internal commit: 971aeeda)
      
      Bug: 22032619
      Chromium Bug: 586021
      
      Change-Id: I2dcb2d4800bbc92ea47c37d4fd7a10f827a0114c
      f25ea5f9
    • dcashman's avatar
      Label /proc/meminfo. · 971aeeda
      dcashman authored
      Address the following denial:
      m.chrome.canary: type=1400 audit(0.0:15): avc: granted { read open } for path="/proc/meminfo" dev="proc" ino=4026544360 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file
      
      Bug: 22032619
      Chromium Bug: 586021
      
      Change-Id: I584345c84d870c313da69ec97a0b1e54c0eb9ee1
      971aeeda
Loading