Balkiska/DKLENS
GitHub: Balkiska/DKLENS
一款带交互式终端菜单的 Docker 镜像漏洞扫描工具,通过比对 CVE 数据库帮助用户发现容器镜像中的已知安全漏洞并提供修复建议。
Stars: 2 | Forks: 0
# DKLENS
具有交互式终端菜单的 Docker 镜像漏洞扫描工具。
- 列出你的本地 Docker 镜像
- 从镜像文件系统中提取已安装的包
- 对照 CVE 数据库 (OSV + EUVD) 进行检查
- 按严重程度分类 (CRITICAL → LOW)
- 建议修复版本和升级命令
- 将结果导出为 PDF 或 JSON
## 支持的发行版
| 发行版 | 包格式 | 示例镜像 |
|---|---|---|
| Alpine Linux | APK | `alpine`, `python:alpine`, `node:alpine`, … |
| Wolfi / Chainguard | APK | `cgr.dev/chainguard/*`, `wolfi-base`, … |
| Debian | dpkg | `debian`, `python`, `node`, … |
| Ubuntu | dpkg | `ubuntu`, `python:slim`, … |
## 环境要求
- [Docker](https://docs.docker.com/get-docker/) (运行中)
- [Devbox](https://www.jetify.com/devbox/docs/installing_devbox/)
```
curl -fsSL https://get.jetify.com/devbox | bash
```
## 安装说明
```
git clone https://github.com/Balkiska/DKLENS.git
cd DKLENS
devbox shell
```
Devbox 会在首次运行时自动安装 Python、Poetry 以及所有依赖项。
## 使用方法
### 交互式菜单 (推荐)
```
./dklens start
```
这将打开一个完整的交互式菜单:
1. 使用方向键选择一个本地 Docker 镜像
2. DKLENS 会自动对其进行扫描
3. 扫描完成后,选择接下来要执行的操作:
- 按严重程度筛选 (CRITICAL / HIGH / MEDIUM / LOW)
- 导出为 PDF
- 导出为 JSON
- 扫描另一个镜像
- 退出
### CLI 扫描 (非交互式)
首先进入 devbox shell:
```
devbox shell
```
然后运行:
```
# 扫描并以表格形式显示结果
poetry run python main.py scan
# 输出为 JSON
poetry run python main.py scan --format json
# 导出为 PDF
poetry run python main.py scan --export report.pdf
# 绕过本地 cache
poetry run python main.py scan --no-cache
```
## 开发
### 运行应用
```
./dklens start
```
### 单元测试前置条件
```
devbox shell
```
### 运行单元测试
```
poetry run pytest tests/unit/ -v
```
### 运行 lint
```
poetry run ruff check .
```
### 自动修复 lint 错误
```
poetry run ruff check . --fix
```
## 本地缓存
扫描结果会本地缓存在 SQLite 中,因此同一个包绝不会被执行两次查询。
```
# 检查 cache
sqlite3 ~/.cache/dklens/cache.db "SELECT package_key, source, expires_at FROM cached_vulnerabilities;"
```
## Pre-commit hooks
Hooks 会在每次提交时自动运行:
- **ruff** — lint、格式化、import 排序
- **pre-commit-hooks** — 末尾空格、YAML 校验、大文件检查
- **gitleaks** — 敏感信息检测 (API keys、tokens、passwords)
绕过 hooks (不推荐):
```
git commit -m "my message" --no-verify
```
## 自动激活 (可选)
devbox 环境可以在进入项目目录时自动激活:
```
sudo apt install direnv
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
source ~/.bashrc
direnv allow
```
## 许可证
非商业许可证。商业使用需事先获得作者的书面许可。
详情请参阅 [LICENSE](LICENSE)。
标签:Docker, Python, Web截图, 安全防御评估, 容器安全, 无后门, 请求拦截, 逆向工具