我把 Qoder Security 放进了四个真实漏洞场景,它没只报警,而是跟着修完了

AI 写代码的速度已经拉到肉眼可见地快了。Agent 跑完一轮,文件变了,功能通了,界面能打开了——但真正让人心里打鼓的东西,往往藏在下一步:用户参数会不会拼进 shell?上传文件的路径是不是可控的?数据库查询还在拼字符串吗?

过去安全检查的默认位置是在流水线上。代码提交,CI 跑起来,才告警。问题是这时候开发者已经切出编码上下文了,要修一个漏洞得先重新理解代码、翻回当时的需求、再跨工具改——一场返工。

Qoder Security 这周正式上线,我完整走了四轮测试,想看清楚它到底是在门口喊一声,还是跟着把活干完。

三层护航,不算打扰

Qoder Security 内置在 Qoder Desktop 和 CLI 里,国际版和 CN 版都有。三层能力:L1 静态检查面向本轮生成代码,免费;L2 轻量扫描做增量代码的语义理解,能识别 SQL 注入、命令执行、敏感信息泄露;L3 深度扫描会跨文件、跨函数追踪完整数据流。L2 和 L3 耗 Credits,但不打断写码——系统在合适时机询问是否扫描,也可以直接输入 /security-scan 或让 Agent 跑。

三层扫描分别覆盖三个任务时刻,不是同一套逻辑简单叠三遍。反馈直接出现在写代码的会话里,不需要切到另一个控制台或网页。

两条原创链路,先验证底线

我先搭了两个最小 Node.js 接口,目的是在单一变量下看清判断和修复逻辑。

第一个是 SQL 注入场景。一个 Express + mysql2 的搜索接口,先写参数化查询做安全基线,然后只改一处:把外部输入拼进 SQL 模板字符串。L2 直接串起整条数据流——req.query.name 外部可控,进入 pool.query——标了 1 个 Critical,CWE-89,置信度 95%,定位到第 8-9 行。修复建议是回到参数化查询,我点了修复,Agent 把字符串拼接换成 pool.execute? 占位符,新增 4 行、删 2 行。复扫结果 0。

第二个是 SSRF 场景。一个图片预览代理接口,原本有协议和主机白名单,我只移除这些约束,把用户 URL 直接传给 fetch。L2 识别出 Critical,CWE-918,链路解释很清楚:外部可控的 URL 没有协议、主机或地址校验。修复后补齐了只允许 HTTPS、两个主机白名单、禁止自动重定向、只接收 JPEG/PNG、异常处理——变更记录新增 50 行,删 3 行。复扫归零。但 L2 又指出一个 Low(CWE-770):响应体没大小限制。继续修,加 5MB 上限。再次复扫,全部归零。

主漏洞被修了不意外,扫描没有停在"最严重的那个好了",而是继续找到次生问题,直到当前增量代码全部归零。

两个真实仓库,照见边界

进入真实项目之后,反馈就不总是一刀切了。

Qdrant 仓库,我让 Agent 新增一个上传接口,存快照文件。Agent 改了 Cargo.toml 和 snapshot_api.rs,新增 129 行、删 27 行。生成代码里文件名来自 content_disposition().get_filename(),直接进入 snapshots_dir.join(&filename)——这条路径有明显的路径穿越风险。但 L2 返回"未发现安全问题",L3 也是同样的结果。

不是每一段危险代码都会被当前扫描命中。实现细节、模型、上下文都会影响结果。"扫描通过"仍然要和代码审查、编译测试、CI 一起看。

discordrb 仓库就好得多。让 Agent 给 FFmpeg 编码增加自定义选项,它改了 encoder.rb,新增 10 行删 4 行,把外部参数直接插进命令字符串交给 IO.popen。L2 把数据流串起来了:外部可控的 options 未经过滤进入 shell 命令,标了高危注入,CWE-78。修复是新增 validate_options! 方法过滤 shell 特殊字符,合法 FFmpeg 参数保持可用。复扫归零。

Qoder 没有自动改代码,而是弹了一张 Questions 卡片,询问是否要修。推荐选项是过滤特殊字符,也可以选不修改。这比自动修踏实——安全工具最怕的是静默改了开发者不知道的东西。

把安全工程师放进写码会话

很多工具都能给出一份问题列表。但列表不是终点。开发者真正要做的是:理解问题、决定修不修、完成改动、确认没留新缺口。

Qoder Security 把这些动作接进同一个工作流。根据 Qoder 官方数据,相比传统方案漏洞检出率提升约 60%,告警误报率降低约 80%,单漏洞从发现到修复可达分钟级。内部测试在 Claude Code、Codex、Cursor、n8n、LiteLLM、Crawl4AI、Milvus、Qdrant 等开源项目上发现 600+ 安全问题。代码评审中的安全意见下降约 35%-45%。

这些数字背后是一个明确的产品判断:安全能力不只负责报警,还要帮助开发者把问题处理完。这个判断不是 Qoder 独有的——OpenAI 今年 3 月发布了 Codex Security 研究预览,做仓库级扫描和修复建议;Anthropic 5 月把 Security Guidance 放进 Claude Code,在编辑、每轮结束和 commit 节点提供护航。判断是一致的:AI 写的代码,需要 AI 级别的安全来护航。区别在于 Qoder 是国内 Agentic Coding 产品里,第一个把"会话内三层护航加同会话修复"做成可用产品的。

Qdrant 那轮没扫出来也说明,会话内左移有价值,但替代不了 CI 和人工审查。真正可靠的工作流是多道反馈互相补位。

已经在用 Agent 写真实项目的话,最短的路径是:下 Qoder Desktop,打开设置-安全,按任务开 L1/L2/L3,正常写代码,增量完成后跑一次扫描。如果发现问题,先看漏洞说明,再决定是否让 Agent 修。

把安全工程师放进写码会话的价值,在于每一次发现都更接近一次完成——不只是一份报告。

相关链接