跳到主要内容

代码安全扫描

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 - 增强的密钥检测,包含熵分析
  • 业界验证的模式和规则
  • 更低的误报率

下一步