拦截AI编码漏洞:实时扫描修复AI生成代码漏洞


我们刚刚推出了Codacy Guardrails,这是一个IDE扩展,带有用于代码分析的CLI和MCP服务器,可以实时对AI生成的代码执行安全质量规则。

它与AI编码助手(如VS Code Agent Mode,Cursor,Windsurf)挂钩,在生成代码时,默默地扫描和修复AI建议的具有漏洞或违反编码标准的代码。

我们建立这个是因为编码代理可以是一把双刃剑。它们确实提高了生产力,但很容易引入不安全或不兼容的代码。纽约大学最近的一个研究小组发现,Copilot的输出中有40%是错误的或可利用的[1]。其他调查提到,人们花更多的时间调试AI生成的代码[2]。

这就是我们创建“护栏”以尽早发现安全问题的原因。

Codacy Guardrails使用了一系列开源静态分析器(如Semgrep和Trivy)来扫描AI的输出,以对抗2000多条规则。我们目前支持JavaScript/TypeScript、Python和Java,专注于OWASP Top 10漏洞、硬编码秘密、依赖检查、代码复杂性和样式违规等,您可以自定义规则以满足项目的需求。我们没有使用任何人工智能模型,它是与人工智能助手一起工作的“经典”静态代码分析。

Codacy Guardrails 是一种全新的 AI 生成代码安全与质量标准执行方法,内置于免费的 Codacy IDE 扩展(适用于 VSCode、Copilot、Cursor 和 Windsurf)。Guardrails 通过在代码生成过程中应用最佳实践并阻止不安全模式,帮助开发者交付更安全、更清晰的 AI 代码。

除了实时 AI 代码扫描之外,Guardrails 用户现在还可以提示他们所有的 Codacy 发现,而无需离开 IDE 内的 AI 聊天面板。

这里有一个快速的演示:https://youtu.be/pB02u0ntQpM
该扩展对所有开发人员免费。

(We确实有付费计划让团队集中应用规则,但不需要使用代理的扩展和本地代码分析。)

安装非常简单:安装扩展并从侧边栏启用Codacy的CLI和MCP服务器。

我们很想听听HN社区的想法!这种方法在你的AI编码工作流程中听起来有用吗?您是否遇到过AI生成代码的安全问题?

我们希望Codacy Guardrails能够让AI辅助开发变得更安全、更值得信赖。感谢您的阅读!

获取扩展插件:https://www.codacy.com/get-ide-extension
文档:https://docs.codacy.com/codacy-guardrails/codacy-guardrails-getting-started/

网友热评:
1、问:您如何将它与 Qlty CLI(https://github.com/qltysh/qlty)进行比较?
您是否计划支持 Claude Code 和 linting 等工具的基于 CLI 的工作流程?

答:从一开始,我们就试图在IDE中运行的CLI以及Codacy云端的配置和运行之间建立牢固的联系。我们投入了大量时间在编码标准、门控以及确保所有集成的工具(这似乎与qlty相当——我们目前确实有自己的工具,例如用于秘密扫描的工具)能够良好地运行,满足大型团队的良好标准。我们还有一个MCP服务器,我们发现将代码分析与代码代理结合起来并非易事,所以我认为这也有所不同。除此之外,还有DAST + 渗透测试等等。
我们有,而且正在研究。这实际上是在我们推出 MCP 服务器的时候开始的。

2、问:与“标准” Codacy 相比,这个用例是什么?与基于 PR 的标准反馈相比,在代码生成时运行这个能解决什么问题?
当大模型(LLM)不可避免地会在某个问题上循环时,如何避免“上下文污染”?我特意禁用了 Cursor 的“修复 linter 错误”功能,因为它总是堵塞上下文。

答:当 PR 被创建时,Codacy 会在云端运行。我们运行了大量的工具,并且拥有门控、编码标准等等。这是一个标准化用例。Codacy Guardrails 专注于本地代码分析,尤其关注编码代理。问题在于,人工智能会生成不安全的代码,如果你没有 Codacy 进行集中分析,你的代码库中就会出现漏洞。

不幸的是,在上下文污染问题上,我们很大程度上依赖于实际使用的模型。我们做的一件事是:明确指示分析正在生成的代码,而不是对所有已识别的问题采取行动。尽管如此,我们仍然建议选择一些合适的工具来开始并以此为基础:一个 SCA(实际上是强制性的)、一个秘密扫描器和一个精心策划的安全问题列表。如果我们将太多问题输入到模型中,它们……嗯……就无法正常工作。

3、您能解释一下 Cursor 中的“护栏”是如何/何时运行的吗?我的意思是:扩展程序是如何挂钩的,以便更改 diff 视图中的代码?
这也适用于 Claude Code 和 Amp 这样的代理吗?我猜既然有 MCP,就算文档里没有明确提到,它应该也能用吧?
您对在开发时间和 CI 时间运行类似护栏的东西有何看法?

答:每次代理生成代码时,护栏都会运行。我们会指示编码代理对更改的代码运行护栏。目前,它还不支持 Claude Code 和 Amp,但由于它利用了 MCP 服务器,我们可以轻松实现。这正在计划中。
我认为开发时间至关重要,因为人工智能正在生成大量的代码。我们还确保无论开发时间发生什么,我们都能始终在持续集成 (CI) 时间内运行云检查。感谢您的提问!

4、刚刚试了一下,一个用两个未命名模型生成的简单 Python 脚本竟然使用了带有 CVE 的 Requests 库版本,真是太有趣了。可怕的是,这个脚本居然运行了。这改变了 AI 的利用方式。我很快会回来提供更多反馈,但就目前而言,这已经很棒了。

谢谢你的测试!根据我的经验,在代码中引入带有漏洞版本的库是很常见的。同样有趣的是,即使使用了像 Sonnet 4 这样强大的 AI 编码模型,你的代码中仍然会存在 CVE。试试 Codacy Guardrails 的这个功能:“使用 Undertow 创建 Java 服务器”。