Skip to content

安全 ​

了解 CodeBuddy Code 的安全防护措施和安全使用最佳实践。

安全方法 ​

安全基础 ​

您的代码安全至关重要。CodeBuddy Code 将安全作为核心构建,遵循腾讯的全面安全计划开发。

基于权限的架构 ​

CodeBuddy Code 默认使用严格的只读权限。当需要额外操作(编辑文件、运行测试、执行命令)时,CodeBuddy Code 会请求明确的权限。用户可以控制是一次性批准操作还是自动允许。

我们将 CodeBuddy Code 设计得透明且安全。例如,我们在执行 bash 命令之前需要批准,让您拥有直接控制权。这种方法使用户和组织能够直接配置权限。

有关详细的权限配置,请参阅身份和访问管理。

内置保护 ​

为了降低智能代理系统中的风险:

  • 沙箱化 bash 工具: Bash 沙箱隔离 bash 命令的文件系统和网络访问,减少权限提示的同时保持安全性。使用 /sandbox 启用以定义 CodeBuddy Code 可以自主工作的边界
  • 写入访问限制: CodeBuddy Code 只能写入其启动的文件夹及其子文件夹——没有明确权限不能修改父目录中的文件。虽然 CodeBuddy Code 可以读取工作目录外的文件(对访问系统库和依赖项很有用),但写入操作严格限制在项目范围内,创建了清晰的安全边界
  • 提示疲劳缓解:支持按用户、按代码库或按组织将频繁使用的安全命令加入白名单
  • 接受编辑模式:批量接受多个编辑,同时保持对具有副作用的命令的权限提示

用户责任 ​

CodeBuddy Code 只拥有您授予它的权限。您有责任在批准之前审查建议的代码和命令的安全性。

防范提示注入 ​

提示注入是一种攻击技术,攻击者试图通过插入恶意文本来覆盖或操纵 AI 助手的指令。CodeBuddy Code 包含多种针对这些攻击的防护措施:

核心保护 ​

  • 权限系统:敏感操作需要明确批准
  • 上下文感知分析:通过分析完整请求检测潜在有害指令
  • 输入清理:通过处理用户输入防止命令注入
  • 命令阻止列表:默认阻止从网络获取任意内容的风险命令,如 curl 和 wget。当明确允许时,请注意权限模式限制

隐私保护 ​

我们实施了多项保护措施来保护您的数据,包括:

  • 敏感信息的有限保留期
  • 限制访问用户会话数据

有关完整详情,请查看我们的服务条款和隐私政策。

额外保护措施 ​

  • 网络请求批准:发出网络请求的工具默认需要用户批准
  • 隔离的上下文窗口: Web 获取使用单独的上下文窗口,以避免注入潜在的恶意提示
  • 信任验证:首次运行代码库和新的 MCP 服务器需要信任验证
    • 注意: 使用 -p 标志非交互式运行时,信任验证被禁用
  • 命令注入检测:可疑的 bash 命令即使之前已加入白名单也需要手动批准
  • 失败关闭匹配:不匹配的命令默认需要手动批准
  • 自然语言描述:复杂的 bash 命令包含解释以便用户理解
  • 安全凭据存储: API 密钥和令牌经过加密。参见凭据管理

处理不受信任内容的最佳实践:

  1. 批准前审查建议的命令
  2. 避免将不受信任的内容直接传输到 CodeBuddy
  3. 验证对关键文件的建议更改
  4. 使用虚拟机(VM)运行脚本和进行工具调用,特别是在与外部 Web 服务交互时

MCP 安全 ​

CodeBuddy Code 允许用户配置模型上下文协议(MCP)服务器。允许的 MCP 服务器列表在源代码中配置,作为工程师检入源代码控制的 CodeBuddy Code 设置的一部分。

我们鼓励编写您自己的 MCP 服务器或使用您信任的提供商的 MCP 服务器。您可以为 MCP 服务器配置 CodeBuddy Code 权限。CodeBuddy 不管理或审计任何 MCP 服务器。

详见 MCP 集成文档。

Gateway 网络安全 ​

当通过 --serve 模式或 Daemon 启动 HTTP 服务时,CodeBuddy Code 采用多层防御保护 API 端点:

CORS 白名单 ​

