ChimangoScan/chimango-baseline
GitHub: ChimangoScan/chimango-baseline
该仓库是 SBSeg 2026 论文的可复现工件,通过均匀随机抽样与六款扫描器对 2,879 个 Docker Hub 镜像进行安全度量,并提供一键复现论文全部结果与图表的能力。
Stars: 0 | Forks: 0
# Chimango Baseline:Docker Hub 镜像的均匀随机抽样安全度量
这是 SBSeg 2026 论文《Docker Hub 镜像的均匀随机抽样安全度量》的 Artifact。它使用均匀随机抽样和六款扫描仪测量了典型 Docker Hub 镜像的安全态势:共分析了 **2,879** 个镜像,其中 **94.4%** 包含严重漏洞,人工审查发现 **99.5%** 的抽样敏感信息检测为误报。
# README 结构
| 章节 | 目的 |
|---|---|
| [申请的徽章](#considered-badges) | 申请的 SBSeg artifact 徽章 |
| [基本信息](#basic-information) | 参考环境与资源要求 |
| [依赖项](#dependencies) | 软件与发布的数据集 |
| [安全注意事项](#security-concerns) | 安全处理扫描器报告与容器镜像 |
| [安装说明](#installation) | 必需的设置 |
| [最小化测试](#minimal-test) | 快速离线功能检查 |
| [实验](#experiments) | 一键复现论文结果 |
| [许可证](#license) | Artifact 许可证 |
本仓库结构如下:`analysis/` 包含分析脚本、已提交的数值输出、人工标签以及图表生成器;`data/` 包含标准的 4,800 个仓库抽样;`expected/` 将论文中的声明映射到预期值;`docs/` 记录了方法学上的注意事项;`reproduce.sh` 是唯一的复现入口。
# 申请的徽章
申请全部四个 SBSeg 2026 徽章:
- **可用性 (SeloD):** 公开的源代码、数据、人工标签以及 MIT 许可证。
- **功能性 (SeloF):** 离线最小化测试可在干净检出后不到一秒内运行完成。
- **可持续性 (SeloS):** 分析过程按职责分离,并使用有文档记录的 JSON、JSONL、TSV、SQLite 和 PDF 输出。
- **可复现性 (SeloR):** 单条命令即可下载经过校验和验证的数据库,重新计算分析内容,重新生成图表,并检查 66 个论文数值。
# 基本信息
| 项目 | 要求 / 参考环境 |
|---|---|
| 操作系统 | Linux x86-64;已在 Ubuntu 上测试 |
| 参考机器 | AMD Ryzen 5 8600G,12 个逻辑 CPU,32 GB 内存 |
| Python | 研究使用 3.12 版本;支持 3.10 及以上版本 |
| GPU | 不需要 |
| 最小化测试 | 15 MB 峰值内存,可忽略的磁盘占用,实测 0.02 秒 |
| 离线图表复现 | 88 MB 峰值内存,不到 10 MB 输出,实测 1.6 秒 |
| 完整数据库复现 | 建议 4 GB 内存,11 GB 可用磁盘空间,下载后约 4--7 分钟 |
时间是在参考机器上测量的。下载时间取决于评估者的网络连接情况。
# 依赖项
分析过程使用了 Python 的标准库以及 `requirements.txt` 中指定的确切版本:Matplotlib 3.8.4、NumPy 1.26.4 和 zstandard 0.25.0。PyMongo 仅用于从私有爬取数据中抽取不同的样本,不属于 artifact 评估的一部分。
完整的输入是已发布的 `bl_snap.db.zst` 数据集:
| 文件 | 下载大小 | 解压后大小 | SHA-256 校验 |
|---|---:|---:|---|
| `bl_snap.db.zst` | 226 MB | 10.3 GB | 在 `reproduce.sh` 中自动完成 |
该脚本会从仓库的 `dataset-v1` 发布版下载数据库,验证压缩及解压后的 SHA-256 哈希值,并将其存储在 `data/` 目录下。下载和解压过程使用隔离的 Python 环境;评估者不需要系统级的全局软件包或手动下载数据集。
最初的扫描活动通过独立的 ChimangoScan 流水线使用了 Syft、Trivy、Grype、OSV-Scanner、Dockle 和 TruffleHog。它们的镜像引用使用了浮动的 `latest` 标签,并且它们的漏洞数据库是在扫描时获取的。因此,发布的报告是所测活动的记录;重新扫描可能会解析到更新的工具和漏洞数据。
# 安全注意事项
- 提交的样本和人工审查文件仅包含经过脱敏处理的值和截断的哈希值。请勿尝试针对线上服务验证任何疑似凭据。
- 发布的 SQLite 数据库包含原始的第三方扫描器报告,可能包含敏感检测结果。请将其保存在本地,不要重新分发提取出的值。
- 复现命令仅读取已发布的报告;它们不会执行来自被测镜像中的软件。
- 重新运行扫描器不在评估者的执行路径中,并且应在一次性的基础设施上进行,因为它会下载并解压任意的公开镜像。
# 安装说明
克隆仓库,创建一个隔离的虚拟环境,并将分析依赖项安装到其中:
```
git clone https://github.com/ChimangoScan/chimango-baseline.git && cd chimango-baseline && python3 -m venv .venv && .venv/bin/python -m pip install -r requirements.txt
```
不会进行任何全局安装。当虚拟环境存在时,`reproduce.sh` 会自动使用 `.venv/bin/python`;无需手动激活。
**预期时间:** 约 30--90 秒,具体取决于软件包索引和网络状况。
**预期资源:** 少于 500 MB 内存和 500 MB 磁盘空间。
# 最小化测试
运行离线功能检查:
```
make test
```
**预期时间:** 不到 1 秒;在参考机器上实测为 0.02 秒。
**预期资源:** 15 MB 峰值内存;不需要网络、数据库、Docker 或 GPU。
**预期输出:**
```
OK: random_sample.jsonl has 4800 repositories
OK: committed outputs match the paper (N=2879, 96.8% any-vuln, 0 official, 5/1100 secret TPs)
```
# 实验
## 声明 #1 — 论文主要结果与图表
**描述。** 本实验根据发布的报告数据库复现论文中有数据支持的结果。它会检查均匀抽样和可达性结果;漏洞普遍性和计数;扫描器分歧;基础镜像分布和安全加固发现;先前分析的比较;以及人工标记的敏感信息检测率。它还会重新生成论文的四张图表。
**执行。** 在仓库根目录下运行一条命令:
```
./reproduce.sh analyze
```
该命令在首次使用时会自动下载并验证数据集。后续运行会重用已验证的本地数据库。
**预期时间:** 数据集可用后约 4--7 分钟,外加首次下载并解压 226 MB 的时间。
**预期资源:** 建议 4 GB 内存和 11 GB 可用磁盘空间;不需要 GPU 或 Docker。
**预期结果:** 最后一行报告:
```
verify: 66 pass, 0 fail (skips listed in expected/_skip_note)
```
该命令将重新生成的图表写入:
- `figures/fig_panels3.pdf` — 每个镜像的漏洞、严重性和扫描器完成情况;
- `figures/fig_reach.pdf` — 4,800 个仓库随机抽样的结果;
- `figures/fig_repro.pdf` — 在随机样本上重复进行的先前分析;
- `figures/fig_extra.pdf` — 扫描器一致性、基础镜像分布和敏感信息标签类别。
主要复现值为 **2,879/4,800 已扫描 (60.0%)**,**94.4% 包含严重漏洞**,**96.8% 包含任意漏洞**,**947 个合并发现的平均值**,**70.5% 的不同单镜像 CVE 发现仅由一款扫描器报告**,以及 **在 1,100 个抽样敏感信息检测中有 5 个真实凭据(99.55% 误报)**。详细的从来源到数值的映射在 `expected/paper_values.json` 中;方法学上的注意事项和有意缺失的跨语料库数值记录在 `docs/REPRODUCIBILITY_REPORT.md` 中。
# 许可证
本 artifact 基于 [MIT 许可证](LICENSE) 发布。被扫描的第三方镜像及其内容仍归其各自所有者所有。
标签:Docker, Web截图, 安全度量, 安全防御评估, 容器安全, 请求拦截, 逆向工具