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截图, 安全防御评估, 容器安全, 无后门, 请求拦截, 逆向工具