Skip to content
Snippets Groups Projects
  1. Jun 18, 2014
    • Stephen Smalley's avatar
      Prevent adding transitions to kernel or init domains. · bac4ccce
      Stephen Smalley authored
      
      Add neverallow rules to prohibit adding any transitions into
      the kernel or init domains.  Rewrite the domain self:process
      rule to use a positive permission list and omit the transition
      and dyntransition permissions from this list as well as other
      permissions only checked when changing contexts.  This should be
      a no-op since these permissions are only checked when
      changing contexts but avoids needing to exclude kernel or init
      from the neverallow rules.
      
      Change-Id: Id114b1085cec4b51684c7bd86bd2eaad8df3d6f8
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      bac4ccce
    • Stephen Smalley's avatar
      Allow mounting of usbfs. · 718bf84b
      Stephen Smalley authored
      
      Addresses denials such as:
      avc:  denied  { mount } for  pid=5 comm="kworker/u:0" name="/" dev=usbfs ino=3234 scontext=u:r:kernel:s0 tcontext=u:object_r:usbfs:s0 tclass=filesystem
      
      Change-Id: I1db52193e6a2548c37a7809ef44cf7fd3357326d
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      718bf84b
  2. Jun 17, 2014
  3. Jun 16, 2014
    • Nick Kralevich's avatar
      Fix SELinux policies to allow resource overlays. · fad4d5fb
      Nick Kralevich authored
      The following commits added support for runtime resource overlays.
      
        New command line tool 'idmap'
        * 65a05fd56dbc9fd9c2511a97f49c445a748fb3c5
        Runtime resource overlay, iteration 2
        * 48d22323ce39f9aab003dce74456889b6414af55
        Runtime resource overlay, iteration 2, test cases
        * ad6ed950dbfa152c193dd7e49c369d9e831f1591
      
      During SELinux tightening, support for these runtime resource
      overlays was unknowingly broken. Fix it.
      
      This change has been tested by hackbod and she reports that
      everything is working after this change. I haven't independently
      verified the functionality.
      
      Test cases are available for this by running:
        * python frameworks/base/core/tests/overlaytests/testrunner.py
      
      Change-Id: I1c70484011fd9041bec4ef34f93f7a5509906f40
      fad4d5fb
    • Stephen Smalley's avatar
      Define contextmount_type attribute and add it to oemfs. · d2503ba8
      Stephen Smalley authored
      
      Several device-specific policy changes with the same Change-Id
      also add this attribute to device-specific types.
      
      Change-Id: I09e13839b1956f61875a38844fe4fc3c911ea60f
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      d2503ba8
    • Stephen Smalley's avatar
      Restrict use of context= mount options. · 75e2ef92
      Stephen Smalley authored
      
      Prior to this change, the init and recovery domains were
      allowed unrestricted use of context= mount options to force
      all files within a given filesystem to be treated as having a
      security context specified at mount time.  The context= mount
      option can be used in device-specific fstab.<board> files
      to assign a context to filesystems that do not support labeling
      such as vfat where the default label of sdcard_external is not
      appropriate (e.g. /firmware on hammerhead).
      
      Restrict the use of context= mount options to types marked with the
      contextmount_type attribute, and then remove write access from
      such types from unconfineddomain and prohibit write access to such
      types via neverallow.  This ensures that the no write to /system
      restriction cannot be bypassed via context= mount.
      
      Change-Id: I4e773fadc9e11328d13a0acec164124ad6e840c1
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      75e2ef92
    • Nick Kralevich's avatar
      Don't allow types which are both file_type and fs_type · 48212742
      Nick Kralevich authored
      It's a bug to have a type with both the file_type and fs_type
      attribute. A type should be declared with either file_type,
      or fs_type, but not both.
      
      Create a neverallow rule which detects this situation. This works
      because we have the following allow rule:
      
        allow fs_type self:filesystem associate;
      
      If a type is a file_type and an fs_type, the associate allow rule
      will conflict with this neverallow rule.
      
      Not sure if this is the cleanest way to accomplish this, but it
      seems to work.
      
      Change-Id: Ida387b1df260efca15de38ae7a66ed25e353acaa
      48212742
  4. Jun 15, 2014
    • Nick Kralevich's avatar
      recovery: Allow exec_type on dirs, read for /dev · ff409bb4
      Nick Kralevich authored
      When applying a file based OTA, the recovery scripts sometimes
      transiently label a directory as an exec_type. This occurs on
      hammerhead when the OTA generation scripts generate lines of the
      form:
      
        set_metadata_recursive("/system/vendor/bin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:vss_exec:s0");
        set_metadata("/system/vendor/bin", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
      
      which has the effect of transiently labeling the /system/vendor/bin
      directory as vss_exec.
      
      Allow this behavior for now, even though it's obviously a bug.
      
      Also, allow recovery to read through the /dev directory.
      
      Addresses the following denials:
        avc:  denied  { read } for  pid=143 comm="recovery" name="/" dev="tmpfs" ino=8252 scontext=u:r:recovery:s0 tcontext=u:object_r:device:s0 tclass=dir
        avc:  denied  { open } for  pid=143 comm="recovery" name="/" dev="tmpfs" ino=8252 scontext=u:r:recovery:s0 tcontext=u:object_r:device:s0 tclass=dir
        avc:  denied  { relabelto } for  pid=142 comm="update_binary" name="bin" dev="mmcblk0p25" ino=1438 scontext=u:r:recovery:s0 tcontext=u:object_r:vss_exec:s0 tclass=dir
        avc:  denied  { getattr } for  pid=142 comm="update_binary" path="/system/vendor/bin" dev="mmcblk0p25" ino=1438 scontext=u:r:recovery:s0 tcontext=u:object_r:vss_exec:s0 tclass=dir
        avc:  denied  { setattr } for  pid=142 comm="update_binary" name="bin" dev="mmcblk0p25" ino=1438 scontext=u:r:recovery:s0 tcontext=u:object_r:vss_exec:s0 tclass=dir
        avc:  denied  { relabelfrom } for  pid=142 comm="update_binary" name="bin" dev="mmcblk0p25" ino=1438 scontext=u:r:recovery:s0 tcontext=u:object_r:vss_exec:s0 tclass=dir
      
      Bug: 15575013
      Change-Id: I743bea356382d3c23c136465dc5b434878370127
      ff409bb4
  5. Jun 13, 2014
  6. Jun 11, 2014
  7. Jun 14, 2014
    • Nick Kralevich's avatar
      system_server profile access · a76d9ddf
      Nick Kralevich authored
      Still not fixed. *sigh*
      
      Addresses the following denial:
      
      <4>[   40.515398] type=1400 audit(15842931.469:9): avc: denied { read } for pid=814 comm="system_server" name="profiles" dev="mmcblk0p28" ino=105874 scontext=u:r:system_server:s0 tcontext=u:object_r:dalvikcache_profiles_data_file:s0 tclass=dir
      
      Change-Id: I705a4cc9c508200ace46780c18b7112b62f27994
      a76d9ddf
  8. Jun 13, 2014
  9. Jun 12, 2014
  10. Jun 13, 2014
    • Nick Kralevich's avatar
      runas: allow pipe communication from the shell · 6c9c5888
      Nick Kralevich authored
      run-as won't communicate with shell via pipes. Allow it.
      
        nnk@nnk:~$ adb shell "cat /dev/zero | run-as com.google.foo sh -c 'cat'"
        /system/bin/sh: cat: <stdout>: Broken pipe
      
        <4>[ 1485.483517] type=1400 audit(1402623577.085:25): avc: denied { read } for pid=6026 comm="run-as" path="pipe:[29823]" dev="pipefs" ino=29823 scontext=u:r:runas:s0 tcontext=u:r:shell:s0 tclass=fifo_file
      
      read is definitely needed. Not sure about write, but adding it just
      in case.
      
      Change-Id: Ifdf838b0df79a5f1e9559af57c2d1fdb8c41a201
      6c9c5888
  11. Jun 10, 2014
  12. Jun 12, 2014
    • Stephen Smalley's avatar
      Make the mediaserver domain enforcing. · f0ffff0b
      Stephen Smalley authored
      
      Change-Id: Ib693b563c2db6abc02cf7dbeb12ed61c09734fa8
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      f0ffff0b
    • Nick Kralevich's avatar
      Remove world-read access to /data/dalvik-cache/profiles · 86703051
      Nick Kralevich authored
      Remove /data/dalvik-cache/profiles from domain. Profiling information
      leaks data about how people interact with apps, so we don't want
      the data to be available in all SELinux domains.
      
      Add read/write capabilities back to app domains, since apps need to
      read/write profiling data.
      
      Remove restorecon specific rules. The directory is now created by
      init, not installd, so installd doesn't need to set the label.
      
      Change-Id: Ic1b44009faa30d704855e97631006c4b990a4ad3
      86703051
    • Lorenzo Colitti's avatar
      Allow clatd to read from packet sockets and write to raw sockets · 6cd57a43
      Lorenzo Colitti authored
      This addresses the following denials that occur when switching
      clatd from an IPv6 tun interface to packet and raw sockets:
      
      avc: denied { net_raw } for pid=3540 comm="clatd" capability=13 scontext=u:r:clatd:s0 tcontext=u:r:clatd:s0 tclass=capability
      avc: denied { create } for pid=3540 comm="clatd" scontext=u:r:clatd:s0 tcontext=u:r:clatd:s0 tclass=packet_socket
      avc: denied { bind } for pid=3540 comm="clatd" scontext=u:r:clatd:s0 tcontext=u:r:clatd:s0 tclass=packet_socket
      avc: denied { setopt } for pid=3540 comm="clatd" scontext=u:r:clatd:s0 tcontext=u:r:clatd:s0 tclass=packet_socket
      avc: denied { read } for pid=3540 comm="clatd" path="socket:[19117]" dev="sockfs" ino=19117 scontext=u:r:clatd:s0 tcontext=u:r:clatd:s0 tclass=packet_socket
      
      Bug: 15340961
      Change-Id: I3c06e8e3e0cfc0869a7b73c803bbffe28369ee5e
      6cd57a43
    • Nick Kralevich's avatar
      b0ee91a4
    • Riley Spahn's avatar
      Add SELinux rules for service_manager. · f90c41f6
      Riley Spahn authored
      Add a service_mananger class with the verb add.
      Add a type that groups the services for each of the
      processes that is allowed to start services in service.te
      and an attribute for all services controlled by the service
      manager. Add the service_contexts file which maps service
      name to target label.
      
      Bug: 12909011
      Change-Id: I017032a50bc90c57b536e80b972118016d340c7d
      f90c41f6
  13. Jun 10, 2014
  14. Jun 11, 2014
    • Stephen Smalley's avatar
      Allow installd to chown/chmod app data files. · 89b9ff7e
      Stephen Smalley authored
      
      Addresses denials such as:
      avc: denied { setattr } for comm="installd" name="com.android.calendar_preferences_no_backup.xml" dev="mmcblk0p28" ino=1499393 scontext=u:r:installd:s0 tcontext=u:object_r:app_data_file:s0 tclass=file                                        avc: denied { setattr } for comm="installd" name="calendar_alerts.xml" dev="mmcblk0p28" ino=1499463 scontext=u:r:installd:s0 tcontext=u:object_r:app_data_file:s0 tclass=file
      avc: denied { setattr } for comm="installd" name="_has_set_default_values.xml" dev="mmcblk0p28" ino=1499428 scontext=u:r:installd:s0 tcontext=u:object_r:app_data_file:s0 tclass=file
      
      Change-Id: I0622f1a9d2b10e28be2616f91edf33bc048b4ac7
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      89b9ff7e
    • Stephen Smalley's avatar
      Allow dnsmasq to inherit/use netd UDP socket. · 7c11bdc4
      Stephen Smalley authored
      
      Addresses denials such as:
      avc: denied { read write } for comm="dnsmasq" path="socket:[1054090]" dev="sockfs" ino=1054090 scontext=u:r:dnsmasq:s0 tcontext=u:r:netd:s0 tclass=udp_socket
      This may not be needed (need to check netd to see if it should be closing
      all of these sockets before exec'ing other programs), but should be harmless.
      
      Change-Id: I77c7af5e050e039fd48322914eeabbcb8a716040
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      7c11bdc4
    • Stephen Smalley's avatar
      Refactor the shell domains. · 42fb824c
      Stephen Smalley authored
      
      Originally we used the shell domain for ADB shell only and
      the init_shell domain for the console service, both transitioned
      via automatic domain transitions on sh.  So they originally
      shared a common set of rules.  Then init_shell started to be used
      for sh commands invoked by init.<board>.rc files, and we switched
      the console service to just use the shell domain via seclabel entry
      in init.rc.  Even most of the sh command instances in init.<board>.rc
      files have been converted to use explicit seclabel options with
      more specific domains (one lingering use is touch_fw_update service
      in init.grouper.rc).  The primary purpose of init_shell at this point
      is just to shed certain permissions from the init domain when init invokes
      a shell command.  And init_shell and shell are quite different in
      their permission requirements since the former is used now for
      uid-0 processes spawned by init whereas the latter is used for
      uid-shell processes spawned by adb or init.
      
      Given these differences, drop the shelldomain attribute and take those
      rules directly into shell.te.  init_shell was an unconfined_domain(),
      so it loses nothing from this change.  Also switch init_shell to
      permissive_or_unconfined() so that we can see its actual denials
      in the future in userdebug/eng builds.
      
      Change-Id: I6e7e45724d1aa3a6bcce8df676857bc8eef568f0
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      42fb824c
  15. Jun 10, 2014
    • Ruchi Kandoi's avatar
      system_server: Adds permission to system_server to write sysfs file · 13d58863
      Ruchi Kandoi authored
      
      Need this for changing the max_cpufreq and min_cpufreq for the low power
      mode.
      
      Denials:
      type=1400 audit(1402431554.756:14): avc: denied { write } for pid=854
      comm="PowerManagerSer" name="scaling_max_freq" dev="sysfs" ino=9175
      scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs_devices_system_cpu:s0
      tclass=file
      
      Change required for Change-Id: I1cf458c4f128818ad1286e5a90b0d359b6913bb8
      
      Change-Id: Ic5ce3c8327e973bfa1d53f298c07dcea1550b646
      Signed-off-by: default avatarRuchi <Kandoi&lt;kandoiruchi@google.com>
      13d58863
    • Nick Kralevich's avatar
      recovery: don't use single quote · f4e69028
      Nick Kralevich authored
      single quotes make the m4 parser think it's at the end of
      a block, and generates the following compile time warning:
      
        external/sepolicy/recovery.te:9:WARNING 'unrecognized character' at token ''' on line 7720:
      
      Change-Id: I2502f16f0d9ec7528ec0fc2ee65ad65635d0101b
      f4e69028
  16. Jun 09, 2014
    • Nick Kralevich's avatar
      dumpstate: allow pstore access · a8281adf
      Nick Kralevich authored
      Dumpstate reads from /sys/fs/pstore/console-ramoops when generating
      a bug report. Allow it.
      
      Addresses the following denials:
        <12>[ 2187.362750] type=1400 audit(1402346777.139:9): avc: denied { search } for pid=4155 comm="dumpstate" name="/" dev="pstore" ino=9954 scontext=u:r:dumpstate:s0 tcontext=u:object_r:pstorefs:s0 tclass=dir permissive=1
        <12>[ 2187.363025] type=1400 audit(1402346777.139:10): avc: denied { getattr } for pid=4155 comm="dumpstate" path="/sys/fs/pstore/console-ramoops" dev="pstore" ino=9955 scontext=u:r:dumpstate:s0 tcontext=u:object_r:pstorefs:s0 tclass=file permissive=1
        <12>[ 2187.363185] type=1400 audit(1402346777.139:11): avc: denied { read } for pid=4155 comm="dumpstate" name="console-ramoops" dev="pstore" ino=9955 scontext=u:r:dumpstate:s0 tcontext=u:object_r:pstorefs:s0 tclass=file permissive=1
        <12>[ 2187.363321] type=1400 audit(1402346777.139:12): avc: denied { open } for pid=4155 comm="dumpstate" path="/sys/fs/pstore/console-ramoops" dev="pstore" ino=9955 scontext=u:r:dumpstate:s0 tcontext=u:object_r:pstorefs:s0 tclass=file permissive=1
      
      Change-Id: Ia20b7a03ed8e0c61b023eea93415a50af82e1bbf
      a8281adf
Loading