Skip to content
Snippets Groups Projects
  1. Mar 28, 2017
    • Jeff Vander Stoep's avatar
      Ban vendor components access to core data types · 4a478c47
      Jeff Vander Stoep authored
      Vendor and system components are only allowed to share files by
      passing open FDs over HIDL. Ban all directory access and all file
      accesses other than what can be applied to an open file:
      stat/read/write/append.
      
      This commit marks core data types as core_data_file_type and bans
      access to non-core domains with an exemption for apps. A temporary
      exemption is also granted to domains that currently rely on
      access with TODOs and bug number for each exemption.
      
      Bug: 34980020
      Test: Build and boot Marlin. Make phone call, watch youtube video.
            No new denials observed.
      Change-Id: I320dd30f9f0a5bf2f9bb218776b4bccdb529b197
      4a478c47
  2. Mar 18, 2017
    • Alex Klyubin's avatar
      Switch Boot Control HAL policy to _client/_server · 09d13e73
      Alex Klyubin authored
      This switches Boot Control HAL policy to the design which enables us
      to conditionally remove unnecessary rules from domains which are
      clients of Boot Control HAL.
      
      Domains which are clients of Boot Control HAL, such as update_server,
      are granted rules targeting hal_bootctl only when the Boot Control HAL
      runs in passthrough mode (i.e., inside the client's process). When the
      HAL runs in binderized mode (i.e., in another process/domain, with
      clients talking to the HAL over HwBinder IPC), rules targeting
      hal_bootctl are not granted to client domains.
      
      Domains which offer a binderized implementation of Boot Control HAL,
      such as hal_bootctl_default domain, are always granted rules targeting
      hal_bootctl.
      
      P. S. This commit removes direct access to Boot Control HAL from
      system_server because system_server is not a client of this HAL. This
      commit also removes bootctrl_block_device type which is no longer
      used. Finally, boot_control_hal attribute is removed because it is now
      covered by the hal_bootctl attribute.
      
      Test: Device boots up, no new denials
      Test: Reboot into recovery, sideload OTA update succeeds
      Test: Apply OTA update via update_engine:
            1. make dist
            2. Ensure device has network connectivity
            3. ota_call.py -s <serial here> out/dist/sailfish-ota-*.zip
      Bug: 34170079
      Change-Id: I9c410c092069e431a3852b66c04c4d2a9f1a25cf
      09d13e73
  3. Feb 24, 2017
  4. Jan 26, 2017
    • William Roberts's avatar
      te_macros: introduce add_service() macro · 606d2fd6
      William Roberts authored
      
      Introduce the add_service() macro which wraps up add/find
      permissions for the source domain with a neverallow preventing
      others from adding it. Only a particular domain should
      add a particular service.
      
      Use the add_service() macro to automatically add a neverallow
      that prevents other domains from adding the service.
      
      mediadrmserver was adding services labeled mediaserver_service.
      Drop the add permission as it should just need the find
      permission.
      
      Additionally, the macro adds the { add find } permission which
      causes some existing neverallow's to assert. Adjust those
      neverallow's so "self" can always find.
      
      Test: compile and run on hikey and emulator. No new denials were
      found, and all services, where applicable, seem to be running OK.
      
      Change-Id: Ibbd2a5304edd5f8b877bc86852b0694732be993c
      Signed-off-by: default avatarWilliam Roberts <william.c.roberts@intel.com>
      606d2fd6
  5. Nov 21, 2016
    • Connor O'Brien's avatar
      Add permissions for hal_boot · 12443b7a
      Connor O'Brien authored
      
      The service running the boot control HAL needs the permissions
      provided by the boot_control_hal attribute. update_engine and
      update_verifier still also need these permissions in order
      to successfully call the new HAL in pass-through mode, but also
      need permission to call the new service.
      
      Bug: 31864052
      Test: Built and confirmed no permission denials.
      Change-Id: I2a6fdd5cf79b9e461d7cc14bd5b7abd6481ed911
      Signed-off-by: default avatarConnor O'Brien <connoro@google.com>
      12443b7a
  6. Nov 18, 2016
  7. Nov 15, 2016
    • Alex Deymo's avatar
      Move boot_control_hal attribute to hal_boot domain · 1f329465
      Alex Deymo authored
      Grant boot_control_hal permissions to the hal_boot service;
      update_engine and update_verifier can call that service rather
      than using those permissions themselves.
      
      Bug: 31864052
      Test: `bootctl set-active-boot-slot 1`
      Change-Id: I5188bc32e7933d4a0f5135b3246df119d3523d69
      1f329465
  8. 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
  9. Sep 13, 2016
    • Tao Bao's avatar
      Add ota_package_file label for OTA packages. · e06ed7d0
      Tao Bao authored
      (cherry picked from commit 6c3f2831)
      
      Allow priv_app, uncrypt, update_engine to access the OTA packages at
      /data/ota_package (both A/B and non-A/B). GMSCore (priv_app) checks
      the existence of the folder, and downloads the package there if present.
      
      Bug: 28944800
      Change-Id: I3c0717861fce7f93b33874a99f6a4a55567612a5
      e06ed7d0
  10. 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
  11. 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
  12. Jun 22, 2016
    • Alex Deymo's avatar
      Allow update_engine to suspend/resume postinstall. · 9640bcfa
      Alex Deymo authored
      update_engine launches the postinstall process and can suspend and
      resume it by sending SIGSTOP and SIGCONT. This fixes the following
      denials:
      
      update_engine: type=1400 audit(0.0:88): avc: denied { sigstop } for scontext=u:r:update_engine:s0 tcontext=u:r:postinstall:s0 tclass=process permissive=1
      update_engine: type=1400 audit(0.0:89): avc: denied { signal } for scontext=u:r:update_engine:s0 tcontext=u:r:postinstall:s0 tclass=process permissive=1
      
      Bug: 28959137
      TEST=`update_engine_client --suspend ; update_engine_client --resume` while the device is running postinstall.
      
      (cherry picked from commit 108b74a1)
      
      Change-Id: Iec8e10fe0cfda5c0764d2e5ad90ea1c6dd13dab2
      9640bcfa
  13. Jun 21, 2016
    • Alex Deymo's avatar
      Allow update_engine to suspend/resume postinstall. · 108b74a1
      Alex Deymo authored
      update_engine launches the postinstall process and can suspend and
      resume it by sending SIGSTOP and SIGCONT. This fixes the following
      denials:
      
      update_engine: type=1400 audit(0.0:88): avc: denied { sigstop } for scontext=u:r:update_engine:s0 tcontext=u:r:postinstall:s0 tclass=process permissive=1
      update_engine: type=1400 audit(0.0:89): avc: denied { signal } for scontext=u:r:update_engine:s0 tcontext=u:r:postinstall:s0 tclass=process permissive=1
      
      Bug: 28959137
      TEST=`update_engine_client --suspend ; update_engine_client --resume` while the device is running postinstall.
      
      Change-Id: I9890ad0ff7fe04bae1a54fa07c61aafca8de8e66
      108b74a1
  14. Jun 09, 2016
    • Alex Deymo's avatar
      Allow update_engine to write BCB. · fd867489
      Alex Deymo authored
      update_engine can trigger a factory-reset when the update to an older
      version or an incompatible version requires it.
      
      Bug: 28700985
      TEST=Updated a device with a factory-reset required and the BCB was
      written.
      
      (cherry picked from commit 15105ce7)
      
      Change-Id: I7d2efc0e7f164d618cbb3fe190882e4fa8a89bac
      fd867489
    • Alex Deymo's avatar
      Allow update_engine to write BCB. · 15105ce7
      Alex Deymo authored
      update_engine can trigger a factory-reset when the update to an older
      version or an incompatible version requires it.
      
      Bug: 28700985
      TEST=Updated a device with a factory-reset required and the BCB was
      written.
      
      Change-Id: Ief3dd386a14b669141d75b561122a3095efc0a6f
      15105ce7
  15. Jun 06, 2016
    • Tao Bao's avatar
      Add ota_package_file label for OTA packages. · 6c3f2831
      Tao Bao authored
      Allow priv_app, uncrypt, update_engine to access the OTA packages at
      /data/ota_package (both A/B and non-A/B). GMSCore (priv_app) checks
      the existence of the folder, and downloads the package there if present.
      
      Bug: 28944800
      Change-Id: I3c0717861fce7f93b33874a99f6a4a55567612a5
      6c3f2831
  16. Apr 22, 2016
    • Alex Deymo's avatar
      Move boot_control HAL permissions to an attribute. · 7b8413db
      Alex Deymo authored
      The boot_control HAL is library loaded by our daemons (like
      update_engine and update_verifier) that interacts with the bootloader.
      The actual implementation of this library is provided by the vendor and
      its runtime permissions are tied to this implementation which varies a
      lot based on how the bootloader and the partitions it uses are
      structured.
      
      This patch moves these permissions to an attribute so the attribute can
      be expanded on each device without the need to repeat that on each one
      of our daemons using the boot_control HAL.
      
      Bug: 27107517
      
      (cherry picked from commit 0f8d9261)
      
      Change-Id: Icb2653cb89812c0de81381ef48280e4ad1e9535c
      7b8413db
    • Alex Deymo's avatar
      Move boot_control HAL permissions to an attribute. · 0f8d9261
      Alex Deymo authored
      The boot_control HAL is library loaded by our daemons (like
      update_engine and update_verifier) that interacts with the bootloader.
      The actual implementation of this library is provided by the vendor and
      its runtime permissions are tied to this implementation which varies a
      lot based on how the bootloader and the partitions it uses are
      structured.
      
      This patch moves these permissions to an attribute so the attribute can
      be expanded on each device without the need to repeat that on each one
      of our daemons using the boot_control HAL.
      
      Bug: 27107517
      Change-Id: Idfe6a208720b49802b03f70fee4a3e73030dae2e
      0f8d9261
  17. Apr 05, 2016
    • Alex Deymo's avatar
      Revert "Remove "exec_type" from postinstall_file." · f43af3a6
      Alex Deymo authored
      We decided a different approach for these policies in the
      meeting today.
      
      This reverts commit 5507fa66.
      
      Bug: 28008031
      Change-Id: Id86520660bdbc3fc36ac4acf51082547d6a559eb
      f43af3a6
    • Alex Deymo's avatar
      Remove "exec_type" from postinstall_file. · 5507fa66
      Alex Deymo authored
      update_engine had an automatic transition to the "postinstall" domain
      when executing a "postinstall_file" which required it to be an
      entrypoint. This patch removes this automatic transition and the
      associated rules in update_engine.te, removing as well the need to
      add exec_type to postinstall_file. Instead, update_engine now makes
      this transition explicit by calling setexeccon(3).
      
      Bug: 28008031
      TEST=make dist; Deployed an update to edison-eng: postinstall runs as "postinstall" domain.
      
      Change-Id: I2b799ac4808c90b010a9e776aaa7015020a94b49
      5507fa66
  18. Mar 04, 2016
    • Alex Deymo's avatar
      New postinstall domain and rules to run post-install program. · a52b5618
      Alex Deymo authored
      When using the A/B updater, a device specific hook is sometimes needed
      to run after the new partitions are updated but before rebooting into
      the new image. This hook is referred to throughout the code as the
      "postinstall" step.
      
      This patch creates a new execution domain "postinstall" which
      update_engine will use to run said hook. Since the hook needs to run
      from the new image (namelly, slot "B"), update_engine needs to
      temporarly mount this B partition into /postinstall and then run a
      program from there.
      
      Since the new program in B runs from the old execution context in A, we
      can't rely on the labels set in the xattr in the new filesystem to
      enforce the policies baked into the old running image. Instead, when
      temporarily mounting the new filesystem in update_engine, we override
      all the new file attributes with the new postinstall_file type by
      passing "context=u:object_r:postinstall_file:s0" to the mount syscall.
      This allows us to set new rules specific to the postinstall environment
      that are consistent with the rules in the old system.
      
      Bug: 27177071
      TEST=Deployed a payload with a trivial postinstall script to edison-eng.
      
      (cherry picked from commit 6cb2c893)
      
      Change-Id: I49a529eecf1ef0524819470876ef7c8c2659c7ef
      a52b5618
  19. Mar 02, 2016
    • Alex Deymo's avatar
      New postinstall domain and rules to run post-install program. · 6cb2c893
      Alex Deymo authored
      When using the A/B updater, a device specific hook is sometimes needed
      to run after the new partitions are updated but before rebooting into
      the new image. This hook is referred to throughout the code as the
      "postinstall" step.
      
      This patch creates a new execution domain "postinstall" which
      update_engine will use to run said hook. Since the hook needs to run
      from the new image (namelly, slot "B"), update_engine needs to
      temporarly mount this B partition into /postinstall and then run a
      program from there.
      
      Since the new program in B runs from the old execution context in A, we
      can't rely on the labels set in the xattr in the new filesystem to
      enforce the policies baked into the old running image. Instead, when
      temporarily mounting the new filesystem in update_engine, we override
      all the new file attributes with the new postinstall_file type by
      passing "context=u:object_r:postinstall_file:s0" to the mount syscall.
      This allows us to set new rules specific to the postinstall environment
      that are consistent with the rules in the old system.
      
      Bug: 27177071
      TEST=Deployed a payload with a trivial postinstall script to edison-eng.
      
      Change-Id: Ib06fab92afb45edaec3c9c9872304dc9386151b4
      6cb2c893
  20. Feb 09, 2016
    • Tao Bao's avatar
      update_engine: Allow to access bootctrl_block_device. · 79db4e47
      Tao Bao authored
      update_engine needs to access bootctrl_block_device to get and set the slot to boot.
      avc: denied { write } for name="mmcblk0boot1" dev="tmpfs" ino=1266 scontext=u:r:update_engine:s0 tcontext=u:object_r:bootctrl_block_device:s0 tclass=blk_file
      avc: denied { open } for path="/dev/block/mmcblk0boot1" dev="tmpfs" ino=1266 scontext=u:r:update_engine:s0 tcontext=u:object_r:bootctrl_block_device:s0 tclass=blk_file
      
      Also track the name change of the native binder service.
      avc:  denied  { add } for service=android.os.UpdateEngineService pid=210 uid=0 scontext=u:r:update_engine:s0 tcontext=u:object_r:default_android_service:s0 tclass=service_manager
      
      Bug: 27106053
      Change-Id: Idbfef18578489db33fead0721e8f26d63db5ce09
      (cherry picked from commit 3ec34ceb)
      79db4e47
    • Tao Bao's avatar
      update_engine: Allow to access bootctrl_block_device. · 3ec34ceb
      Tao Bao authored
      update_engine needs to access bootctrl_block_device to get and set the slot to boot.
      avc: denied { write } for name="mmcblk0boot1" dev="tmpfs" ino=1266 scontext=u:r:update_engine:s0 tcontext=u:object_r:bootctrl_block_device:s0 tclass=blk_file
      avc: denied { open } for path="/dev/block/mmcblk0boot1" dev="tmpfs" ino=1266 scontext=u:r:update_engine:s0 tcontext=u:object_r:bootctrl_block_device:s0 tclass=blk_file
      
      Also track the name change of the native binder service.
      avc:  denied  { add } for service=android.os.UpdateEngineService pid=210 uid=0 scontext=u:r:update_engine:s0 tcontext=u:object_r:default_android_service:s0 tclass=service_manager
      
      Bug: 27106053
      Change-Id: Idbfef18578489db33fead0721e8f26d63db5ce09
      3ec34ceb
  21. Jan 26, 2016
    • Tao Bao's avatar
      Allow update_engine to use Binder IPC. · dce317cf
      Tao Bao authored
      Register service with servicemanager and name the context.
      
      avc: denied { call } for scontext=u:r:update_engine:s0 tcontext=u:r:servicemanager:s0 tclass=binder
      avc: denied { add } for service=android.os.IUpdateEngine scontext=u:r:update_engine:s0 tcontext=u:object_r:update_engine_service:s0 tclass=service_manager
      
      Also allow priv_app to communicate with update_engine.
      
      avc: denied { find } for service=android.os.IUpdateEngine scontext=u:r:priv_app:s0:c512,c768 tcontext=u:object_r:update_engine_service:s0 tclass=service_manager
      avc: denied { call } for scontext=u:r:priv_app:s0:c512,c768 tcontext=u:r:update_engine:s0 tclass=binder
      avc: denied { call } for scontext=u:r:update_engine:s0 tcontext=u:r:priv_app:s0 tclass=binder
      
      Change-Id: Ib4498717c1a72f5faab5ea04c636924ee4eb412c
      dce317cf
  22. Nov 21, 2015
    • Sen Jiang's avatar
      Add bspatch to update_engine_exec. · d33155be
      Sen Jiang authored
      This allow bspatch to have same perssion as update_engine.
      
      Also added a rule to allow update_engine to execute bspatch.
      
      Bug: 24478450
      Test: No more permission deny during delta update.
      
      Change-Id: If94bc703b2f3fc32f901f0d7f300934316d4e9a4
      d33155be
  23. Nov 19, 2015
    • David Zeuthen's avatar
      DO NOT MERGE Move update_engine policy to AOSP. · 500a598e
      David Zeuthen authored
      The update_engine daemon from Brillo is expected to be used also in
      Android so move its selinux policy to AOSP.
      
      Put update_engine in the whitelist (currently only has the recovery
      there) allowing it to bypass the notallow for writing to partititions
      labeled as system_block_device.
      
      Also introduce the misc_block_device dev_type as update_engine in some
      configurations may need to read/write the misc partition. Start
      migrating uncrypt to use this instead of overly broad
      block_device:blk_file access.
      
      Bug: 23186405
      Test: Manually tested with Brillo build.
      
      Change-Id: Icf8cdb4133d4bbdf14bacc6c0fa7418810ac307a
      (cherry picked from commit a10f789d)
      500a598e
  24. Nov 03, 2015
    • Jeff Vander Stoep's avatar
      Create attribute for moving perms out of domain · d22987b4
      Jeff Vander Stoep authored
      Motivation: Domain is overly permissive. Start removing permissions
      from domain and assign them to the domain_deprecated attribute.
      Domain_deprecated and domain can initially be assigned to all
      domains. The goal is to not assign domain_deprecated to new domains
      and to start removing domain_deprecated where it is not required or
      reassigning the appropriate permissions to the inheriting domain
      when necessary.
      
      Bug: 25433265
      Change-Id: I8b11cb137df7bdd382629c98d916a73fe276413c
      d22987b4
  25. Oct 07, 2015
    • David Zeuthen's avatar
      Move update_engine policy to AOSP. · a10f789d
      David Zeuthen authored
      The update_engine daemon from Brillo is expected to be used also in
      Android so move its selinux policy to AOSP.
      
      Put update_engine in the whitelist (currently only has the recovery
      there) allowing it to bypass the notallow for writing to partititions
      labeled as system_block_device.
      
      Also introduce the misc_block_device dev_type as update_engine in some
      configurations may need to read/write the misc partition. Start
      migrating uncrypt to use this instead of overly broad
      block_device:blk_file access.
      
      Bug: 23186405
      Test: Manually tested with Brillo build.
      
      Change-Id: Icf8cdb4133d4bbdf14bacc6c0fa7418810ac307a
      a10f789d
Loading