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 还支持 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 项目:设置您的 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.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 find
  • cm verify
  • cm fix

如需在运行任何这些命令时指定模型,请使用以下语法:

cm COMMAND TARGET --model MODEL_NAME

安全性和数据隐私权

以下部分概述了 CodeMender 的安全模型、数据保留政策和访问权限控制机制:

CodeMender 会将哪些数据发送到云端?

使用 CodeMender 时,本地 CLI 工具会协调对代码的访问,确保您绝不会将完整的源代码库上传到 Google 的服务器,并且托管的智能体不会独立克隆这些代码库。

相反,CLI 会严格本地化其发送到 Google 托管的智能体的数据,这些数据包括:

  • 目标文件内容或代码段、漏洞信息、建议的补丁和命令执行结果。
  • 元数据、诊断信息、错误和使用情况遥测数据(例如消耗的 token 数和命令持续时间)。

我们绝不会使用您的客户源代码来训练底层模型权重。

保留政策是什么?

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 资源周围定义安全边界,从而帮助降低本地化数据发送到云端推理引擎时的数据渗漏风险。

后续步骤

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