Skip to content
Snippets Groups Projects
  • Alex Klyubin's avatar
    2a7f4fb0
    Assert apps can access only approved HwBinder services · 2a7f4fb0
    Alex Klyubin authored
    App domains which host arbitrary code must not have access to
    arbitrary HwBinder services. Such access unnecessarily increases the
    attack surface. The reason is twofold:
    1. HwBinder servers do not perform client authentication because HIDL
       currently does not expose caller UID information and, even if it
       did, many HwBinder services either operate at a layer below that of
       apps (e.g., HALs) or must not rely on app identity for
       authorization. Thus, to be safe, the default assumption is that
       a HwBinder service treats all its clients as equally authorized to
       perform operations offered by the service.
    2. HAL servers (a subset of HwBinder services) contain code with
       higher incidence rate of security issues than system/core
       components and have access to lower layes of the stack (all the way
       down to hardware) thus increasing opportunities for bypassing the
       Android security model.
    
    HwBinder services offered by core components (as opposed to vendor
    components) are considered safer because of point #2 above.
    
    Always same-process aka always-passthrough HwBinder services are
    considered safe for access by these apps. This is because these HALs
    by definition do not offer any additional access beyond what its
    client already as, because these services run in the process of the
    client.
    
    This commit thus introduces these two categories of HwBinder services
    in neverallow rules.
    
    Test: mmm system/sepolicy -- this does not change on-device policy
    Bug: 34454312
    Change-Id: I4f5f4dd10b3fc3bb9d262dda532d4a23dcdf061d
    2a7f4fb0
    History
    Assert apps can access only approved HwBinder services
    Alex Klyubin authored
    App domains which host arbitrary code must not have access to
    arbitrary HwBinder services. Such access unnecessarily increases the
    attack surface. The reason is twofold:
    1. HwBinder servers do not perform client authentication because HIDL
       currently does not expose caller UID information and, even if it
       did, many HwBinder services either operate at a layer below that of
       apps (e.g., HALs) or must not rely on app identity for
       authorization. Thus, to be safe, the default assumption is that
       a HwBinder service treats all its clients as equally authorized to
       perform operations offered by the service.
    2. HAL servers (a subset of HwBinder services) contain code with
       higher incidence rate of security issues than system/core
       components and have access to lower layes of the stack (all the way
       down to hardware) thus increasing opportunities for bypassing the
       Android security model.
    
    HwBinder services offered by core components (as opposed to vendor
    components) are considered safer because of point #2 above.
    
    Always same-process aka always-passthrough HwBinder services are
    considered safe for access by these apps. This is because these HALs
    by definition do not offer any additional access beyond what its
    client already as, because these services run in the process of the
    client.
    
    This commit thus introduces these two categories of HwBinder services
    in neverallow rules.
    
    Test: mmm system/sepolicy -- this does not change on-device policy
    Bug: 34454312
    Change-Id: I4f5f4dd10b3fc3bb9d262dda532d4a23dcdf061d