name: 漏洞扫描 description: 自动化安全扫描,用于依赖项、代码和容器,使用Trivy、Snyk、npm audit。适用于CI/CD安全门、部署前审计、合规要求,或遇到CVE检测、过时包、许可证合规、SBOM生成错误。 keywords: Trivy, Snyk, npm-audit, OWASP, 依赖项扫描, CVE, 安全漏洞, 过时包, 许可证合规, SCA, SBOM, 容器扫描, 镜像扫描, 安全门, CI-CD安全, 部署前审计, 供应链安全, 漏洞检测, 安全合规, Docker扫描, Grype, 静态分析, 依赖项检查 license: MIT
漏洞扫描
自动化安全漏洞检测,覆盖代码、依赖项和容器。
依赖项扫描
# npm 审计
npm audit --audit-level=high
# Snyk
snyk test --severity-threshold=high
# Safety (Python)
safety check --full-report
容器扫描 (Trivy)
# 扫描容器镜像
trivy image myapp:latest --severity HIGH,CRITICAL
# 扫描文件系统
trivy fs --scanners vuln,secret .
GitHub Actions 集成
name: 安全扫描
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 运行 Trivy 漏洞扫描器
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
severity: 'CRITICAL,HIGH'
exit-code: '1'
- name: 运行 Snyk
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high
- name: npm 审计
run: npm audit --audit-level=high
代码分析 (Python 的 Bandit)
bandit -r src/ -ll -ii
Node.js 扫描器
const { execSync } = require('child_process');
function runSecurityScan() {
const results = {
npm: JSON.parse(execSync('npm audit --json').toString()),
trivy: JSON.parse(execSync('trivy fs --format json .').toString())
};
const critical = results.npm.metadata?.vulnerabilities?.critical || 0;
if (critical > 0) {
console.error(`找到 ${critical} 个严重漏洞`);
process.exit(1);
}
}
最佳实践
- 在CI/CD管道中集成扫描
- 对高/严重发现使构建失败
- 扫描依赖项和容器
- 跟踪漏洞随时间变化
- 记录接受误报
工具
- Trivy (容器, 文件系统)
- Snyk (依赖项, 代码)
- npm audit / yarn audit
- Bandit (Python)
- OWASP Dependency-Check