GitHub用开源AI智能体挖出24个安卓漏洞

GitHub 安全实验室(Security Lab)研究员 Kevin Stubbings 9 月 28 日发文,介绍团队如何用自家开源的 AI 安全智能体审计安卓应用,前后找出并报告了 24 个漏洞。用到的工具叫 seclab-taskflow-agent,核心是一组写成 YAML 的”任务流”,一步步引导大模型去读代码、分类入口、找问题、写验证。

这套任务流此前已经用于通用代码审计,这次针对移动端做了定制,新增了 gather_mobile_entry_point_info.yaml 和 classify_application_local.yaml 两个文件,分别负责整理应用的入口点和给漏洞归类。

怎么跑起来

按文章给的流程,用户在 GitHub Codespaces 里运行一个审计脚本,等环境初始化几分钟,然后放着让智能体跑。一个中等规模的仓库,大约要一到两个小时。结果写进一个 SQLite 数据库,打开 audit_results 表,筛出 has_vulnerability 一栏打勾的记录,就是智能体认定有问题的地方。

任务流覆盖的漏洞类型围绕安卓的几个老大难:Intent 相关的混淆代理和不安全广播、WebView 里的跨应用脚本、暴露给网页的 JavaScript 桥、路径穿越、深链接解析逻辑错误,以及 Cookie 和登录令牌泄露。文章称分类清单共涉及 12 个 CWE 类别。

两个摊开讲的案例

OsmAnd,一款下载量超过 1000 万次的开源地图导航应用。智能体在它的设置导入流程里找到了 3 个问题,其中一个可以让同一台手机上的恶意应用在不申请任何权限的情况下,借 Intent 附带参数静默导入配置,进而追踪用户的位置和路线。

维基百科安卓客户端。智能体发现深链接的解析逻辑有漏洞,攻击者构造一个恶意链接,把用户带到伪造页面,再借此拿到 Cookie,最终接管账号,拿到长期有效的登录令牌。

Stubbings 在文中写道,团队没想到模型对各种语言里安全相关 API 的行为理解得这么准,即便没有给它那门语言的源码;智能体写出的概念验证代码,也只需要很少改动就能用。

“LLMs are good at finding vulnerabilities but struggle at estimating severity.”

大模型擅长找漏洞,但不擅长判断严重程度。

它做不到的部分

文章对局限写得很直白。模型经常报告低危问题,即便提示词里明确要求别报;遇到有缓解措施的漏洞,它判断不准实际危害;复杂的数据流优先级问题,它识别不出来;想拿到靠得住的概念验证,往往要多跑几次,有时还得接上调试器或追加提示。结论是每条发现都得由懂移动安全的研究员人工复核。

成本方面,运行需要 GitHub Copilot 许可证,走的是高级模型请求。文章提醒大仓库会产生大量工具调用,token 消耗不低,具体用的是哪款模型没有写明。

对国内开发者

任务流和脚本都开源在 GitHub 上,国内团队拿来改一改就能审自家安卓应用,门槛在 Copilot 许可证和海外模型的调用上。任务流本身是 YAML 写的提示词和步骤编排,换成国产模型理论上可行,效果如何,目前没有公开的对照数据。

安卓的碎片化让这类工具在国内的用处更大一些。各家手机厂商的应用商店、小程序容器、超级 App 里的 WebView 和 JavaScript 桥,正好落在这份清单覆盖的漏洞类型里。GitHub 下一步计划把任务流扩展到网页和桌面应用,并开放社区贡献。

参考来源:GitHub 官方博客、CocoLoop、GitHub Security Lab 开源仓库;漏洞数量、OsmAnd 下载量与单次审计耗时均以 GitHub 博客所列为准。