Docker 沙箱扫描
在隔离的 Docker 环境中运行安全扫描以最大化安全性。
为什么使用沙箱?
保护您的主机系统免受潜在恶意代码的侵害:
- ✅ 隔离执行 - 代码在容器化环境中运行
- ✅ 资源限制 - CPU、内存和时间限制
- ✅ 网络隔离 - 无外部网络访问
- ✅ 只读文件系统 - 无法修改主机文件
- ✅ 增强扫描 - 使用外部工具(Trivy、Checkov、GitLeaks)
设置
从 Docker Hub 拉取(推荐)
docker pull ongjin/security-scanner-mcp:latest
docker tag ongjin/security-scanner-mcp:latest security-scanner-mcp:latest
或从源代码构建
npm run docker:build
注意:构建需要 5-10 分钟并创建约 500MB 的镜像,包含:
- Trivy v0.50.4
- GitLeaks v8.18.4
- Checkov(基于 Python)
用法
基本沙箱扫描
我:在沙箱中扫描此代码
const apiKey = "AIzaSyC1234567890abcdef";
const query = `SELECT * FROM users WHERE id = ${userId}`;
Claude 将调用 scan-in-sandbox 它:
- 将代码写入临时文件
- 启动 Docker 容器
- 在容器内运行所有扫描工具
- 以 JSON 格式返回结果
- 清理容器
扫描不受信任的代码
我:此代码看起来可疑,请安全地扫描它
[粘贴可能的恶意代码]
安全配置
默认设置
内存限制:512MB
CPU 限制:0.5 核心
超时:30 秒
网络:禁用
文件系统:只读(除 /tmp)
能力:已删除(no-new-privileges)
可自定义的选项
您可以通过环境变量调整这些:
SANDBOX_MEMORY=1g \
SANDBOX_CPU=1.0 \
SANDBOX_TIMEOUT=60000 \
scan-in-sandbox
沙箱中可用的扫描工具
内置扫描工具
- 密钥检测
- SQL/NoSQL/命令注入
- XSS 漏洞
- 密码学问题
- 身份验证问题
- 路径穿越
外部工具(Docker 仅)
- GitLeaks:增强的密钥检测,包含熵分析
- Trivy:IaC 和容器漏洞扫描
- Checkov:基础设施即代码安全分析
Docker 容器详情
基础镜像
FROM node:20-alpine
安全加固
# 非 root 用户
RUN addgroup -g 1001 scanner && \
adduser -D -u 1001 -G scanner scanner
# 只读根文件系统
# 没有新特权
# 已删除的能力
# 网络已禁用
已安装的工具
# 验证工具已安装
docker run security-scanner-mcp:latest sh -c "
trivy --version &&
gitleaks version &&
checkov --version
"
结果格式
沙箱扫描返回综合 JSON:
{
"success": true,
"language": "javascript",
"filename": "code.js",
"issuesCount": 3,
"issues": [
{
"type": "Google API Key",
"severity": "critical",
"message": "Google API Key is hardcoded",
"fix": "Use environment variables",
"line": 1,
"metadata": {
"tool": "gitleaks",
"ruleId": "google-api-key",
"entropy": 4.2
}
}
],
"summary": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 0
}
}