仅允许来自合法源的跨域请求。非法 Origin 的请求(无论 OPTIONS 预检还是实际请求)均被直接拒绝,不执行任何业务逻辑。支持精确 origin(https://example.com)、子域通配(https://*.example.com)和全部允许(*)三种配置模式。通过环境变量 CODEBUDDY_CODE_CORS_ORIGINS 或 Settings gateway.corsOrigins 配置。

自定义请求头校验 ​

所有 API 请求必须携带 X-CodeBuddy-Request: 1 头。此机制利用浏览器安全策略:自定义头会强制触发 CORS preflight,且 no-cors 模式下浏览器不允许发送自定义头,从而阻止跨站请求伪造。

可通过 CODEBUDDY_DISABLE_REQUEST_VALIDATION=1 关闭。详见 HTTP API 安全。

认证保护 ​

codebuddy --serve 默认开启密码认证(secure by default)。这组端点包含执行进程(/api/v1/process/*)、读写任意文件(/api/v1/files/*、/api/v1/fs/*)和交互式终端(/api/v1/pty/*)等敏感能力,因此不再依赖"仅监听回环地址"作为安全边界——同机的其他进程以及浏览器中打开的网页都能触达回环端口。

启动时会打印随机密码和带密码的可点链接,点击后落 30 天有效期的会话 Cookie。API 请求需携带 Authorization: Bearer <password> 或该 Cookie(?password= 仅对首页有效)。

可用 --auth none 或 CODEBUDDY_GATEWAY_AUTH=none 显式关闭认证,此时启动会打印警告。关闭后同机任意进程都能通过该服务执行命令、读写文件,仅建议在隔离环境(容器 / 一次性沙箱)或 CI 中使用。

详见 HTTP API 认证。

沙箱安全 ​

CodeBuddy Code 支持 Bash 沙箱功能,将 bash 命令与您的文件系统和网络隔离:

沙箱隔离级别 ​

  • 文件系统隔离:通过 Read/Edit 权限控制文件访问
  • 网络隔离:通过 WebFetch 权限控制网络访问
  • 命令隔离:某些命令可以配置为在沙箱外运行

沙箱配置 ​

json
{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["git", "docker"],
    "network": {
      "allowUnixSockets": ["/var/run/docker.sock"],
      "allowLocalBinding": true
    }
  }
}

沙箱限制 ​

  • 平台支持:目前仅支持 macOS 和 Linux
  • 性能影响:沙箱化可能略微影响命令执行性能
  • 兼容性:某些工具可能在沙箱中无法正常工作

详见Bash 沙箱文档了解完整配置选项。

安全最佳实践 ​

处理敏感代码 ​

  • 批准前审查所有建议的更改
  • 为敏感仓库使用项目特定的权限设置
  • 定期使用 /permissions 审计您的权限设置
  • 使用沙箱功能提供额外隔离

团队安全 ​

  • 通过版本控制共享批准的权限配置
  • 培训团队成员安全最佳实践
  • 定期审查和更新权限策略
  • 使用项目级设置强制执行团队标准

权限配置最佳实践 ​

1. 最小权限原则

仅授予完成任务所需的最小权限:

json
{
  "permissions": {
    "allow": [
      "Read",
      "Edit(src/**/*.ts)",
      "Bash(npm:test,npm:build)"
    ],
    "deny": [
      "Edit(**/*.env)",
      "Bash(rm:*)",
      "Bash(sudo:*)"
    ]
  }
}

2. 保护敏感文件

始终拒绝访问包含敏感信息的文件:

json
{
  "permissions": {
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(secrets/**)",
      "Read(~/.ssh/**)",
      "Read(~/.aws/**)",
      "Edit(**/*.key)",
      "Edit(**/*.pem)"
    ]
  }
}

3. 审慎使用 WebFetch

默认情况下拒绝或询问网络请求:

json
{
  "permissions": {
    "ask": [
      "WebFetch"
    ],
    "allow": [
      "WebFetch(domain:github.com)",
      "WebFetch(domain:npmjs.com)"
    ]
  }
}

4. 限制危险命令

明确拒绝可能造成破坏的命令:

json
{
  "permissions": {
    "deny": [
      "Bash(rm:*)",
      "Bash(sudo:*)",
      "Bash(chmod:*)",
      "Bash(chown:*)",
      "Bash(curl:*)",
      "Bash(wget:*)"
    ]
  }
}

环境隔离 ​

1. 使用独立的开发环境

为不同的安全级别使用不同的环境:

bash
# 生产代码 - 严格权限
cd ~/production/app
codebuddy --permission-mode default

# 实验项目 - 宽松权限
cd ~/experiments/test
codebuddy --permission-mode acceptEdits

2. 容器化开发

使用 Docker 容器提供额外的安全边界:

bash
# 在容器中运行
docker run -it --rm -v $(pwd):/workspace codebuddy

代码审查流程 ​

1. 自动化审查前置

在提交前审查 CodeBuddy 的更改:

bash
# 查看所有更改
git diff

# 审查特定文件
git diff src/critical.ts

2. 使用钩子验证

配置 pre-commit hooks 验证更改:

json
{
  "hooks": {
    "PreToolUse": {
      "Edit": "npm run lint-staged"
    }
  }
}

3. 团队代码审查

重要更改需要团队成员审查:

bash
# 创建 PR 而不是直接提交
git checkout -b feature/codebuddy-changes
git push origin feature/codebuddy-changes

敏感数据保护 ​

1. 使用环境变量

不要在代码中硬编码敏感信息:

bash
# 错误示例
export API_KEY="sk-1234567890"

# 正确示例 - 使用环境变量管理工具
export $(cat .env.local | xargs)

2. 配置文件加密

对敏感配置文件进行加密:

bash
# 使用 git-crypt
git-crypt init
echo "secrets.json filter=git-crypt diff=git-crypt" >> .gitattributes

3. 定期轮换凭据

定期更换 API 密钥和访问令牌:

bash
# 使用 apiKeyHelper 动态获取密钥
{
  "apiKeyHelper": "/usr/local/bin/get-rotating-key.sh"
}

审计和监控 ​

1. 记录权限请求

跟踪 CodeBuddy 的权限请求:

json
{
  "hooks": {
    "PreToolUse": {
      "*": "echo \"[$(date)] Tool: $TOOL_NAME\" >> ~/.codebuddy/audit.log"
    }
  }
}

2. 定期审查日志

检查审计日志以发现异常:

bash
# 查看最近的工具使用
tail -f ~/.codebuddy/audit.log

# 搜索敏感操作
grep "Edit.*\.env" ~/.codebuddy/audit.log

3. 权限配置审计

定期审查权限配置:

bash
# 查看当前权限
codebuddy config get permissions

# 列出所有设置文件
find . -name "settings.json" -o -name "settings.local.json"

报告安全问题 ​

如果您发现 CodeBuddy Code 中的安全漏洞:

  1. 不要公开披露
  2. 通过 联系我们 报告
  3. 包含详细的重现步骤
  4. 在我们解决问题之前允许时间,然后再公开披露

安全检查清单 ​

在使用 CodeBuddy Code 之前,请确保:

相关资源 ​


通过适当的安全配置和最佳实践,确保 CodeBuddy Code 的安全使用