Detecting Privilege Escalation in Polyglot Microservices via Agentic Program Analysis
本文介绍了 Neo,一个将大语言模型与传统程序分析相结合的代理式程序分析框架,用于有效检测复杂多语言微服务架构中的权限提升漏洞,该框架在高精度和高召回率下成功在 25 个开源应用中识别出 24 个零日漏洞。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一座庞大而高科技的城市,其中每一栋建筑都是一间独立的、专业化的商店。一家商店出售服装,另一家处理银行转账,第三家则管理用户账户。在现代数字世界中,这些“商店”被称为微服务。它们之所以出色,是因为能够独立扩展,并在发生故障时自我修复。然而,由于这些商店由不同的人使用不同的工具构建(有些使用 Python,有些使用 Java,有些使用 Go),追踪谁被允许执行哪些操作便成了一场噩梦。
这正是NEO登场之处。将 NEO 想象成一位超级聪明、不知疲倦的安全侦探,它融合了两种强大的技能:
- 大型语言模型(LLM)的人类直觉:就像一位侦探能够阅读便条并理解字里行间的意图(例如,“此人正试图更改其角色”)。
- 机器人地图阅读器的精确性:就像一位侦探能够瞬间追踪一个人在整座城市、跨越不同建筑所留下的每一步足迹,而不会迷路。
问题:“角色扮演”漏洞
论文解释了一种特定的危险,称为权限提升。想象一位名叫爱丽丝的客户想要将她的个人资料从“普通用户”更改为“开发者”。
- 她走进网关商店(前门)。警卫检查了她的身份(认证)。“好的,你是爱丽丝。”
- 她前往资料商店。店员接收她的请求并将其转交给用户管理商店。
- 用户管理商店更改了她的角色。
缺陷:各商店之间未能妥善沟通。第一家商店检查了她是谁,但最后一间商店却没有检查她被允许做什么。攻击者可以诱骗系统将“将爱丽丝的角色更改为管理员"误认为“更改为开发者”。由于各商店缺乏协调,系统便允许攻击者成为主管。这就像一位酒店住客走进厨房,对厨师说:“我现在是经理了,把金库的钥匙给我”,而厨师因不知该住客只是普通客人,便将钥匙交给了对方。
挑战:为何难以发现?
发现这些漏洞极其困难,原因有三:
- 多语言谜题:这座城市由不同语言构建。网关可能使用 Java,而用户管理器使用 Python。旧的安全工具就像只会说一种语言的翻译;它们无法跨越边界追踪对话。
- 隐藏的含义:计算机将代码视为符号。它不知道
setUserRole()是一个需要特殊许可的“强力操作”。它仅仅看到一个函数名。人类理解含义,但计算机需要帮助。 - 迷宫:从前门到金库的路径可能蜿蜒穿过 10 栋不同的建筑,涉及中间件、路由器和装饰器。旧工具会在迷宫中迷失方向。
解决方案:NEO 如何运作
研究人员构建了NEO,一个“代理”系统。将 NEO 想象成一位拥有智能计划和魔法工具箱的侦探,而非静态的扫描器。
1. 魔法工具箱(代码搜索原语)
与其让侦探阅读图书馆里的每一本书(这将耗时无穷且使其大脑不堪重负),NEO 赋予其特定而强大的工具:
- “查找名称”工具:瞬间找到所有名为"update"或"role"的函数。
- “追踪流程”工具:追踪一段数据(如用户的请求)从前门一直到达金库,即使它在不同语言间跳转。
- “谁调用了谁”工具:绘制出完整的指挥链,以查看谁在与谁交谈。
这些工具充当通用翻译器,使侦探能够同等程度地理解 Java、Python 和 Go,而不会被语法混淆。
2. 侦探的大脑(LLM 代理)
NEO 使用大型语言模型(LLM)作为其大脑。
- 动态规划:侦探不再遵循僵化的检查清单,而是查看地图,发现可疑路径,并决定:“我需要检查下一栋建筑中的路由器。”随后,它利用魔法工具箱聚焦于该特定位置。
- 语义理解:侦探阅读代码并理解:“啊,这个函数更改了用户的权限。这是一个‘特权操作’,需要严格检查。”
- 验证:侦探不只是猜测。它会问:“这扇门前有警卫吗?”如果找到检查点,它会阅读警卫的规则,以判断其是否足够严格。(例如:“警卫检查你是否已登录,但他是否检查你是否被允许成为管理员?没有?那么这就是一个漏洞。”)
成果:破纪录的搜寻
研究人员在 25 个包含数百万行代码的真实世界微服务应用程序(如在线商店和票务系统)上测试了 NEO。
- 发现:NEO 发现了24 个全新的(零日)漏洞,此前无人知晓。
- 准确性:当其发出警报时,准确率约为 81%,并捕获了 85% 的真实问题。
- 对比:
- 旧工具(如 MScan 或 CodeQL):这些就像只会说一种语言或只查看一栋建筑的侦探。它们错过了大多数跨建筑攻击。
- 其他 AI 代理(如 EnIGMA):这些就像试图阅读图书馆中每一本书每一页的侦探。它们不堪重负,耗尽时间,并错过了线索。
- NEO:通过使用“魔法工具箱”仅抓取相关页面,并利用“侦探大脑”理解故事,NEO 比次优方法多发现了24 个漏洞。
结语
NEO 证明,你不必在“智能 AI"与“精确代码分析”之间做出选择。通过将两者结合,你获得了一个能够驾驭现代云软件复杂、多语言、多建筑世界的系统,从而发现此前不可见的漏洞。
研究人员负责任地向软件所有者报告了所有发现。许多漏洞已被修复,使这些数字城市对每个人来说都更加安全。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。