帮你快速理解、总结文档立即下载

安全概述

最近更新时间:2026-08-26 17:59:31
我的收藏

安全方法

安全基础

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

基于权限的架构

CodeBuddy Code 默认使用严格的只读权限。当需要额外操作(编辑文件、运行测试、执行命令)时,CodeBuddy Code 会请求明确的权限。用户可以控制是一次性批准操作还是自动允许。
我们将 CodeBuddy Code 设计得透明且安全。例如,我们在执行 bash 命令之前需要批准,让您拥有直接控制权。这种方法使用户和组织能够直接配置权限。
有关详细的权限配置,请参阅身份和访问管理

内置保护

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

用户责任

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

防范提示注入

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

核心保护

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

隐私保护

我们实施了多项保护措施来保护您的数据,包括:
敏感信息的有限保留期
限制访问用户会话数据
有关完整详情,请查看我们的服务条款隐私政策

额外保护措施

网络请求批准:发出网络请求的工具默认需要用户批准。
隔离的上下文窗口: Web 获取使用单独的上下文窗口,以避免注入潜在的恶意提示。
信任验证:首次运行代码库和新的 MCP 服务器需要信任验证。
注意:
使用 -p 标志非交互式运行时,信任验证被禁用。
命令注入检测:可疑的 bash 命令即使之前已加入白名单也需要手动批准。
失败关闭匹配:不匹配的命令默认需要手动批准。
自然语言描述:复杂的 bash 命令包含解释以便用户理解。
安全凭据存储: API 密钥和令牌经过加密,详见凭据管理
注意:
Windows WebDAV 安全风险: 在 Windows 上运行 CodeBuddy Code 时,我们建议不要启用 WebDAV 或允许 CodeBuddy Code 访问可能包含 WebDAV 子目录的路径,如 `\\\\*`。[WebDAV 已被 Microsoft 弃用](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\\(WebDAV\\)%20service%20is%20deprecated)由于安全风险。启用 WebDAV 可能允许 CodeBuddy Code 触发对远程主机的网络请求,绕过权限系统。
处理不受信任内容的最佳实践:
1. 批准前审查建议的命令
2. 避免将不受信任的内容直接传输到 CodeBuddy
3. 验证对关键文件的建议更改
4. 使用虚拟机(VM)运行脚本和进行工具调用,特别是在与外部 Web 服务交互时
说明:
虽然这些保护措施显著降低了风险,但没有系统能完全免疫所有攻击。在使用任何 AI 工具时,始终保持良好的安全实践。

MCP 安全

CodeBuddy Code 允许用户配置模型上下文协议(MCP)服务器。允许的 MCP 服务器列表在源代码中配置,作为工程师检入源代码控制的 CodeBuddy Code 设置的一部分。
我们鼓励编写您自己的 MCP 服务器或使用您信任的提供商的 MCP 服务器。您可以为 MCP 服务器配置 CodeBuddy Code 权限。CodeBuddy 不管理或审计任何 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 noneCODEBUDDY_GATEWAY_AUTH=none 显式关闭认证,此时启动会打印警告。关闭后同机任意进程都能通过该服务执行命令、读写文件,仅建议在隔离环境(容器 / 一次性沙箱)或 CI 中使用。
详见 HTTP API 认证

沙箱安全

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

沙箱隔离级别

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

沙箱配置

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

沙箱限制

平台支持:目前仅支持 macOS 和 Linux。
性能影响:沙箱化可能略微影响命令执行性能。
兼容性:某些工具可能在沙箱中无法正常工作。
详见 Bash 沙箱文档了解完整配置选项。

安全实践教程

处理敏感代码

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

团队安全

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

权限配置实践教程

