Skip to content
Snippets Groups Projects
  1. May 07, 2014
    • Stephen Smalley's avatar
      Label app data directories for system UID apps with a different type. · 91a4f8d4
      Stephen Smalley authored
      
      We were using system_data_file for the /data/data directories of
      system UID apps to match the DAC ownership of system UID shared with
      other system files.  However, we are seeing cases where files created
      in these directories must be writable by other apps, and we would like
      to avoid allowing write to system data files outside of these directories.
      So introduce a separate system_app_data_file type and assign it.
      This should also help protect against arbitrary writes by system UID
      apps to other system data directories.
      
      This resolves the following denial when cropping or taking a user photo
      for secondary users:
      avc:  denied  { write } for  path="/data/data/com.android.settings/cache/TakeEditUserPhoto2.jpg" dev="mmcblk0p28" ino=82120 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:system_data_file:s0 tclass=file
      
      avc:  denied  { write } for path="/data/data/com.android.settings/cache/CropEditUserPhoto.jpg" dev="mmcblk0p30" ino=602905 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:system_data_file:s0 tclass=file
      
      Bug: 14604553
      Change-Id: Ifa10e3283b07f6bd6ecc16eceeb663edfd756cea
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      91a4f8d4
  2. Apr 04, 2014
    • Stephen Smalley's avatar
      Coalesce shared_app, media_app, release_app into untrusted_app. · 9ba844fe
      Stephen Smalley authored
      
      This change folds the shared_app, media_app, and release_app
      domains into untrusted_app, reducing the set of app domains down
      to just distinct domains for the fixed UID apps (e.g. system_app, bluetooth,
      nfc, radio), a single domain for apps signed by the platform key
      (platform_app), and a single domain for all other apps (untrusted_app).
      Thus, SELinux only distinguishes when already distinguished by a predefined
      Android ID (AID) or by the platform certificate (which get the signature-only
      Android permissions and thus may require special OS-level accesses).
      
      It is still possible to introduce specific app domains for specific
      apps by adding signer and package stanzas to mac_permissions.xml,
      but this can be done on an as-needed basis for specialized apps that
      require particular OS-level permissions outside the usual set.
      
      As there is now only a single platform app domains, get rid of the
      platformappdomain attribute and platform_app_domain() macro.  We used
      to add mlstrustedsubject to those domains but drop this since we are not
      using MLS in AOSP presently; we can revisit which domains need it if/when
      we use MLS.
      
      Since we are dropping the shared, media, and release seinfo entries from
      seapp_contexts, drop them from mac_permissions.xml as well.  However,
      we leave the keys.conf entries in case someone wants to add a signer
      entry in the future for specific apps signed by those keys to
      mac_permissions.xml.
      
      Change-Id: I877192cca07360c4a3c0ef475f016cc273e1d968
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      9ba844fe
  3. Mar 28, 2014
    • Stephen Smalley's avatar
      Move shell entry up with other platform UID entries. · 6d8fa695
      Stephen Smalley authored
      
      This is a trivial change to seapp_contexts to force a relabel
      of /data/data directories by PMS/installd by yielding a
      different hash value for comparison against /data/system/seapp_hash.
      This change does not alter any actual app process or data directory
      labeling decisions.  The seapp_contexts entries are sorted upon
      loading by libselinux to match the precedence rules described
      in the comment header, so ordering in this file should not matter.
      
      This should not be merged before the code changes with the same Change-Id.
      
      Change-Id: Ie440cba2c96f0907458086348197e1506d31c1b6
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      6d8fa695
  4. Mar 14, 2014
  5. Mar 13, 2014
    • Stephen Smalley's avatar
      Get rid of separate platform_app_data_file type. · dc88dca1
      Stephen Smalley authored
      
      The original concept was to allow separation between /data/data/<pkgdir>
      files of "platform" apps (signed by one of the four build keys) and
      untrusted apps.  But we had to allow read/write to support passing of
      open files via Binder or local socket for compatibilty, and it seems
      that direct open by pathname is in fact used in Android as well,
      only passing the pathname via Binder or local socket.  So there is no
      real benefit to keeping it as a separate type.
      
      Retain a type alias for platform_app_data_file to app_data_file until
      restorecon /data/data support is in place to provide compatibility.
      
      Change-Id: Ic15066f48765322ad40500b2ba2801bb3ced5489
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      dc88dca1
  6. Feb 24, 2014
  7. Feb 19, 2014
    • Stephen Smalley's avatar
      Add support for and use new path= specifier in seapp_contexts. · 6139de50
      Stephen Smalley authored
      
      Extend check_seapp to accept the use of the new path= specifier
      in seapp_contexts and use it to ensure proper labeling of the cache
      subdirectory of com.android.providers.downloads for restorecon.
      
      After this change, restorecon /data/data/com.android.providers.downloads/cache
      does not change the context, leaving it in download_file rather than
      relabeling it to platform_app_data_file.
      
      Depends on Iddaa3931cfd4ddd5b9f62cd66989e1f26553baa1.
      
      Change-Id: Ief65b8c8dcb44ec701d53e0b58c52d6688cc2a14
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      6139de50
  8. Sep 17, 2013
    • Alex Klyubin's avatar
      1/2: Rename domain "system" to "system_server". · 1fdee11d
      Alex Klyubin authored
      This is a follow-up CL to the extraction of "system_app" domain
      from the "system" domain which left the "system" domain encompassing
      just the system_server.
      
      Since this change cannot be made atomically across different
      repositories, it temporarily adds a typealias "server" pointing to
      "system_server". Once all other repositories have been switched to
      "system_server", this alias will be removed.
      
      Change-Id: I90a6850603dcf60049963462c5572d36de62bc00
      1fdee11d
  9. Jun 27, 2013
    • Nick Kralevich's avatar
      Add "shell" to seapp_contexts · 86acb177
      Nick Kralevich authored
      In the process of taking a bugreport, "dumpstate -B" will instruct
      zygote to fire up com.android.shell, which runs as UID=2000.
      This transition was not included in seapp_contexts, so zygote
      didn't know how to properly set the context for the shell user.
      
      Add an entry to allow zygote to know what to do with UID=2000
      requests.
      
      Bug: 9588981
      Change-Id: I2e726be8d58437ef1de3bcbad3b897a97ed18e22
      86acb177
    • Nick Kralevich's avatar
      Add "shell" to seapp_contexts · 59444368
      Nick Kralevich authored
      In the process of taking a bugreport, "dumpstate -B" will instruct
      zygote to fire up com.android.shell, which runs as UID=2000.
      This transition was not included in seapp_contexts, so zygote
      didn't know how to properly set the context for the shell user.
      
      Add an entry to allow zygote to know what to do with UID=2000
      requests.
      
      Bug: 9588981
      Change-Id: I2e726be8d58437ef1de3bcbad3b897a97ed18e22
      59444368
  10. Mar 29, 2013
  11. Mar 28, 2013
  12. Mar 27, 2013
  13. Mar 20, 2013
    • Stephen Smalley's avatar
      Generalize levelFromUid support. · 38084146
      Stephen Smalley authored
      
      Introduce a levelFrom=none|app|user|all syntax for specifying
      per-app, per-user, or per-combination level assignment.
      levelFromUid=true|false remains valid syntax but is deprecated.
      levelFromUid=true is equivalent to levelFrom=app.
      
      Update check_seapp to accept the new syntax.
      Update seapp_contexts to document the new syntax and switch
      from levelFromUid=true to levelFrom=app.  No change in behavior.
      
      Change-Id: Ibaddeed9bc3e2586d524efc2f1faa5ce65dea470
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      38084146
  14. Nov 19, 2012
    • Stephen Smalley's avatar
      Update policy for Android 4.2 / latest master. · 61c80d5e
      Stephen Smalley authored
      
      Update policy for Android 4.2 / latest master.
      Primarily this consists of changes around the bluetooth subsystem.
      The zygote also needs further permissions to set up /storage/emulated.
      adbd service now gets a socket under /dev/socket.
      keystore uses the binder.
      
      Change-Id: I8c5aeb8d100313c75169734a0fa614aa974b3bfc
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      61c80d5e
  15. Oct 16, 2012
    • Joshua Brindle's avatar
      allow apps access to the keystore, dhcp/pptp fixes, wifi fixes and isolated_app access · f26d8130
      Joshua Brindle authored
      
      - allow all apps to connect to the keystore over unix socket
      - dhcp runs scripts in /system/etc/dhcpcd/dhcpcd-hooks and creates/removes lease files
      - mtp connects to dnsproxyd when a pptp vpn connection is established
      - allow appdomain to also open qtaguid_proc and release_app to read qtaguid_device
      - WifiWatchDog uses packet_socket when wifi comes up
      - apps interact with isolated_apps when an app uses an isolated service and uses sockets for that interaction
      - for apps with levelFromUid=true to interact with isolated_app, isolated_app must be an mlstrustedsubject
      
      Change-Id: I09ff676267ab588ad4c73f04d8f23dba863c5949
      Signed-off-by: default avatarJoshua Brindle <jbrindle@tresys.com>
      f26d8130
  16. Sep 24, 2012
    • Stephen Smalley's avatar
      Switch app_* and isolated to _app and _isolated in seapp_contexts. · 3ac1d26a
      Stephen Smalley authored
      
      The app_* syntax was a legacy of the original approach of looking up
      the username returned by getpwuid() and the original username encoding
      scheme by bionic.  With the recent changes to move away from this approach,
      there is no reason to retain that syntax.  Instead, just use _app to match
      app UIDs and _isolated to match isolated service UIDs.  The underscore
      prefix is to signify that these are not real usernames and to avoid
      conflicts with any system usernames.
      
      Requires a corresponding change to libselinux.
      
      Change-Id: Ic388a12c1c9d3e47386c8849db607140ef8a3d75
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      3ac1d26a
  17. Sep 20, 2012
  18. Jul 27, 2012
    • Stephen Smalley's avatar
    • Stephen Smalley's avatar
      Only enforce per-app process and file isolation via SELinux for third party... · b9760aa0
      Stephen Smalley authored
      Only enforce per-app process and file isolation via SELinux for third party apps, not platform apps.
      
      Platform (any of the apps signed by build keys, i.e. platform|release|shared|media) apps expect to be able to share files with each other or with third party apps by passing open files or pathnames over Binder.  Therefore, we switch to only enforcing the per-app process and file isolation via SELinux on third party apps, not platform apps.
      
      Make the platform app domains mlstrustedsubjects so that they can access any files created by third party apps.
      Introduce a new platform_app_data_file type for platform apps so that we can mark it as a mlstrustedobject and allow third party apps to read/write files created by the platform apps.
      Specify this new type for the platform app entries in seapp_contexts.
      Remove levelFromUid=true for the platform apps in seapp_contexts since we are no longer enforcing per-app separation among them.
      b9760aa0
  19. Jun 28, 2012
  20. Jan 04, 2012
Loading