Premkrishnavp887/security-toolkit
GitHub: Premkrishnavp887/security-toolkit
一个基于 Shell 脚本的蓝队安全扫描工具包,整合十余种开源扫描器对源代码和 Docker 镜像进行多维度的自动化安全审计。
Stars: 0 | Forks: 0
# 安全工具包
一个涵盖您的**源代码**和 **Docker 镜像**的防御性扫描 pipeline,完全基于标准且知名的开源扫描器构建(不包含自定义的漏洞利用代码——这是蓝队工具)。
## 文件
| 文件 | 用途 |
|---|---|
| `install-security-tools.sh` | 安装下面用到的所有扫描器 |
| `scan-source-code.sh` | 扫描源代码树:secrets、SAST、依赖项 CVE、IaC 配置不当、SBOM |
| `scan-docker-image.sh` | 您原有的镜像扫描器 + Dockle (CIS Docker Benchmark) + TruffleHog |
| `run-full-audit.sh` | 连续运行两项扫描,并将结果合并到一个文件夹中 |
## 快速开始
```
chmod +x *.sh
# 一次性 setup
./install-security-tools.sh
# 一次性扫描所有内容
./run-full-audit.sh /path/to/your/repo your-image:tag
# 或独立运行它们
./scan-source-code.sh /path/to/your/repo
./scan-docker-image.sh your-image:tag
```
如果您只想扫描源代码(还没有镜像),只需省略镜像参数:`./run-full-audit.sh /path/to/your/repo`。
## 检查内容
**源代码 (`scan-source-code.sh`)**
- Git 卫生 —— 追踪的大文件,`.gitignore` 对易出现 secrets 模式的覆盖情况
- Secrets —— **gitleaks** (git 历史) + **trufflehog** (已验证 + 未验证,文件系统)
- SAST —— **semgrep**,包含 `auto` + OWASP Top 10 + secrets 规则集
- 依赖项 CVE —— **osv-scanner** 和 **trivy fs**,加上特定生态系统的工具(仅在存在匹配的清单文件时运行):`npm audit`、`pip-audit` + `bandit` (Python)、`govulncheck` (Go)、`cargo audit` (Rust)、`bundler-audit` (Ruby)
- IaC / Dockerfile 配置不当 —— **checkov**、**hadolint**
- SBOM —— **syft** (CycloneDX)
- 针对一小部分经典的危险模式(如 `eval(`、`shell=True`、硬编码的私钥 header 等)进行补充性 grep —— 这是一个粗略的网,不能替代 semgrep 的结果
**Docker 镜像 (`scan-docker-image.sh`)**
- CVE —— **trivy** 和 **grype**(两个独立的漏洞数据库)
- SBOM —— **syft**
- **Docker Scout** CVE 分析
- **Dockle** —— CIS Docker Benchmark / 镜像最佳实践(新增)
- 完整的镜像元数据、layer 历史记录、entrypoint/cmd/env 检查
- Root 用户检测、可疑环境变量名检测
- 文件系统解压,然后进行:敏感文件发现、SUID/SGID 二进制文件、全局可写文件、**trufflehog** secret 扫描(新增)、**ClamAV** 恶意软件扫描
- Dockerfile 配置不当 —— **trivy config**、**hadolint**
## 为什么有两个 secret 扫描器和两个 CVE 扫描器?
不同的引擎使用不同的检测规则和数据库,在实际应用中它们产生的结果经常有分歧,因此同时运行两者可以显著减少漏报 —— Trivy 的 secret 检测器和 TruffleHog 的检测器都能捕捉到对方遗漏的内容,Trivy 和 Grype 的 CVE 数据源也是如此。
## 诚实的局限性
这些脚本输出的干净报告**并不**意味着项目是安全的。
它们不涵盖:业务逻辑缺陷、身份验证/授权漏洞、运行时配置(网络策略、RBAC、您的 orchestrator 中的 secrets 管理)、动态测试(DAST/pentest)、镜像签名/溯源,或者针对您 CI pipeline 本身的供应链攻击。请将此视为安全工程师在进行手动审查之前会运行的自动化第一道关卡 —— 而不是它的替代品。
## 注意事项
- 如果未安装底层工具,每个检查都会优雅地写入 `[SKIPPED]`,因此您可以在安装所有内容之前或之后运行任何脚本。
- `install-security-tools.sh` 面向基于 apt 的 Linux (Debian/Ubuntu)。在其他发行版上,只要存在相应的运行时,pip/go/cargo/gem/curl-installer 步骤仍然有效;只有 ClamAV 的自动安装是 apt 专有的。
- 如果您在 CI 中使用它们,`trivy`、`grype`、`semgrep` 和 `gitleaks` 都支持 `--exit-code`/fail-on_severity 标志,这样 pipeline 就可以在出现新的 CRITICAL 发现时硬失败 —— 如果您需要任何脚本的 CI-gate 变体,请随时提出。
标签:Cutter, DevSecOps, Docker, LLM防护, SAST, SBOM, 上游代理, 安全扫描, 安全防御评估, 时序注入, 盲注攻击, 硬件无关, 请求拦截