在过去的一段时间里,AI编程技术持续引发“开发热潮”,在社交平台上,“30分钟使用AI构建完整应用”的案例分享层出不穷,这不仅吸引了大量独立开发者,更成为产品经理群体重点关注的效率工具。在编码的同时,这项技术能否同样革新代码审计领域?
本文将举例Trae以及Winsurf,实验将AI用于代码审计, 会产生怎样的效果。
正文多图警告:
本文涉及到的项目为:https://github.com/emlog/emlog/releases/tag/pro-2.4.3
Table of Contents
Trae
Trae是字节跳动发布的对标Cursor的一款AI IDE,上个月发布的时引起热议,刚出来时也用它实现了一款用于识别网站特征并生成Fofa语法的Chrome插件。废话少说,直接来看看使用chat
来做代码审计的效果怎样:
测试过程:
prompt:
检查所有PHP文件中是否存在SQL注入,并且:
1.若找到疑似的SQL注入语句,去要确保SQL语句中的变量可以控制,如由函数传入
2.若找到疑似存在SQL注入的函数,需要全局寻找该函数的调用,确保该函数中决定SQL注入的变量可以由用户控制
3.已知postStrVar()和getStrVar函数使用addslashes()对输入进行了过滤,使用该函数获取的参数无法引发SQL注入
4.忽略使用(int)对输入进行转换的变量,该类型的变量不存在风险
5.如果某个参数使用addslashes()进行了过滤,则认为该处不存在SQL注入风险。
6.若找到可有用户输入而导致的SQL注入漏洞,请列出调用链,以及关键代码在文件中的行数。
7.请认真思考和分析代码,并且只显示存在SQL注入风险的代码段和调用链
8.不能产生幻觉
总结
老实忘记之前提到的一些规则,上下文不够强,有时候还会分析出工作区中不存在的代码来。不过还是能找到一些拼接的SQL语句,和一个文件上传处的SQL文件导入。
Winsurf
Windsurf 是Codeium 公司推出的一款AI 辅助编程工具,广受独立开发和产品经理中的致好评。
从 Trae 的表现来看,其上下文理解能力较弱。而 Windsurf 支持设置全局提示词,或许能弥补 Trae 的不足?
设置全局提示词
设置Workspace提示词
测试过程如下:
测试过程如下:
总结
由于设置了提示词,整体使用下来的推理能力比Trae厉害,不会像Trae一样每次让分析其他文件中的SQL注入风险
,分析来分析去就总是那么几处。
最后
测试下来,Trae和Winsurf都能识别到代码工作区中存在的SQL语句拼接(也算是高级正则查询),但如果想进一步挖掘调用链以及确认漏洞是否真实存在,还需要不断通过提示词去引导和调教,这一点Winsurf的体验上比Trae要好。
挺有意思的,当然上述演示中有很多可以优化的地方,主要是提示词以及引导过程之类的。干货不多,大伙图个乐就好,等后面真用AI挖到洞了再来分享一篇好吧。