今年开始我们没有再找第三方做安全漏洞扫描和合规测评。受限于代码的开发质量等原因, App 中或多或少的会存在安全漏洞或因开发设计不谨慎引入的违规收集个人信息等合规风险,带漏洞运行的 App 将严重威胁着网络及用户安全,合规问题则可能受到监管通报甚至存在下架处罚风险。
在字节跳动,面对数量众多的 App 产品,无恒实验室需要在产品上线前发现隐私合规风险,挖掘出安全漏洞,保护用户的数据与隐私安全。无恒实验室对业内自动化 App 漏洞检测工具进行了充分调研,最终发现这些工具或因为漏报、误报率太高导致需要消耗大量人力对扫描结果进行确认,或因为不开放源码导致无法根据特定的扫描需求进行定制化开发。为了能更好的实现高质量漏洞及隐私合规检测,无恒实验室自主研发了 Appshark 引擎,用于漏洞及隐私合规风险的自动化检测。
appshark 的介绍
Appshark 是一个针对安卓的静态分析工具,它的设计目标是针对超大型 App 的分析。Appshark 除了实现行业普遍应用的数据流分析,还将指针分析与数据流分析融合,因而漏洞建模上更精准,规则更灵活,在误报率和漏报率方面有了比较大的改进。
Appshark 支持众多特性:
基于 json 的自定义扫描规则,发现自己关心的安全漏洞以及隐私合规问题。
灵活配置,可以在准确率以及扫描时间空间之间寻求平衡。
支持自定义扩展规则,根据自己的业务需要,进行定制分析。
appshark 可以解决什么问题
Appshark 可以作为公司内部的 Android App 的自动化检测工具,辅助企业发现 App 的安全漏洞及隐私合规风险,也可以作为白帽子日常 App 漏洞挖掘的助手,提高漏洞挖掘的效率及产出。
appshark 在字节跳动的表现
Appshark 加载全部规则集时,对于抖音、今日头条等超大规模 App,可以在 1 小时内完成所有分析并输出结果。同时,如前所述,由于 appshark 引擎中加入了指针分析和数据流分析,可以实现在此基础上进行更加灵活精准的规则设计,在字节跳动内部使用时,大部分规则的误报率和漏报率均已经降至 5%以下了。
appshark 工作流程
Appshark 有 apk 文件处理,代码预处理,用户自定义规则分析解析,指针以及数据流分析,漏洞查找,sanitizer 以及报告生成等模块组成。完整的流程图:
入门参考
下载 AppShark-xxx.jar
点击下载 jar 包。要求系统安装有 jre11 环境。
通过 github 下载
git clone https://github.com/bytedance/appshark
修改 config 文件
将 apkPath 修改为你想要扫描的 apk 绝对路径。
指明你要使用的规则,以逗号分隔。并且这些规则应该都放在 config/rules 目录下。因为 Appshark 是通过这个路径来查找这些规则的。
指定输出结果保存的目录,默认是当前目录下的 out 文件,你可以指定一个其他目录。
启动 appshark
java -jar AppShark-0.1.1-all.jar config/config.json5
查看结果
结果将在当前目录中的out
目录,首先是results.json
文件,里面给出了所有的漏洞列表。