Avi Douglen(Bounce Security安全咨询机构CEO):
Security at the expense of usability, comes at the expense of security
牺牲可用性换取安全性,最终会牺牲安全性
AI 正在从根本上改变技术和安全领域。GitHub将 AI 视为一种工具,帮助开发者加速开发过程的同时编写更安全的代码。例如,Copilot 推出了一个Security filter(安全过滤器),针对 Python 和 JavaScript 中最常见的易受攻击的编码模式(包括硬编码密钥、SQL 注入和路径穿越等)提出更安全的编码方式。
CodeQL 团队负责为框架/API建模,以帮助 CodeQL 发现更多漏洞。建模是一个耗时的过程,因此团队开始思考能否将AI的能力迁移过来,加速建模过程。
实验结果超出预期,团队能够利用 AI 优化建模过程,以增强工具在代码中发现漏洞的能力。
为了提高Copilot 的代码建议质量,团队更新了底层的 Codex 模型,从而大幅提升了代码建议的质量。
Codex模型主要的更新点:
基于 AI 的漏洞预防系统,可以实时阻止不安全的编码模式,以使 Copilot 的建议更加安全。可以处理常见的安全缺陷:
该系统利用大型语言模型(LLMs)来模拟静态分析工具的行为—— Copilot 拥有强大的算力,计算速度非常快,甚至可以检测不完整代码片段中的易受攻击模式。
CodeQL发现安全缺陷离不开污点传播分析,对API的污点建模(source、sink、summary)至关重要。
开源软件(OSS)社区已经开发了数千个可能需要建模的 API 的 package 。如果建模不及时更新,就会导致漏报。
传统上,安全人员会对这些 API 手动建模,但要对数千个 OSS 框架建模非常耗时。为此,团队开始使用大语言模型(LLMs)来自动为这些API建模,极大地提高了效率。
AI建模的结果会使用一种 variant analysis (变体分析)的技术进行测试,这是一种识别新型安全漏洞的方法。
variant analysis是使用一个已知的漏洞(可能来源于渗透、fuzzing等)作为一个源,去发现代码中相似问题的一个过程,其会用到以下技术点:
语义分析(程序语义,可以迅速找到重点函数的调用或拥有特定方法签名的函数) 控制流分析(代码执行路径) 数据流分析(可以发现潜在的summary) 污点分析(可以发现潜在的summary) ... 此外,其还推出了一种 Multi-Repository Variant Analysis (MRVA)技术,可以多仓库联动,大规模执行变体分析。
未对org.sql2o.Connection.createQuery(String)
建模,直接执行SqlTainted.ql,查询结果为0
点击 【Start modeling】
可以为找到的未建模的API选择【Model type】
也就是将建模结果适配到你选定的其他仓库
此时,常规建模是需要我们手动指定api是source、sink 还是 summary,这项工作量非常巨大
但是 AI建模 可以一键完成以上污点建模过程
【Model with AI】AI一键污点建模
AI建模会自动理解各个API的工作原理,建模完成:
完成后点击【Save all】
重新运行查询即可发现SQL注入漏洞
建模后的查询结果:
Copilot + CodeQL 还有很多其他功能,但好多功能还未公开,如:
实在找不到关于CodeQL+Copilot 的AI污点建模的实现原理(流下了没用的泪水),如果大家有发现相关的文章,欢迎留言/私信(抱拳了!)