Skip to content
Snippets Groups Projects
  1. Nov 20, 2017
    • Nick Kralevich's avatar
      Make /proc/sys/kernel/random available to everyone · 9d9c370f
      Nick Kralevich authored
      Similar to the way we handle /dev/random and /dev/urandom, make
      /proc/sys/kernel/random available to everyone.
      
        hostname:/proc/sys/kernel/random # ls -laZ
        total 0
        dr-xr-xr-x 1 root root u:object_r:proc_random:s0 0 2017-11-20 19:02 .
        dr-xr-xr-x 1 root root u:object_r:proc:s0        0 2017-11-20 18:32 ..
        -r--r--r-- 1 root root u:object_r:proc_random:s0 0 2017-11-20 19:02 boot_id
        -r--r--r-- 1 root root u:object_r:proc_random:s0 0 2017-11-20 19:02 entropy_avail
        -r--r--r-- 1 root root u:object_r:proc_random:s0 0 2017-11-20 19:02 poolsize
        -rw-r--r-- 1 root root u:object_r:proc_random:s0 0 2017-11-20 19:02 read_wakeup_threshold
        -rw-r--r-- 1 root root u:object_r:proc_random:s0 0 2017-11-20 19:02 urandom_min_reseed_secs
        -r--r--r-- 1 root root u:object_r:proc_random:s0 0 2017-11-20 19:02 uuid
        -rw-r--r-- 1 root root u:object_r:proc_random:s0 0 2017-11-20 19:02 write_wakeup_threshold
      
      boot_id (unique random number per boot) is commonly used by
      applications, as is "uuid". As these are random numbers, no sensitive
      data is leaked. The other files are useful to allow processes to
      understand the state of the entropy pool, and should be fairly benign.
      
      Addresses the following denial:
      
        type=1400 audit(0.0:207): avc: denied { read } for name="boot_id"
        dev="proc" ino=76194 scontext=u:r:untrusted_app_25:s0:c512,c768
        tcontext=u:object_r:proc:s0 tclass=file permissive=0
      
      Bug: 69294418
      Test: policy compiles.
      Change-Id: Ieeca1c654ec755123e19b4693555990325bd58cf
      9d9c370f
  2. Oct 24, 2017
    • Tri Vo's avatar
      /proc, /sys access from uncrypt, update_engine, postinstall_dexopt · 04fb82f2
      Tri Vo authored
      New types:
      1. proc_random
      2. sysfs_dt_firmware_android
      
      Labeled:
      1. /proc/sys/kernel/random as proc_random.
      2. /sys/firmware/devicetree/base/firmware/android/{compatible, fstab,
      vbmeta} as sysfs_dt_firmware_android.
      
      Changed access:
      1. uncrypt, update_engine, postinstall_dexopt have access to generic proc
      and sysfs labels removed.
      2. appropriate permissions were added to uncrypt, update_engine,
      update_engine_common, postinstall_dexopt.
      
      Bug: 67416435
      Bug: 67416336
      Test: fake ota go/manual-ab-ota runs without denials
      Test: adb sideload runs without denials to new types
      Change-Id: Id31310ceb151a18652fcbb58037a0b90c1f6505a
      04fb82f2
  3. Oct 03, 2017
    • Tri Vo's avatar
      Move update_engine rules out of update_engine_common.te · fd7da7b2
      Tri Vo authored
      Grant update_engine access to sysfs.
      Ran fake ota go/manual-ab-ota, and this denial was fixed:
      avc: denied { read } for pid=912 comm="update_engine" name="compatible"
      dev="sysfs" ino=17399 scontext=u:r:update_engine:s0
      tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
      
      Test: boots with no new denials
      Change-Id: I8697da3af254aea1cec44d9dbb1eca18be31859c
      fd7da7b2
  4. Jul 27, 2017
    • Jeff Vander Stoep's avatar
      domain_deprecated: remove sysfs rules · 275f6dd5
      Jeff Vander Stoep authored
      Clean up the remaining granted permissions in domain_deprecated.
      
      avc: granted { read open } for comm="uncrypt"
      path="/sys/firmware/devicetree/base/firmware/android/fstab/compatible"
      dev="sysfs" ino=17591 scontext=u:r:uncrypt:s0
      tcontext=u:object_r:sysfs:s0 tclass=file
      avc: granted { getattr } for comm="uncrypt"
      path="/sys/firmware/devicetree/base/firmware/android/compatible"
      dev="sysfs" ino=17583 scontext=u:r:uncrypt:s0
      tcontext=u:object_r:sysfs:s0 tclass=file
      
      vc: granted { read open } for comm="update_engine"
      path="/sys/firmware/devicetree/base/firmware/android/fstab" dev="sysfs"
      ino=17258 scontext=u:r:update_engine:s0 tcontext=u:object_r:sysfs:s0
      tclass=dir
      avc: granted { getattr } for comm="update_engine"
      path="/sys/firmware/devicetree/base/firmware/android/fstab/compatible"
      dev="sysfs" ino=17259 scontext=u:r:update_engine:s0
      tcontext=u:object_r:sysfs:s0 tclass=file
      
      Bug: 28760354
      Test: build
      Change-Id: Id318ce84894c1001361923f5205de093a15c1e6a
      275f6dd5
  5. Jul 26, 2017
    • Jeff Vander Stoep's avatar
      domain_deprecated: remove proc access · c15d54ef
      Jeff Vander Stoep authored
      Remove "granted" logspam. Grante the observed permissions to the
      individual processes that need them and remove the permission from
      domain_deprecated.
      
      avc: granted { read open } for comm="ndroid.settings"
      path="/proc/version" dev="proc" ino=4026532081
      scontext=u:r:system_app:s0 tcontext=u:object_r:proc:s0 tclass=file
      avc: granted { getattr } for comm=4173796E635461736B202332
      path="/proc/pagetypeinfo" dev="proc" ino=4026532129
      scontext=u:r:system_app:s0 tcontext=u:object_r:proc:s0 tclass=file
      
      avc: granted { read open } for comm="uncrypt" path="/proc/cmdline"
      dev="proc" ino=4026532072 scontext=u:r:uncrypt:s0
      tcontext=u:object_r:proc:s0 tclass=file
      
      avc: granted { read open } for comm="update_engine"
      path="/proc/sys/kernel/random/boot_id" dev="proc" ino=15852829
      scontext=u:r:update_engine:s0 tcontext=u:object_r:proc:s0 tclass=file
      
      avc: granted { read open } for comm="tiveportallogin"
      path="/proc/vmstat" dev="proc" ino=4026532130
      scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:proc:s0
      tclass=file
      
      This change is specifically not granting the following since it
      should not be allowed:
      avc: granted { read open } for comm="crash_dump64"
      path="/proc/filesystems" dev="proc" ino=4026532416
      scontext=u:r:dex2oat:s0 tcontext=u:object_r:proc:s0 tclass=file
      avc: granted { read } for comm="crash_dump64" name="filesystems"
      dev="proc" ino=4026532416 scontext=u:r:dex2oat:s0
      tcontext=u:object_r:proc:s0 tclass=file
      avc: granted { getattr } for comm="crash_dump64"
      path="/proc/filesystems" dev="proc" ino=4026532416
      scontext=u:r:dex2oat:s0 tcontext=u:object_r:proc:s0 tclass=file
      
      Bug: 64032843
      Bug: 28760354
      Test: build
      Change-Id: Ib309e97b6229bdf013468dca34f606c0e8da96d0
      c15d54ef
  6. Jul 16, 2017
    • Tianjie Xu's avatar
      Allow update_engine to read postinstall_mnt_dir · 8f687053
      Tianjie Xu authored
      The denial message:
      update_engine: type=1400 audit(0.0:15213): avc: denied { getattr } for
      path="/postinstall" dev="dm-0" ino=38 scontext=u:r:update_engine:s0
      tcontext=u:object_r:postinstall_mnt_dir:s0 tclass=dir permissive=0
      
      update_engine: type=1400 audit(0.0:15214): avc: denied { sys_rawio } for
      capability=17 scontext=u:r:update_engine:s0 tcontext=u:r:update_engine:s0
      tclass=capability permissive=0
      
      auditd  : type=1400 audit(0.0:15213): avc: denied { getattr } for
      comm="update_engine" path="/postinstall" dev="dm-0" ino=38
      scontext=u:r:update_engine:s0 tcontext=u:object_r:postinstall_mnt_dir:s0
      tclass=dir permissive=0
      
      update_engine: [0428/070905:ERROR:utils.cc(716)] Error stat'ing /postinstall: Permission denied
      
      Bug: 37760573
      Test: apply an update and UE reads postinstall_mnt_dir without denial.
      Change-Id: I55506f5e8544233f60ccf7c1df846c9c93946a25
  7. Jul 11, 2017
    • Jeff Vander Stoep's avatar
      domain_deprecated: remove rootfs access · a12aad45
      Jeff Vander Stoep authored
      Grant audited permissions collected in logs.
      
      tcontext=platform_app
      avc: granted { getattr } for comm=496E666C6174657254687265616420
      path="/" dev="dm-0" ino=2 scontext=u:r:platform_app:s0:c512,c768
      tcontext=u:object_r:rootfs:s0 tclass=dir
      
      tcontext=system_app
      avc: granted { getattr } for comm="android:ui" path="/" dev="dm-0"
      scontext=u:r:system_app:s0 tcontext=u:object_r:rootfs:s0 tclass=dir
      avc: granted { getattr } for comm="android:ui" path="/" dev="dm-0"
      scontext=u:r:system_app:s0 tcontext=u:object_r:rootfs:s0 tclass=dir
      
      tcontext=update_engine
      avc: granted { getattr } for comm="update_engine" path="/" dev="dm-0"
      ino=2 scontext=u:r:update_engine:s0 tcontext=u:object_r:rootfs:s0
      tclass=dir
      avc: granted { getattr } for comm="update_engine" path="/fstab.foo"
      dev="dm-0" ino=25 scontext=u:r:update_engine:s0
      tcontext=u:object_r:rootfs:s0 tclass=file
      avc: granted { read open } for comm="update_engine" path="/fstab.foo"
      dev="dm-0" ino=25 scontext=u:r:update_engine:s0
      tcontext=u:object_r:rootfs:s0 tclass=file
      
      Bug: 28760354
      Test: build
      Change-Id: I6135eea1d10b903a4a7e69da468097f495484665
      a12aad45
  8. Jul 10, 2017
    • Jeff Vander Stoep's avatar
      domain_deprecated: remove cache access · 790f4c7e
      Jeff Vander Stoep authored
      Address the "granted" permissions observed in the logs including:
      
      tcontext=uncrypt
      avc: granted { search } for comm="uncrypt" name="/" dev="mmcblk0p40"
      ino=2 scontext=u:r:uncrypt:s0 tcontext=u:object_r:cache_file:s0
      tclass=dir
      
      tcontext=install_recovery
      avc: granted { search } for comm="applypatch" name="saved.file"
      scontext=u:r:install_recovery:s0 tcontext=u:object_r:cache_file:s0
      tclass=dir
      avc: granted { read } for comm="applypatch" name="saved.file"
      dev="mmcblk0p6" ino=14 scontext=u:r:install_recovery:s0
      tcontext=u:object_r:cache_file:s0 tclass=file
      avc: granted { getattr } for comm="applypatch" path="/cache/saved.file"
      dev="mmcblk0p6" ino=14 scontext=u:r:install_recovery:s0
      tcontext=u:object_r:cache_file:s0 tclass=file
      
      tcontext=update_engine
      avc: granted { search } for comm="update_engine" name="cache"
      dev="sda35" ino=1409025 scontext=u:r:update_engine:s0
      tcontext=u:object_r:cache_file:s0 tclass=dir"
      avc: granted { read } for comm="update_engine" name="update.zip"
      dev="sda35" ino=1409037 scontext=u:r:update_engine:s0
      tcontext=u:object_r:cache_file:s0:c512,c768 tclass=file
      avc: granted { read } for comm="update_engine" name="cache" dev="dm-0"
      ino=16 scontext=u:r:update_engine:s0 tcontext=u:object_r:cache_file:s0
      tclass=lnk_file
      
      Bug: 28760354
      Test: build policy.
      Merged-In: Ia13fe47268df904bd4f815c429a0acac961aed1e
      Change-Id: Ia13fe47268df904bd4f815c429a0acac961aed1e
      790f4c7e
  9. Mar 23, 2017
    • Alex Deymo's avatar
      Allow update_engine to kill postinstall process. · b74017d3
      Alex Deymo authored
      This fixes the following denial in O:
      
       update_engine: type=1400 audit(0.0:2100): avc: denied { sigkill } for scontext=u:r:update_engine:s0 tcontext=u:r:postinstall:s0 tclass=process permissive=0
      
      Bug: 35111618
      Test: update_engine_client --cancel during postinstall
      Change-Id: I7456a95b5ca6fbdb268a5e16a13e2409758141f5
      b74017d3
  10. Mar 03, 2017
    • Nick Kralevich's avatar
      Label /proc/misc · 50bb7b5a
      Nick Kralevich authored
      Label /proc/misc and allow access to untrusted_apps targeting older API
      versions, as well as update_engine_common.
      
      /proc/misc is used by some banking apps to try to detect if they are
      running in an emulated environment.
      
      TODO: Remove access to proc:file from update_engine_common after more
      testing.
      
      Bug: 35917228
      Test: Device boots and no new denials.
      Change-Id: If1b97a9c55a74cb74d1bb15137201ffb95b5bd75
      50bb7b5a
  11. Feb 10, 2017
    • Jeff Vander Stoep's avatar
      Remove logspam · a1b45600
      Jeff Vander Stoep authored
      Grant observed uses of permissions being audited in domain_deprecated.
      
      fsck
      avc: granted { getattr } for path="/" dev="dm-0" ino=2 scontext=u:r:fsck:s0 tcontext=u:object_r:rootfs:s0 tclass=dir
      
      keystore
      avc: granted { read open } for path="/vendor/lib64/hw" dev="dm-1" ino=168 scontext=u:r:keystore:s0 tcontext=u:object_r:system_file:s0 tclass=dir
      
      sdcardd
      avc: granted { read open } for path="/proc/filesystems" dev="proc" ino=4026532412 scontext=u:r:sdcardd:s0 tcontext=u:object_r:proc:s0 tclass=file
      
      update_engine
      avc: granted { getattr } for path="/proc/misc" dev="proc" ino=4026532139 scontext=u:r:update_engine:s0 tcontext=u:object_r:proc:s0 tclass=file
      avc: granted { read open } for path="/proc/misc" dev="proc" ino=4026532139 scontext=u:r:update_engine:s0 tcontext=u:object_r:proc:s0 tclass=file
      avc: granted { read } for name="hw" dev="dm-1" ino=168 scontext=u:r:update_engine:s0 tcontext=u:object_r:system_file:s0 tclass=dir
      
      vold
      avc: granted { read open } for path="/vendor/lib64/hw" dev="dm-1" ino=168 scontext=u:r:vold:s0 tcontext=u:object_r:system_file:s0 tclass=dir
      
      Test: Marlin builds and boots, avc granted messages no longer observed.
      Bug: 35197529
      Change-Id: Iae34ae3b9e22ba7550cf7d45dc011ab043e63424
      a1b45600
  12. 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
  13. Aug 10, 2016
    • Alex Deymo's avatar
      Allow executing update_engine_sideload from recovery. · 27f19427
      Alex Deymo authored
      The recovery flow for A/B devices allows to sideload an OTA downloaded
      to a desktop and apply from recovery. This patch allows the "recovery"
      context to perform all the operations required to apply an update as
      update_engine would do in the background. These rules are now extracted
      into a new attributte called update_engine_common shared between
      recovery and update_engine.
      
      Bug: 27178350
      
      (cherry picked from commit d63084d3)
      
      Change-Id: I1f3e1e83a21e37e09b69cd9c497f87b42b9cbeb1
      27f19427
  14. Aug 09, 2016
    • Alex Deymo's avatar
      Allow executing update_engine_sideload from recovery. · d63084d3
      Alex Deymo authored
      The recovery flow for A/B devices allows to sideload an OTA downloaded
      to a desktop and apply from recovery. This patch allows the "recovery"
      context to perform all the operations required to apply an update as
      update_engine would do in the background. These rules are now extracted
      into a new attributte called update_engine_common shared between
      recovery and update_engine.
      
      Bug: 27178350
      Change-Id: I97b301cb2c039fb002e8ebfb23c3599463ced03a
      d63084d3
Loading