Skip to content
Snippets Groups Projects
  1. Sep 26, 2014
    • Nick Kralevich's avatar
      zygote: allow replacing /proc/cpuinfo · 2de02877
      Nick Kralevich authored
      Android's native bridge functionality allows an Android native
      app written on one CPU architecture to run on a different architecture.
      For example, Android ARM apps may run on an x86 CPU.
      
      To support this, the native bridge functionality needs to replace
      /proc/cpuinfo with the version from /system/lib/<ISA>/cpuinfo
      using a bind mount. See commit ab0da5a9a6860046619629b8e6b83692d35dff86
      in system/core.
      
      This change:
      
      1) Creates a new label proc_cpuinfo, and assigns /proc/cpuinfo
      that label.
      2) Grants read-only access to all SELinux domains, to avoid
      breaking pre-existing apps.
      3) Grants zygote mounton capabilities for that file, so zygote
      can replace the file as necessary.
      
      Addresses the following denial:
      
        avc: denied { mounton } for path="/proc/cpuinfo" dev="proc" ino=4026532012 scontext=u:r:zygote:s0 tcontext=u:object_r:proc:s0 tclass=file
      
      Bug: 17671501
      Change-Id: Ib70624fba2baeccafbc0a41369833f76b976ee20
      2de02877
  2. Sep 25, 2014
    • Nick Kralevich's avatar
      allow apps to read the contents of mounted OBBs · 826bc5d6
      Nick Kralevich authored
      Apps should be able to read the contents of mounted OBBs.
      
      Steps to reproduce:
      
        1) Install com.namcobandaigames.soulcaliburgp (SoulCalibur)
        2) Attempt to run the app.
      
      Expected:
        App runs successfully.
      
      Actual:
        App crashes. See denials below.
      
      This can also be reproduced by running the newly introduced CTS
      test in I2018b63b0236ce6b5aee4094e40473315b1948c3
      
      Addresses the following denials:
      
        avc: denied { read } for pid=4133 comm="roidJUnitRunner" name="test1.txt" dev="loop0" ino=23 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:vfat:s0 tclass=file
        avc: denied { open } for pid=4133 comm="roidJUnitRunner" name="test1.txt" dev="loop0" ino=23 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:vfat:s0 tclass=file
        avc: denied { getattr } for pid=4133 comm="roidJUnitRunner" path="/mnt/obb/f73da56689d166b5389d49ad31ecbadb/test1.txt" dev="loop0" ino=23 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:vfat:s0 tclass=file
        avc: denied { search } for name="/" dev="loop0" ino=1 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:vfat:s0 tclass=dir permissive=0
      
      (cherrypick of commit 62083414)
      
      Bug: 17633509
      Change-Id: I49b722b24c1c7d9ab084ebee7c1e349d8d660ffa
      826bc5d6
  3. Sep 23, 2014
    • Nick Kralevich's avatar
      4635b26f
    • Nick Kralevich's avatar
      make su an mlstrustedsubject · b54f92bb
      Nick Kralevich authored
      Otherwise the following denial occurs when I3972f846ff5e7363799ba521f1258d662b18d64e
      is present and "adb root" is run.
      
        <6>[   64.507223] type=1400 audit(1411432079.100:471): avc: denied { connectto } for pid=717 comm="JDWP" path=006A6477702D636F6E74726F6C scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:su:s0 tclass=unix_stream_socket permissive=1
        <6>[   64.507617] type=1400 audit(1411432079.100:472): avc: denied { connectto } for pid=1659 comm="JDWP" path=006A6477702D636F6E74726F6C scontext=u:r:platform_app:s0:c512,c768 tcontext=u:r:su:s0 tclass=unix_stream_socket permissive=1
      
      Change-Id: I1772912b2ca1446b822303ad6ea3154427f8331f
      b54f92bb
    • Stephen Smalley's avatar
      Enable per-user isolation for normal apps. · a833763b
      Stephen Smalley authored
      
      Add levelFrom=user to the entries for apps other than those
      that run in the predefined platform UIDs (e.g. system, nfc, radio, ...).
      This causes libselinux to assign a per-user category set computed from
      the user ID portion of the Linux UID to each app process and its
      /data/data/<pkgdir> or /data/user/N/<pkgdir> directory.  These
      per-user category sets can be seen in the last field of ps -Z output for
      apps and ls -Z /data/data or /data/user/N output for the package
      directories.
      
      With this applied, apps running on behalf of one user cannot read
      or write files created by apps running on behalf of another user,
      even if the file is world-readable or -writable.  Similar isolation is
      enforced over process interactions (including /proc/pid file access),
      local socket communications, and System V IPC, as expressed in the
      set of constraints defined in the mls configuration.  At present,
      Binder IPC is not restricted by the mls configuration; if desired,
      there is a constraint in the configuration that can be uncommented
      to also apply isolation on direct binder IPC, although communication
      will still be possible indirectly via the system_server.
      
      Bug: 13507660
      Change-Id: I3972f846ff5e7363799ba521f1258d662b18d64e
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      a833763b
  4. Sep 22, 2014
    • Nick Kralevich's avatar
      relax appdomain efs_file neverallow rules · 200a9f0e
      Nick Kralevich authored
      During factory provisioning, some manufacturers may need to pull files
      from /factory (label efs_file and bluetooth_efs_file) to collect
      device specific identifiers such as the mac address, using commands
      similar to the following:
      
        adb shell cat /factory/ssn
        adb shell cat /factory/bt/bd_addr.conf
        adb shell cat /factory/wifi/mac.txt
        adb shell cat /factory/60isn
      
      read-only access to these files is currently disallowed by a
      neverallow rule. Relax the rules to allow read-only access to the
      shell user if desired.
      
      No new SELinux rules are added or deleted by this change. This is
      only a relaxation in what's allowed for vendor specific policy.
      
      Bug: 17600278
      Change-Id: I13f33f996c077918dce70a5cff31a87eac436678
      200a9f0e
    • Nick Kralevich's avatar
      relax neverallow rules on NETLINK_KOBJECT_UEVENT sockets · 642b8042
      Nick Kralevich authored
      Netlink uevent sockets are used by the kernel to inform userspace
      when certain events occur, for example, when new hardware is added
      or removed. This allows userspace to take some action based on those
      messages.
      
      Relax the neverallow rule for NETLINK_KOBJECT_UEVENT sockets.
      Certain device specific app domains, such as system_app, may have a
      need to receive messages from this socket type.
      
      Continue to neverallow NETLINK_KOBJECT_UEVENT sockets for untrusted_app.
      These sockets have been the source of rooting attacks in Android
      in the past, and it doesn't make sense to expose this to untrusted_apps.
      
      No new SELinux rules are introduced by this change. This is an
      adjustment of compile time assertions only.
      
      Bug: 17525863
      Change-Id: I3e538dc8096dc23b9678bcd20e3c1e742c21c967
      642b8042
  5. Sep 20, 2014
    • Stephen Smalley's avatar
      Define types for userdata and cache block devices. · dd053a9b
      Stephen Smalley authored
      
      Introduce separate types for the userdata and cache block
      devices so that we can assign them and allow access to them
      in device-specific policy without allowing access to any other
      block device (e.g. system).  These types will only be used if
      assigned to device node paths in the device-specific file_contexts
      configuration.  Otherwise, this change will have no impact - the
      userdata and cache block devices will continue to default to block_device
      type.
      
      To avoid breakage when these new types are assigned to the userdata
      block device, allow access by vold and uncrypt, but auditallow
      these accesses to confirm that these are required.
      
      Change-Id: I99d24f06506f51ebf1d186d9c393b3cad60e98d7
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      dd053a9b
    • dcashman's avatar
      Add support for factory reset protection. · f37ce3f3
      dcashman authored
      Address the following denials:
      <12>[  417.732129] type=1400 audit(365340.189:47): avc: denied { read } for pid=1737 comm="Binder_2" name="mmcblk0p18" dev="tmpfs" ino=12406 scontext=u:r:system_server:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0
      <12>[  417.882126] type=1400 audit(365340.339:48): avc: denied { read } for pid=1737 comm="Binder_2" name="mmcblk0p18" dev="tmpfs" ino=12406 scontext=u:r:system_server:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0
      
      (cherrypick of commit 47bd7300)
      
      Bug: 16710840
      Change-Id: I8cb5b4b17dffe14f0bf05d63eb8f6ab8d5c09f53
      f37ce3f3
    • Nick Kralevich's avatar
    • Nick Kralevich's avatar
      b4c10e98
  6. Sep 18, 2014
    • Nick Kralevich's avatar
      Remove /dev/log/* access · a10bfd88
      Nick Kralevich authored
      The kernel driver has been deprecated by the new userspace
      driver. Don't continue to allow access to the old driver.
      
      Maintain the labeling on /dev/log/* for now, just in case.
      
      Bug: 13505761
      Change-Id: Ibf8ef3af6274ede4262aada9222eaf63f63307b4
      a10bfd88
  7. Sep 15, 2014
  8. Sep 13, 2014
    • Christopher Ferris's avatar
      Allow dumpstate to read /system/bin executables. · e7d13673
      Christopher Ferris authored
      On 64 bit systems, it's necessary to read the /system/bin executables
      elf header to determine if it's a 32 bit or 64 bit executable to
      contact the correct debuggerd service.
      
      Bug: 17487122
      
      (cherry picked from commit 04f3d790)
      
      Change-Id: Ib7835ffac1811a5aef54a250689287c1666720ef
      e7d13673
  9. Sep 11, 2014
  10. Sep 08, 2014
    • Stephen Smalley's avatar
      Annotate MLS trusted subjects and objects. · 45731c70
      Stephen Smalley authored
      
      When using MLS (i.e. enabling levelFrom= in seapp_contexts),
      certain domains and types must be exempted from the normal
      constraints defined in the mls file.  Beyond the current
      set, adbd, logd, mdnsd, netd, and servicemanager need to
      be able to read/write to any level in order to communicate
      with apps running with any level, and the logdr and logdw
      sockets need to be writable by apps running with any level.
      
      This change has no impact unless levelFrom= is specified in
      seapp_contexts, so by itself it is a no-op.
      
      Change-Id: I36ed382b04a60a472e245a77055db294d3e708c3
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      45731c70
  11. Sep 04, 2014
    • Nick Kralevich's avatar
      sdcardd: grant unmount · 5fc825c9
      Nick Kralevich authored
      If the sdcard daemon is restarted (crash or otherwise), one of the first
      things it attempts to do is umount the previously mounted /mnt/shell/emulated
      fuse filesystem, which is denied by SELinux with the following denial:
      
        sdcard  : type=1400 audit(0.0:6997): avc: denied { unmount } for scontext=u:r:sdcardd:s0 tcontext=u:object_r:fuse:s0 tclass=filesystem permissive=0
      
      Allow the operation.
      
      Steps to reproduce:
      
        1) adb shell into the device and su to root
        2) run "kill -9 [PID OF SDCARD]
      
      Expected:
      
        sdcard daemon successfully restarts without error message.
      
      Actual:
      
        SELinux denial above, plus attempts to mount a new filesystem
        on top of the existing filesystem.
      
      (cherrypicked from commit abfd427a)
      
      Bug: 17383009
      Change-Id: I386bfc98e2b5b32b1d11408f7cfbd6e3c1af68f4
      5fc825c9
  12. Sep 02, 2014
  13. Sep 01, 2014
    • Mark Salyzyn's avatar
      logd: permit app access to clear logs · 60f0be84
      Mark Salyzyn authored
      I/auditd(19949): type=1400 audit(0.0:71): avc:  denied  { write } for  comm="logcat" name="logd" dev="tmpfs" ino=5924 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:logd_socket:s0 tclass=sock_file
      
      Bug: 17323719
      Change-Id: Id8399195196ffad884eef98030d544c68ed0596f
      60f0be84
  14. Aug 29, 2014
  15. Aug 27, 2014
    • Nick Kralevich's avatar
      support kernel writes to external SDcards · 4c6b1350
      Nick Kralevich authored
      The kernel, when it creates a loop block device, starts a new
      kernel thread "loop0" (drivers/block/loop.c). This kernel thread,
      which performs writes on behalf of other processes, needs read/write
      privileges to the sdcard. Allow it.
      
      Steps to reproduce:
      0) Get device with external, removable sdcard
      1) Run: "adb install -s foo.apk"
      
      Expected:
      
        APK installs successfully.
      
      Actual:
      
        APK fails to install. Error message:
      
          Vold  E  Failed to write superblock (I/O error)
          loop0  W  type=1400 audit(0.0:3123): avc: denied { read } for path="/mnt/secure/asec/smdl1645334795.tmp.asec" dev="mmcblk1p1" ino=528 scontext=u:r:kernel:s0 tcontext=u:object_r:vfat:s0 tclass=file permissive=0
          PackageHelper  E  Failed to create secure container smdl1645334795.tmp
          DefContainer  E  Failed to create container smdl1645334795.tmp
      
      Bug: 17158723
      Change-Id: I4aa86e372cc55348f6b8becfa17bd4da583925d4
      4c6b1350
  16. Aug 25, 2014
    • Nick Kralevich's avatar
      remove appdomain's ability to examine all of /proc · 0d3f7ddc
      Nick Kralevich authored
      Remove the CTS specific rule which allows appdomain processes
      to view /proc entries for the rest of the system. With this change,
      an SELinux domain will only be able to view it's own /proc
      entries, e.g. untrusted_app can only view /proc entries for other
      untrusted_app, system_app can only view /proc entries for other
      system_apps, etc.
      
      /proc contains sensitive information, and we want to avoid
      leaking this information between app security domains.
      
      Bug: 17254920
      Change-Id: I59da37dde00107a5ab123df3b79a84afa855339f
      0d3f7ddc
    • Nick Kralevich's avatar
  17. Aug 22, 2014
  18. Aug 21, 2014
    • Nick Kralevich's avatar
      tighten up neverallow rules for init binder operations · 65feafce
      Nick Kralevich authored
      Init never uses binder, so allowing binder related operations
      for init never makes sense. Disallow all binder opertions for
      init.
      
      This change expands on commit a730e50b,
      disallowing any init binder operation, not just call operations, which
      may be accidentally added by blindly running audit2allow.
      
      Change-Id: I12547a75cf68517d54784873846bdadcb60c5112
      65feafce
  19. Aug 19, 2014
    • dcashman's avatar
      Allow debuggerd read access to shared_relro files. · cd10eb95
      dcashman authored
      Addresses the following denial when debuggerd attempts to stat Webview mmap'd
      shared relro files on process crash.  Full read permissions may not be necessary:
      
      W/debuggerd(  185): type=1400 audit(0.0:97): avc: denied { search } for name="shared_relro" dev="mmcblk0p28" ino=618955 scontext=u:r:debuggerd:s0 tcontext=u:object_r:shared_relro_file:s0 tclass=dir
      
      Bug: 17101854
      Change-Id: I11eea85668ba033c554e5aab99b70a454fb75164
      cd10eb95
  20. Aug 15, 2014
  21. Aug 06, 2014
  22. Aug 07, 2014
    • dcashman's avatar
      Allow untrusted_app access to temporary apk files. · fbbe9e91
      dcashman authored
      Before actual installation, apks are put in a staging area where they are
      scanned by a verifier before completing the install flow.  This verifier runs as
      a priv-app, which is in the untrusted_app domain.  Allow untrusted_app
      read-access to these files.
      
      Bug: 16515815
      
      Change-Id: Ifedc12a33b1f53b62f45013e7b253dbc79b02a4e
      fbbe9e91
  23. Aug 06, 2014
  24. Aug 05, 2014
  25. Aug 01, 2014
    • Stephen Smalley's avatar
      Allow dumpstate to dump backtraces of certain native processes. · 77a236c9
      Stephen Smalley authored
      
      The list of processes comes from frameworks/native/cmds/dumpstate/utils.c.
      dumpstate calls dump_backtrace_to_file() for each such process, which
      asks debuggerd to dump the backtrace.
      
      Resolves denials such as:
       avc:  denied  { dump_backtrace } for  scontext=u:r:dumpstate:s0 tcontext=u:r:surfaceflinger:s0 tclass=debuggerd
       avc:  denied  { dump_backtrace } for  scontext=u:r:dumpstate:s0 tcontext=u:r:drmserver:s0 tclass=debuggerd
       avc:  denied  { dump_backtrace } for  scontext=u:r:dumpstate:s0 tcontext=u:r:mediaserver:s0 tclass=debuggerd
       avc:  denied  { dump_backtrace } for  scontext=u:r:dumpstate:s0 tcontext=u:r:sdcardd:s0 tclass=debuggerd
      
      Change-Id: Idbfb0fef0aac138073b7217b7dbad826a1193098
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      77a236c9
    • dcashman's avatar
      3fe1bcbb
  26. Jul 29, 2014
    • Stephen Smalley's avatar
      Fix neverallow rules to eliminate CTS SELinuxTest warnings. · 21ada26d
      Stephen Smalley authored
      
      Fix two neverallow rules that yield Invalid SELinux context
      warnings from the CTS SELinuxTest.
      
      For transitions from app domains, we only need to check
      { domain -appdomain } (i.e. domains other than app domains),
      not ~appdomain (i.e. all types other than app domains).  Otherwise
      SELinuxTest tries to generate contexts with the r role and
      non-domain types for testing since the target class is process,
      and such contexts are invalid.
      
      For keeping file_type and fs_type exclusive, we only need to
      check associate permission, not all filesystem permissions, as
      only associate takes a file type as the source context.  Otherwise
      SELinuxTest tries to generate contexts with the r role and
      non-domain types for testing filesystem permissions other than
      associate, since the source of such checks is normally a process
      context.
      
      Change-Id: I6c2f63f4786d75294a6938613ba14b64212fc802
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      21ada26d
    • dcashman's avatar
      Generate selinux_policy.xml as part of CTS build. · 704741a5
      dcashman authored
      Bug: 16563899
      Bug: 14251916
      Change-Id: Id3172b73f10186ba361caf6b7333e5d2a0648475
      704741a5
Loading