AI写的代码安全吗?我用AI审计了一遍

0 阅读3分钟

我用AI写了十几个项目,从没想过一个问题:

AI写的代码,安全吗?

直到Anthropic开源了一个代码安全审计工具。我拿自己的微信小游戏跑了一遍。

3分52秒,扫了16个JS文件,5个安全维度。

结果:3个问题,全是LOW级别。没有可利用漏洞,但有几个细节值得聊聊。


这个工具是什么

Anthropic开源了一套代码安全审计框架,叫 defending-code-reference-harness

核心能力:让Claude从攻击者角度审视你的代码——自动建威胁模型、识别攻击面、逐个模块扫描漏洞。

在Claude Code里一行命令就能跑:

/vuln-scan ~/Desktop/mini-game/water-sort


拿我的小游戏跑了一遍

扫描过程

它做了这几件事:

  1. 先识别项目类型——WeChat Mini Game,16个JS文件,Canvas 2D
  2. 确定信任边界——用户触摸输入→游戏状态,wx.getStorageSync→配置读取
  3. 划出5个扫描区域:存储、输入处理、分享&广告、关卡数据、配置信息
  4. 逐一读取源码分析

整个过程3分52秒。


扫描结果

扫描结果

3 findings(0 HIGH, 0 MEDIUM, 3 LOW, 2 low-confidence)

说实话,看到这个结果我松了口气。但这3个问题还是值得拆解一下。

F-001:硬编码绝对路径泄露开发者信息

tools/generate_levels.js:293 里有一行:

/Users/xxxx/Desktop/mini-game/water-sort/js/data/levels.js

虽然这个文件不会打包到线上(tools目录被排除了),但如果代码开源,你的macOS用户名就暴露了。

修复很简单:换成 path.join(__dirname, '../js/data/levels.js')

这个置信度最高(0.7),是3个里面最"真实"的问题。

F-002:存档数据没做校验

js/utils/storage.js:5 里,localStorage的JSON直接merge进来,没有schema校验。

越狱设备上可以篡改本地存档——改关卡、改道具数量。

对单机休闲游戏影响不大。但如果以后加排行榜或内购,这就是一个隐患。

置信度只有0.3——工具自己也觉得"对这种游戏来说可能不算事"。

F-003:urlCheck关着

project.config.json:21urlCheck: false

这是开发设置,正式发布时微信会强制开启。工具指出来了,但也标注了"development setting, WeChat enforces in production anyway"。

置信度0.2,基本是提醒性质。


它的整体评价

最后一段话让我印象深刻:

这个代码库攻击面很窄——纯客户端Canvas 2D游戏,没有网络请求,没有DOM操作,没有eval/动态代码,没有服务端交互。发现的问题都是纵深防御类的,不是可利用漏洞。

说白了——架构选对了,安全问题自然少。


3个认知

AI代码有安全盲区

Claude Code写逻辑很强,但它不会主动考虑攻击场景。你不说"做防篡改",它就不会加校验。你不说"用相对路径",它就直接写绝对路径。

它是执行者,不是安全工程师。

架构比代码更重要

我这个项目只有3个LOW级问题,不是因为代码写得多好——是因为离线+Canvas+无用户输入这个架构,天然就没什么攻击面。

如果是一个有登录、有API、有数据库的项目,结果会完全不同。

一个人做产品,至少让AI review一遍

在公司里,你的代码至少有一个人看过。独立开发者呢?从写到上线,可能没有第二个人看过一行代码。

3分52秒,免费,比什么都没有强。


你也试试

Anthropic这个工具开源了:github.com/anthropics/defending-code-reference-harness

clone下来,在Claude Code里用 /vuln-scan 扫你的项目。

花几分钟,可能发现你从来不知道的问题。