代码安全扫描
Security Scanner MCP 为多种编程语言提供综合的代码安全扫描。
支持的编程语言
- JavaScript / TypeScript
- Python
- Java
- Go
漏洞分类
🔑 硬编码密钥
检测源代码中硬编码的 API 密钥、密码和令牌。
我们检测的内容:
- AWS 访问密钥和秘钥
- Google API 密钥和 OAuth 秘密
- GitHub 令牌
- Slack 令牌
- 数据库连接字符串
- 私钥(RSA、EC、SSH)
- JWT 令牌
- Stripe、Twilio、SendGrid API 密钥
- 韩国服务(Kakao、Naver API 密钥)
示例:
// ❌ 易受攻击
const apiKey = "AIzaSyC1234567890abcdef";
const awsKey = "AKIAIOSFODNN7EXAMPLE";
// ✅ 安全
const apiKey = process.env.GOOGLE_API_KEY;
const awsKey = process.env.AWS_ACCESS_KEY_ID;
💉 注入漏洞
SQL 注入:
// ❌ 易受攻击 - 字符串拼接
const query = "SELECT * FROM users WHERE id = " + userId;
const query = `SELECT * FROM users WHERE id = ${userId}`;
// ✅ 安全 - 预处理语句
const query = "SELECT * FROM users WHERE id = ?";
db.query(query, [userId]);
NoSQL 注入:
// ❌ 易受攻击
db.collection.find({ username: req.body.username });
// ✅ 安全
const username = validator.escape(req.body.username);
db.collection.find({ username });
命令注入:
// ❌ 易受攻击
exec(`ping ${userInput}`);
// ✅ 安全
execFile('ping', [userInput]);
🌐 跨站脚本(XSS)
检测的模式:
- React 中的
dangerouslySetInnerHTML innerHTML/outerHTML赋值- jQuery
.html()方法 - Vue
v-html指令 eval()和new Function()document.write()
示例:
// ❌ 易受攻击
element.innerHTML = userInput;
element.dangerouslySetInnerHTML = { __html: userInput };
// ✅ 安全
element.textContent = userInput;
// 或使用 DOMPurify
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userInput);
🔐 密码学问题
我们检测的内容:
- 弱哈希算法(MD5、SHA1)
- 不安全的随机数生成(
Math.random()) - 硬编码的加密密钥/初始化向量
- 禁用 SSL 证书验证
- 易受攻击的 TLS 版本(1.0、1.1)
示例:
// ❌ 易受攻击
const hash = crypto.createHash('md5');
const random = Math.random();
// ✅ 安全
const hash = crypto.createHash('sha256');
const random = crypto.randomBytes(32);
🔒 身份验证与会话安全
JWT 问题:
- 允许
none算法 - 无过期时间
- 弱秘钥
Cookie 安全:
- 缺少
httpOnly标志 - 缺少
secure标志 - 缺少
sameSite属性
CORS 问题:
- 生产环境中的通配符源
- 通配符凭证
示例:
// ❌ 易受攻击
res.cookie('session', token);
app.use(cors({ origin: '*', credentials: true }));
// ✅ 安全
res.cookie('session', token, {
httpOnly: true,
secure: true,
sameSite: 'strict'
});
app.use(cors({
origin: 'https://yourdomain.com',
credentials: true
}));
📁 文件和路径漏洞
路径穿越:
// ❌ 易受攻击
const file = fs.readFileSync(req.query.path);
// ✅ 安全
const safePath = path.join(SAFE_DIR, path.basename(req.query.path));
const file = fs.readFileSync(safePath);
危险的文件操作:
- 递归删除用户输入
- 不安全的文件上传
- Zip Slip 漏洞(Java)
- Pickle 反序列化(Python)
用法
扫描所有漏洞类型
我:扫描此代码以查找安全问题
[粘贴代码]
Claude 将使用运行所有扫描工具的 scan-security 工具。
扫描特定漏洞类型
使用单个工具进行有针对性的扫描:
scan-secrets- 仅密钥检测scan-injection- 仅注入漏洞scan-xss- 仅 XSS 风险scan-crypto- 仅密码学问题scan-auth- 仅身份验证/会话问题scan-path- 仅文件/路径漏洞
外部工具集成
在 Docker 沙箱中运行时,扫描工具还使用:
- GitLeaks v8.18.4 - 增强的密钥检测,包含熵分析
- 业界验证的模式和规则
- 更低的误报率