CodeMender 概览

高级 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 CLI 命令时指定模型,请参阅指定模型。

支持的区域

CodeMender 已在全球推出。

跟踪 token 用量

CodeMender 会在两个位置显示令牌消耗情况:命令运行时的实时状态行,以及命令成功完成时的一行摘要。统计数据涵盖当前会话的输入、输出和总 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 会打印一行摘要,其中包含所用时间和令牌总数:

✅ Completed 14 tool steps in 3m 42s | Tokens: 40k in / 12k out / 60k total

已计费的 token 用量

如需查看 Google Cloud 项目累计的已结算令牌使用量和费用趋势,请参阅 Cloud Billing 中的查看结算报告和费用趋势。

开始使用 CLI

设置 CLI 工具并初始化工作区,以便开始扫描。

前提条件

在初始化 CodeMender CLI 之前,请确保您的环境已正确准备就绪:

  • 设置 Google Cloud 项目:设置 Google Cloud 项目,并添加所需的 API 和 IAM 角色。
  • 下载 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.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 find
  • cm verify
  • cm 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 资源定义安全边界,从而在将本地化数据发送到云端推理引擎时,帮助降低任何数据渗漏风险。

后续步骤

如需查看详细说明,请参阅以下指南: