You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取特定Android版本SELinux的Never Allow规则并比对定制设备规则

提取并比对AOSP与定制设备的SELinux Never Allow规则

一、从AOSP提取Never Allow规则

AOSP的SELinux Never Allow规则以明文形式存于policy源码文件中,提取步骤如下:

  • 定位核心policy目录:${AOSP_ROOT}/system/sepolicy,部分设备专属规则在${AOSP_ROOT}/vendor/sepolicy
  • 用grep批量过滤有效规则(排除注释行):
    grep -r "neverallow" ${AOSP_ROOT}/system/sepolicy ${AOSP_ROOT}/vendor/sepolicy | grep -v "#" > aosp_neverallow.txt
    
  • 注意:不同Android版本的policy目录结构有差异,需根据实际版本调整搜索路径。

二、从定制设备提取Never Allow规则(解决sesearch无输出问题)

预编译二进制policy可能经过优化或压缩,sesearch无输出通常是「设备已移除neverallow规则」或「工具版本/参数不匹配」导致,可按以下流程处理:

  1. 导出设备二进制policy
    adb pull /sys/fs/selinux/policy ./device_policy
    # 若路径不存在,尝试拉取/sepolicy或/vendor/etc/selinux/vendor_sepolicy.cil
    
  2. 验证policy是否包含neverallow规则
    使用seinfo查看policy统计信息,确认是否存在neverallow条目:
    seinfo --stats device_policy
    
    若输出无neverallow相关统计,说明定制设备已移除所有该类规则。
  3. 提取有效规则
    • 若policy包含neverallow但sesearch无输出,改用sedta(SELinux策略分析工具包)解析:
      sedta parse device_policy --neverallow > device_neverallow.txt
      
    • 若设备采用分段policy(主policy+vendor policy),需先合并再解析:
      policymerge device_policy vendor_sepolicy.cil merged_policy
      sedta parse merged_policy --neverallow > device_neverallow.txt
      

三、规则比对方法

  1. 统一AOSP与设备规则的格式(去除多余空格、统一规则排序)
  2. 用diff工具做文本比对:
    diff aosp_neverallow.txt device_neverallow.txt > policy_diff.txt
    
  3. 重点排查差异点:
    • 定制设备删除AOSP原有neverallow规则
    • 定制设备新增的neverallow规则(需评估是否为合理定制)
    • 规则中主体、客体或权限的修改(如放宽限制)

参考研究内容

2021年Oakland学术会议相关研究指出,多数Android定制ROM会通过修改SELinux策略适配自定义功能,其中常见操作包括移除或弱化Never Allow规则,但此类修改往往会引入潜在安全漏洞。研究中推荐的核心方法即为:解析二进制SELinux策略提取Never Allow规则,与AOSP基线规则进行比对,以此检测定制ROM中的非授权策略篡改。

内容的提问来源于stack exchange,提问作者Vamsi Simhadri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:57:05