1. 最小权限原则
仅授予完成任务所需的最小权限:
{
"permissions": {
"allow": [
"Read",
"Edit(src/**/*.ts)",
"Bash(npm:test,npm:build)"
],
"deny": [
"Edit(**/*.env)",
"Bash(rm:*)",
"Bash(sudo:*)"
]
}
}
2. 保护敏感文件
始终拒绝访问包含敏感信息的文件:
{
"permissions": {
"deny": [
"Read(.env)",
"Read(.env.*)",
"Read(secrets/**)",
"Read(~/.ssh/**)",
"Read(~/.aws/**)",
"Edit(**/*.key)",
"Edit(**/*.pem)"
]
}
}
3. 审慎使用 WebFetch
默认情况下拒绝或询问网络请求:
{
"permissions": {
"ask": [
"WebFetch"
],
"allow": [
"WebFetch(domain:github.com)",
"WebFetch(domain:npmjs.com)"
]
}
}
4. 限制危险命令
明确拒绝可能造成破坏的命令:
{
"permissions": {
"deny": [
"Bash(rm:*)",
"Bash(sudo:*)",
"Bash(chmod:*)",
"Bash(chown:*)",
"Bash(curl:*)",
"Bash(wget:*)"
]
}
}

环境隔离

1. 使用独立的开发环境
为不同的安全级别使用不同的环境:
# 生产代码 - 严格权限
cd ~/production/app
codebuddy --permission-mode default

# 实验项目 - 宽松权限
cd ~/experiments/test
codebuddy --permission-mode acceptEdits
2. 容器化开发
使用 Docker 容器提供额外的安全边界:
# 在容器中运行
docker run -it --rm -v $(pwd):/workspace codebuddy

代码审查流程

1. 自动化审查前置
在提交前审查 CodeBuddy 的更改:
# 查看所有更改
git diff

# 审查特定文件
git diff src/critical.ts
2. 使用钩子验证
配置 pre-commit hooks 验证更改:
{
"hooks": {
"PreToolUse": {
"Edit": "npm run lint-staged"
}
}
}
3. 团队代码审查
重要更改需要团队成员审查:
# 创建 PR 而不是直接提交
git checkout -b feature/codebuddy-changes
git push origin feature/codebuddy-changes

敏感数据保护

1. 使用环境变量
不要在代码中硬编码敏感信息:
# 错误示例
export API_KEY="sk-1234567890"

# 正确示例 - 使用环境变量管理工具
export $(cat .env.local | xargs)
2. 配置文件加密
对敏感配置文件进行加密:
# 使用 git-crypt
git-crypt init
echo "secrets.json filter=git-crypt diff=git-crypt" >> .gitattributes
3. 定期轮换凭据
定期更换 API 密钥和访问令牌:
# 使用 apiKeyHelper 动态获取密钥
{
"apiKeyHelper": "/usr/local/bin/get-rotating-key.sh"
}

审计和监控

1. 记录权限请求
跟踪 CodeBuddy 的权限请求:
{
"hooks": {
"PreToolUse": {
"*": "echo \\"[$(date)] Tool: $TOOL_NAME\\" >> ~/.codebuddy/audit.log"
}
}
}
2. 定期审查日志
检查审计日志以发现异常:
# 查看最近的工具使用
tail -f ~/.codebuddy/audit.log

# 搜索敏感操作
grep "Edit.*\\.env" ~/.codebuddy/audit.log
3. 权限配置审计
定期审查权限配置:
# 查看当前权限
codebuddy config get permissions

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

报告安全问题

如果您发现 CodeBuddy Code 中的安全漏洞:
1. 不要公开披露
2. 通过 联系我们 报告
3. 包含详细的重现步骤
4. 在我们解决问题之前允许时间,然后再公开披露

安全检查清单

在使用 CodeBuddy Code 之前,请确保:
已审查并配置适当的权限设置
敏感文件已添加到 deny 列表
危险命令已被阻止或需要确认
沙箱功能已根据需要启用
API 密钥和令牌安全存储
团队成员已接受安全培训
已建立代码审查流程
定期审计权限使用情况
了解如何报告安全问题

相关资源

身份和访问管理 - 配置权限和访问控制
Bash 沙箱 - bash 命令的文件系统和网络隔离
MCP 集成 - 配置 MCP 服务器权限
Hooks 文档 - 使用 hooks 进行自定义安全验证
设置配置 - 完整的配置选项