Skip to content
Snippets Groups Projects
  1. Jan 18, 2017
    • Josh Gao's avatar
      Introduce crash_dump debugging helper. · cb3eb4ee
      Josh Gao authored
      Replace the global debuggerd with a per-process debugging helper that
      gets exec'ed by the process that crashed.
      
      Bug: http://b/30705528
      Test: crasher/crasher64, `debuggerd <pid>`, `kill -ABRT <pid>`
      Change-Id: Iad1b7478f7a4e2690720db4b066417d8b66834ed
      cb3eb4ee
  2. Dec 22, 2016
    • Alex Klyubin's avatar
      Restrict access to ro.serialno and ro.boot.serialno · 20151072
      Alex Klyubin authored
      This restricts access to ro.serialno and ro.boot.serialno, the two
      system properties which contain the device's serial number, to a
      select few SELinux domains which need the access. In particular, this
      removes access to these properties from Android apps. Apps can access
      the serial number via the public android.os.Build API. System
      properties are not public API for apps.
      
      The reason for the restriction is that serial number is a globally
      unique identifier which cannot be reset by the user. Thus, it can be
      used as a super-cookie by apps. Apps need to wean themselves off of
      identifiers not resettable by the user.
      
      Test: Set up fresh GMS device, install some apps via Play, update some apps, use Chrome
      Test: Access the device via ADB (ADBD exposes serial number)
      Test: Enable MTP over USB, use mtp-detect to confirm that serial number is reported in MTP DeviceInfo
      Bug: 31402365
      Bug: 33700679
      Change-Id: I4713133b8d78dbc63d8272503e80cd2ffd63a2a7
      20151072
  3. Dec 16, 2016
  4. 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
  5. Nov 29, 2016
  6. Nov 01, 2016
    • Felipe Leme's avatar
      Added permissions for the dumpstate service. · b5f5931e
      Felipe Leme authored
      - Allow dumpstate to create the dumpservice service.
      - Allow System Server and Shell to find that service.
      - Don't allow anyone else to create that service.
      - Don't allow anyone else to find that service.
      
      BUG: 31636879
      Test: manual verification
      Change-Id: I642fe873560a2b123e6bafde645467d45a5f5711
      b5f5931e
  7. Oct 29, 2016
    • Nick Kralevich's avatar
      Get rid of more auditallow spam · 2c8ea36a
      Nick Kralevich authored
      Addresses the following audit messages:
      
      [    7.984957] type=1400 audit(33873666.610:40): avc: granted { getattr
      } for pid=1 comm="init" name="system@framework@boot-ext.art" dev="dm-2"
      ino=106324 scontext=u:r:init:s0
      tcontext=u:object_r:dalvikcache_data_file:s0 tclass=file
      
      [   65.528068] type=1400 audit(1477751916.508:96): avc: granted { search
      } for pid=6330 comm="main" name="/" dev="cgroup" ino=12428
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0 tclass=dir
      
      [   65.530425] type=1400 audit(1477751916.508:97): avc: granted { search
      } for pid=6330 comm="main" name="/" dev="cgroup" ino=12428
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0 tclass=dir
      
      [   65.530487] type=1400 audit(1477751916.508:98): avc: granted { open }
      for pid=6330 comm="main" path="/dev/cpuctl/tasks" dev="cgroup" ino=12429
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0 tclass=file
      
      [   65.530800] type=1400 audit(1477751916.508:98): avc: granted { open }
      for pid=6330 comm="main" path="/dev/cpuctl/tasks" dev="cgroup" ino=12429
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0 tclass=file
      
      [   65.530842] type=1400 audit(1477751916.508:99): avc: granted { search
      } for pid=6330 comm="main" name="/" dev="cgroup" ino=12428
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0 tclass=dir
      
      [   65.531138] type=1400 audit(1477751916.508:99): avc: granted { search
      } for pid=6330 comm="main" name="/" dev="cgroup" ino=12428
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0 tclass=dir
      
      [   65.531176] type=1400 audit(1477751916.508:100): avc: granted {
      search } for pid=6330 comm="main" name="bg_non_interactive" dev="cgroup"
      ino=12444 scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0
      tclass=dir
      
      [   65.531465] type=1400 audit(1477751916.508:100): avc: granted {
      search } for pid=6330 comm="main" name="bg_non_interactive" dev="cgroup"
      ino=12444 scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0
      tclass=dir
      
      [   65.531502] type=1400 audit(1477751916.508:101): avc: granted { open
      } for pid=6330 comm="main" path="/dev/cpuctl/bg_non_interactive/tasks"
      dev="cgroup" ino=12445 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:cgroup:s0 tclass=file
      
      [   65.531789] type=1400 audit(1477751916.508:101): avc: granted { open
      } for pid=6330 comm="main" path="/dev/cpuctl/bg_non_interactive/tasks"
      dev="cgroup" ino=12445 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:cgroup:s0 tclass=file
      
      [   65.531827] type=1400 audit(1477751916.508:102): avc: granted {
      search } for pid=6330 comm="main" name="/" dev="cgroup" ino=12459
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0 tclass=dir
      
      [   65.713056] type=1400 audit(1477751916.508:102): avc: granted {
      search } for pid=6330 comm="main" name="/" dev="cgroup" ino=12459
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:cgroup:s0 tclass=dir
      
      Bug: 32246161
      Test: policy compiles
      Test: dumpstate no longer generates the audit messages above.
      Change-Id: Id5afe2ebeb24f8a7407aac1a0a09806b1521b0e4
      2c8ea36a
  8. Oct 28, 2016
    • Nick Kralevich's avatar
      Get rid of auditallow spam. · 79a08e13
      Nick Kralevich authored
      Fixes the following SELinux messages when running adb bugreport:
      
      avc: granted { read } for name="libart.so" dev="dm-0" ino=1886
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:libart_file:s0 tclass=file
      
      avc: granted { read open } for path="/system/lib64/libart.so" dev="dm-0"
      ino=1886 scontext=u:r:dumpstate:s0 tcontext=u:object_r:libart_file:s0
      tclass=file
      
      avc: granted { getattr } for path="/system/lib64/libart.so" dev="dm-0"
      ino=1886 scontext=u:r:dumpstate:s0 tcontext=u:object_r:libart_file:s0
      tclass=file
      
      avc: granted { read } for path="/system/lib64/libart.so" dev="dm-0"
      ino=1886 scontext=u:r:dumpstate:s0 tcontext=u:object_r:libart_file:s0
      tclass=file
      
      avc: granted { read } for path="/system/lib64/libart.so" dev="dm-0"
      ino=1886 scontext=u:r:dumpstate:s0 tcontext=u:object_r:libart_file:s0
      tclass=file
      
      avc: granted { read } for path="/system/lib64/libart.so" dev="dm-0"
      ino=1886 scontext=u:r:dumpstate:s0 tcontext=u:object_r:libart_file:s0
      tclass=file
      
      avc: granted { read } for path="/system/lib64/libart.so" dev="dm-0"
      ino=1886 scontext=u:r:dumpstate:s0 tcontext=u:object_r:libart_file:s0
      tclass=file
      
      avc: granted { read execute } for path="/system/lib64/libart.so"
      dev="dm-0" ino=1886 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:libart_file:s0 tclass=file
      
      avc: granted { read } for path="/system/lib64/libart.so" dev="dm-0"
      ino=1886 scontext=u:r:dumpstate:s0 tcontext=u:object_r:libart_file:s0
      tclass=file
      
      avc: granted { read } for path="/system/lib64/libart.so" dev="dm-0"
      ino=1886 scontext=u:r:dumpstate:s0 tcontext=u:object_r:libart_file:s0
      tclass=file
      
      avc: granted { search } for name="dalvik-cache" dev="dm-2" ino=106289
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:dalvikcache_data_file:s0
      tclass=dir
      
      avc: granted { getattr } for path="/data/dalvik-cache/arm64" dev="dm-2"
      ino=106290 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:dalvikcache_data_file:s0 tclass=dir
      
      avc: granted { search } for name="dalvik-cache" dev="dm-2" ino=106289
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:dalvikcache_data_file:s0
      tclass=dir
      
      avc: granted { search } for name="arm64" dev="dm-2" ino=106290
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:dalvikcache_data_file:s0
      tclass=dir
      
      avc: granted { getattr } for
      path="/data/dalvik-cache/arm64/system@framework@boot.art" dev="dm-2"
      ino=106318 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:dalvikcache_data_file:s0 tclass=file
      
      avc: granted { search } for name="dalvik-cache" dev="dm-2" ino=106289
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:dalvikcache_data_file:s0
      tclass=dir
      
      avc: granted { search } for name="arm64" dev="dm-2" ino=106290
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:dalvikcache_data_file:s0
      tclass=dir
      
      avc: granted { read } for name="system@framework@boot.art" dev="dm-2"
      ino=106318 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:dalvikcache_data_file:s0 tclass=file
      
      avc: granted { read open } for
      path="/data/dalvik-cache/arm64/system@framework@boot.art" dev="dm-2"
      ino=106318 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:dalvikcache_data_file:s0 tclass=file
      
      avc: granted { search } for name="dalvik-cache" dev="dm-2" ino=106289
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:dalvikcache_data_file:s0
      tclass=dir
      
      [  169.349480] type=1400 audit(1477679159.734:129): avc: granted { read
      } for pid=6413 comm="main" name="ipv6_route" dev="proc" ino=4026535947
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.350030] type=1400 audit(1477679159.734:130): avc: granted { read
      open } for pid=6413 comm="main" path="/proc/6413/net/ipv6_route"
      dev="proc" ino=4026535947 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.350361] type=1400 audit(1477679159.734:130): avc: granted { read
      open } for pid=6413 comm="main" path="/proc/6413/net/ipv6_route"
      dev="proc" ino=4026535947 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.350399] type=1400 audit(1477679159.734:131): avc: granted {
      getattr } for pid=6413 comm="main" path="/proc/6413/net/ipv6_route"
      dev="proc" ino=4026535947 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.350963] type=1400 audit(1477679159.734:131): avc: granted {
      getattr } for pid=6413 comm="main" path="/proc/6413/net/ipv6_route"
      dev="proc" ino=4026535947 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.351002] type=1400 audit(1477679159.734:132): avc: granted { read
      } for pid=6413 comm="main" name="if_inet6" dev="proc" ino=4026535946
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.351330] type=1400 audit(1477679159.734:132): avc: granted { read
      } for pid=6413 comm="main" name="if_inet6" dev="proc" ino=4026535946
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.351366] type=1400 audit(1477679159.734:133): avc: granted { read
      open } for pid=6413 comm="main" path="/proc/6413/net/if_inet6"
      dev="proc" ino=4026535946 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.351861] type=1400 audit(1477679159.734:133): avc: granted { read
      open } for pid=6413 comm="main" path="/proc/6413/net/if_inet6"
      dev="proc" ino=4026535946 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.351910] type=1400 audit(1477679159.734:134): avc: granted {
      getattr } for pid=6413 comm="main" path="/proc/6413/net/if_inet6"
      dev="proc" ino=4026535946 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.353105] type=1400 audit(1477679159.734:134): avc: granted {
      getattr } for pid=6413 comm="main" path="/proc/6413/net/if_inet6"
      dev="proc" ino=4026535946 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.353186] type=1400 audit(1477679159.734:135): avc: granted { read
      } for pid=6413 comm="main" name="if_inet6" dev="proc" ino=4026535946
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.353594] type=1400 audit(1477679159.734:135): avc: granted { read
      } for pid=6413 comm="main" name="if_inet6" dev="proc" ino=4026535946
      scontext=u:r:dumpstate:s0 tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.353636] type=1400 audit(1477679159.734:136): avc: granted { read
      open } for pid=6413 comm="main" path="/proc/6413/net/if_inet6"
      dev="proc" ino=4026535946 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.354230] type=1400 audit(1477679159.734:136): avc: granted { read
      open } for pid=6413 comm="main" path="/proc/6413/net/if_inet6"
      dev="proc" ino=4026535946 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.354437] type=1400 audit(1477679159.734:137): avc: granted {
      getattr } for pid=6413 comm="main" path="/proc/6413/net/if_inet6"
      dev="proc" ino=4026535946 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      [  169.395359] type=1400 audit(1477679159.734:137): avc: granted {
      getattr } for pid=6413 comm="main" path="/proc/6413/net/if_inet6"
      dev="proc" ino=4026535946 scontext=u:r:dumpstate:s0
      tcontext=u:object_r:proc_net:s0 tclass=file
      
      Test: policy compiles
      Test: adb bugreport runs without auditallow messages above.
      Bug: 32246161
      Change-Id: Ie0ab2ed3c6babc1f93d3b8ae47c92dd905ebc93a
      79a08e13
  9. Oct 07, 2016
  10. 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
  11. Oct 04, 2016
  12. Sep 27, 2016
    • Lorenzo Colitti's avatar
      Don't allow dumpstate to call ioctl on netlink_tcpdiag_socket. · a8239c61
      Lorenzo Colitti authored
      This fixes the build error:
      
      =====
      libsepol.report_assertion_extended_permissions: neverallowxperm on line 166 of system/sepolicy/domain.te (or line 9201 of policy.conf) violated by
      allow dumpstate dumpstate:netlink_tcpdiag_socket { ioctl };
      libsepol.check_assertions: 1 neverallow failures occurred
      =====
      
      Which is caused, in AOSP and downstream branches, by
      I123e5d40955358665800fe3b86cd5f8dbaeb8717.
      
      Test: builds.
      Change-Id: I925dec63df7c3a0f731b18093a8ac5c70167c970
      a8239c61
    • Lorenzo Colitti's avatar
      Allow dumpstate to run ss. · bb9b4dd8
      Lorenzo Colitti authored
      (cherry picked from commit 63c7ad6e)
      
      Bug: 23113288
      Test: see http://ag/1476096
      Change-Id: I3beb21f1af092c93eceb3d5115f823c1b993727d
      bb9b4dd8
  13. Sep 26, 2016
  14. Sep 23, 2016
  15. Sep 21, 2016
    • Felipe Leme's avatar
      Let system_server writes to dumpstate.options property. · a5a8072f
      Felipe Leme authored
      Currently, we define 4 hardcoded init services to launch dumpstate with
      different command-line options (since dumpstate must be launched by
      root):
      
      - bugreport
      - bugreportplus
      - bugreportwear
      - bugreportremote
      
      This approach does not scale well; a better option is to have just one
      service, and let the framework pass the extra arguments through a system
      property.
      
      BUG: 31649719
      Test: manual
      
      Change-Id: I7ebbb7ce6a0fd3588baca6fd76653f87367ed0e5
      a5a8072f
  16. Sep 13, 2016
  17. Sep 12, 2016
  18. Sep 07, 2016
  19. Aug 18, 2016
  20. Aug 08, 2016
  21. Aug 05, 2016
    • Daniel Micay's avatar
      restrict access to timing information in /proc · 5423db6e
      Daniel Micay authored
      These APIs expose sensitive information via timing side channels. This
      leaves access via the adb shell intact along with the current uses by
      dumpstate, init and system_server.
      
      The /proc/interrupts and /proc/stat files were covered in this paper:
      
      https://www.lightbluetouchpaper.org/2016/07/29/yet-another-android-side-channel/
      
      The /proc/softirqs, /proc/timer_list and /proc/timer_stats files are
      also relevant.
      
      Access to /proc has been greatly restricted since then, with untrusted
      apps no longer having direct access to these, but stricter restrictions
      beyond that would be quite useful.
      
      Change-Id: Ibed16674856569d26517e5729f0f194b830cfedd
      5423db6e
  22. Jun 21, 2016
  23. Jun 20, 2016
    • Felipe Leme's avatar
      Grant access to net_raw and net_admin to dumpstate. · 51fdddaf
      Felipe Leme authored
      These capabilities are required so it can run iptables, otherwise it
      will cause failures such as:
      
      06-20 16:19:02.650  5524  5524 W iptables: type=1400 audit(0.0:232): avc: denied { net_raw } for capability=13 scontext=u:r:dumpstate:s0 tcontext=u:r:dumpstate:s0 tclass=capability permissive=0
      06-20 16:56:57.119  5070  5070 W iptables: type=1400 audit(0.0:13): avc: denied { net_admin } for capability=12 scontext=u:r:dumpstate:s0 tcontext=u:r:dumpstate:s0 tclass=capability permissive=0
      
      BUG: 29455997
      Change-Id: I9c0d1973f166da202d039eac883a6e53d53e24cb
      51fdddaf
    • David Brazdil's avatar
      dumpstate: Change SELinux policy to allow reading /data/misc/profiles · cf63957d
      David Brazdil authored
      This is needed in order to include profile files in bugreports.
      
      Bug: 28610953
      Change-Id: I025189a4ac66b936711fdb4e20b10c2b0a7427d1
      cf63957d
  24. Jun 16, 2016
  25. Jun 14, 2016
    • dcashman's avatar
      Keep pre-existing sysfs write permissions. · 17cfd3fc
      dcashman authored
      Commit: b144ebab added the sysfs_usb
      type and granted the read perms globally, but did not add write
      permissions for all domains that previously had them.  Add the ability
      to write to sysfs_usb for all domains that had the ability to write to
      those files previously (sysfs).
      
      Address denials such as:
      type=1400 audit(1904.070:4): avc:  denied  { write } for  pid=321 comm="ueventd" name="uevent" dev="sysfs" ino=1742 scontext=u:r:ueventd:s0 tcontext=u:object_r:sysfs_usb:s0 tclass=file permissive=0
      
      Bug: 28417852
      Change-Id: I4562ea73f2158ebefba74b58ca572f2176d1b849
      17cfd3fc
  26. Jun 08, 2016
  27. May 13, 2016
  28. Apr 19, 2016
  29. Apr 14, 2016
  30. Apr 05, 2016
    • Daniel Rosenberg's avatar
      Allow search/getattr access to media_rw_data_file for now. · b80bdef0
      Daniel Rosenberg authored
      With sdcardfs, we no longer have a separate sdcardd acting as
      an intermediate between the outside world and /data/media.
      Unless we modify sdcardfs to change contexts, we need these.
      Added for: system_server, dumpstate, and bluetooth
      
      Remove this patch if sdcardfs is updated to change the
      secontext of fs accesses.
      
      Bug: 27932396
      Change-Id: I294cfe23269b7959586252250f5527f13e60529b
      b80bdef0
  31. Apr 01, 2016
  32. Mar 25, 2016
  33. Mar 19, 2016
  34. Mar 17, 2016
  35. Mar 02, 2016
Loading