高级 AI 模型的推出引发了人们对代码漏洞的广泛担忧。随着攻击者获得生成漏洞利用的新能力,安全团队面临着巨大的时间压力,必须在攻击者利用漏洞之前主动发现并修复漏洞。
CodeMender 是一款 AI 代码安全智能体,可发现、验证并修复代码库中的深层漏洞。CodeMender 在 LLM 周围封装了一个经过微调的框架,使用 Google DeepMind 设计的提示、技能和编排逻辑,将模型转变为专门用于代码安全的智能体系统。
工作原理
CodeMender 能够应对现代企业环境的规模和多样性,其中代码涵盖多种语言和系统类型:
- 发现漏洞:在智能体的引导下,使用 LLM 扫描代码库,并利用专用工具和提示词工程,让模型专注于发现安全缺陷。或者,您也可以从外部安全扫描工具导入漏洞列表。
- 验证漏洞:通过构建代码并尝试利用发现的漏洞来验证这些漏洞是否可被利用。这有助于优先处理已确认的漏洞,并降低假正例率。
- 通过生成并测试与代码库语言兼容的补丁来修复漏洞。
在这三个阶段中,您都可以向 CodeMender 提供上下文,以确保它考虑到应用和威胁模型的细微差别。与单独使用 LLM 查找和修复漏洞相比,将 LLM 与 CodeMender 经过微调的框架相结合,可以提供更高质量的结果。
系统架构
从用户角度来看,CodeMender 系统由两个组件组成:
- 智能体:运行核心业务逻辑和推理的托管式多智能体系统。
- 客户端:在您的机器上运行的客户端,既充当 CLI(用于发出命令和查看输出),又充当守护进程(代表智能体执行命令,并可选择在本地进程级沙盒中进行隔离,以安全地编译代码、运行测试和验证漏洞)。
支持的语言和框架
CodeMender 默认支持以下语言:C/C++、C# / .NET、Go、Java、JavaScript 和 TypeScript、Kotlin、Python、Ruby、Rust 和 PHP。此外,它还广泛支持这些语言中的标准库,以及常见的企业框架(例如 HTML/CSS、Django、Flask、React、Spring Boot、ASP.NET 和 Express)。
所列编程语言并非硬性限制。CodeMender 是一款 AI 代码安全智能体,能够分析和修复底层模型所理解的任何语言的代码。通常支持任何非专有语言。
扫描其他编程语言
您可以通过以下任一方式配置 CodeMender,使其扫描不在其默认集中的编程语言:
- 全局配置:将编程语言的文件扩展名添加到全局 CodeMender
~/.codemender/config.yaml配置文件的scan.extensions.include部分。 - 按代码库配置:将编程语言的文件扩展名添加到代码库中 CodeMender
config.yaml配置文件的scan.extensions.include部分。
例如,如需扫描其他语言或脚本格式,请执行以下操作:
scan:
extensions:
include:
# Default languages
- .py
- .java
- .go
- .js
- .jsx
- .mjs
- .cjs
- .ts
- .tsx
- .c
- .cc
- .cpp
- .cxx
- .h
- .hpp
- .cs
- .rs
- .kt
- .kts
- .rb
- .php
# Additional / custom languages
- .swift
- .scala
- .sh
# Exclude build, dependency, cache, and artifact directories
exclude_dirs:
- node_modules
- vendor
- dist
- bin
- target
- obj
- build
- .gradle
如需详细了解如何配置扫描选项,请参阅配置参数 (config.yaml)。
质量说明
CodeMender 不会发布针对每种语言的正式评估。默认语言反映了我们基准覆盖率最高的语言;其他语言的结果会有所不同。如果贵组织需要优先考虑特定语言,以便进行更深入的评估或默认纳入,请与您的 Google 客户支持团队联系。
支持的模型
CodeMender 支持以下模型:
点击即可展开支持的模型
CodeMender 还支持 Gemini 3.8 Flash Cyber 和 Gemini 4 Argon Cyber Permissive,供通过 Fairwind 计划获得访问权限的客户使用。
Gemini 4 Argon (gemini-4-argon) 包含内置的网络安全功能,可能会阻止涉及漏洞利用生成或漏洞验证的请求。gemini-4-argon 上的任何安全屏蔽都会自动触发针对 Gemini 3.8 Flash Cyber (gemini-3.8-flash-cyber) 的重试,如果您的项目无权访问 Gemini 3.8 Flash Cyber,则会回退到 Gemini 3.8 Flash (gemini-3.8-flash)。
如需在运行 CodeMender CLI 命令时指定模型,请参阅指定模型。
支持的区域
CodeMender 已在全球范围内推出。
跟踪 token 用量
CodeMender 会在两个位置显示 token 消耗情况:命令运行时的实时状态行,以及命令成功完成时的一行摘要。统计信息涵盖当前会话的输入、输出和总 token 数。
实时状态行
在 cm find、cm fix、cm verify 或 cm session resume 运行时,传递 --compact 标志以显示滚动状态行,该状态行会随着代理的工作而更新:
cm find ./src/auth/ --compact
状态行会报告累计会话总数:
Tokens: 40k in / 12k out / 60k total
恢复的会话会从上次运行中断的位置继续计数。total 计数可能包含模型的内部推理 token,因此可能会超过 in + out。
退出摘要
当命令成功完成且至少执行了一个工具步骤时,CodeMender 会输出一行摘要,其中包含用时和总 token 数:
✅ Completed 14 tool steps in 3m 42s | Tokens: 40k in / 12k out / 60k total
计费 token 用量
如需查看 Google Cloud 项目的累计计费 token 使用量和费用趋势,请参阅 Cloud Billing 中的查看结算报告和费用趋势。
开始使用 CLI
设置 CLI 工具并初始化工作区,即可开始扫描。
前提条件
在初始化 CodeMender CLI 之前,请确保您的环境已正确准备就绪:
- 设置 Google Cloud 项目:使用所需的 API 和 IAM 角色设置 Google Cloud 项目。
- 下载 CodeMender CLI:下载并安装适用于您操作系统的 CodeMender CLI 二进制文件。
- 配置 Google Cloud 凭证和项目:配置 Google Cloud 应用默认凭证 (ADC) 并设置目标项目,以便对 CLI 进行身份验证。
- 预配源代码:将要扫描的项目源代码克隆或复制到工作区。
- 配置沙盒:为沙盒环境定义目录装载、网络访问配置文件和安全例外。
指定模型
默认情况下,CodeMender 使用 Gemini 3.8 Flash。如需替换默认模型,请传递 --model 标志以及相应的模型标识符:
- Gemini 3.8 Flash(默认):
--model gemini-3.8-flash - Gemini 3.8 Flash Cyber:
--model gemini-3.8-flash-cyber - Gemini 4 Argon:
--model gemini-4-argon - Gemini 4 Argon Cyber Permissive:
--model gemini-4-argon-cyber-permissive - Gemini 3.7 Flash:
--model gemini-3.7-flash - Gemini 3.6 Flash:
--model gemini-3.6-flash - Gemini 3.5 Flash:
--model gemini-3.5-flash - Gemini 3.1 Pro 预览版:
--model gemini-3.1-pro-preview
以下命令支持 --model 标记:
cm findcm verifycm fix
如需在运行上述任一命令时指定模型,请使用以下语法:
cm COMMAND TARGET --model MODEL_NAME
安全和数据隐私权
以下部分简要介绍了 CodeMender 的安全模型、数据保留政策和访问权限控制:
CodeMender 会向云端发送哪些数据?
使用 CodeMender 时,本地 CLI 工具会调解对代码的访问,确保您绝不会将完整的源代码库上传到 Google 的服务器,并且托管代理不会独立克隆这些代码库。
相反,CLI 会严格本地化其发送到 Google 托管的代理的数据,这些数据包括:
- 目标文件内容或代码段、漏洞信息、建议的补丁和命令执行结果。
- 元数据、诊断信息、错误和使用情况遥测数据(例如消耗的词元和命令时长)。
我们绝不会使用您的客户源代码来训练底层模型权重。
保留政策是什么?
CodeMender 采用严格的短期数据保留政策:
- 最长保留 7 天:我们会将代码段和跟踪状态等会话数据在 Gemini Enterprise Agent Platform 存储空间中保留最多 7 天,以便用户无缝恢复中断的扫描。7 天后,系统会自动删除这些数据(请参阅零数据保留)。
- 显式删除:客户无需等待 7 天,可以通过调用
DeleteInteraction触发立即清理所有会话数据。 - 临时发现结果:我们不会将漏洞发现结果和补丁存储在长期数据库中,而是在流水线运行期间将它们累积在内存中。
谁可以访问这些数据?
CodeMender 在人工可见性方面采用“零数据访问”方法:
- 无人工访问权限:任何人工群组或 Google 工程师都无权读取生产环境中的客户数据。
- 操作员无法查看:即使在生产调试和错误跟踪期间,Google 操作员也受到限制,无法查看客户源代码上下文或临时会话状态。
- 严格隔离:我们按组织和客户结算项目对所有数据进行逻辑隔离和访问权限控制,以保护共享基础架构中的租户隐私。
- VPC Service Controls (VPC-SC):为进一步保护您的环境,CodeMender 的架构完全支持 VPC Service Controls (VPC-SC)。这样,您就可以为 Google Cloud 资源定义安全边界,从而在将本地化数据发送到云推理引擎时,帮助降低数据渗漏风险。
后续步骤
如需查看详细说明,请参阅以下指南: