idohomri-io/repo-scanner
GitHub: idohomri-io/repo-scanner
一款跨平台的 daemon 式代码库依赖漏洞扫描工具,支持批量克隆多平台仓库、运行漏洞检测并生成标准化报告。
Stars: 0 | Forks: 0
# Repo Scanner
用于扫描代码库以查找易受攻击依赖项的小型 daemon。
扫描器在设计上是跨平台的:
1. 从 `REPOS` 或 `repos.txt` 读取仓库。
2. 克隆每个仓库,或对本地路径进行快照。
3. 对检出的源代码运行 scanner adapter。
4. 将发现的结果标准化为 JSON。
5. 生成 Markdown 和 JSON 报告。
6. 可选:将结果发送到 webhook,并请求 LLM 生成简明的修复摘要。
OSV-Scanner 是默认的漏洞数据源。LLM 是可选的,仅用于解释和优先处理扫描器的发现结果,而不是用于判断依赖项是否存在漏洞。
## 配置
编辑 `docker-compose.yml` 中的 `environment` 块。无需 `.env` 文件。
仓库配置为以逗号分隔的 `REPOS` 值。
支持的仓库格式:
```
owner/repo
https://github.com/owner/repo.git
https://gitlab.com/group/project.git
https://bitbucket.org/workspace/project.git
git@gitlab.com:group/project.git
/absolute/path/to/local/repo
```
对于私有的 HTTPS 仓库,请设置对应平台的 token:
```
environment:
GH_TOKEN: ...
GITLAB_TOKEN: ...
BITBUCKET_USERNAME: your-bitbucket-username
BITBUCKET_TOKEN: ...
```
GitHub 的 `owner/repo` 简写会展开为 `https://github.com/owner/repo.git`,并在设置时使用 `GH_TOKEN`。
对于 SSH Git URL,请将 SSH 凭据挂载或提供到容器环境中。
## 运行
```
docker compose up -d
```
提供的 `docker-compose.yml` 使用已发布的镜像:
```
ghcr.io/idohomri-io/repo-scanner:latest
```
报告会写入 `reports/YYYY-MM-DD.md`,标准化后的发现结果会写入 `reports/YYYY-MM-DD.findings.json`。
如果设置了 `WEBHOOK_URL`,扫描器会 POST 一个 JSON 数组,其中每个仓库对应一个对象:
```
[
{
"date": "2026-06-19",
"repo": "owner/repo",
"status": "vulnerable",
"manifests": ["package-lock.json"],
"summary": {
"critical": 0,
"high": 1,
"moderate": 0,
"low": 0,
"unknown": 0,
"failed": 0
},
"findings": [],
"error": null
}
]
```
`status` 的取值为 `clean`、`vulnerable` 或 `failed` 之一。
## 可选的 LLM 建议
禁用 LLM 输出:
```
LLM_PROVIDER: none
```
使用 Ollama:
```
LLM_PROVIDER: ollama
LLM_ENDPOINT: http://host.docker.internal:11434
LLM_MODEL: llama3.1
```
使用兼容 OpenAI 的 API:
```
LLM_PROVIDER: openai-compatible
LLM_ENDPOINT: https://api.openai.com/v1
LLM_MODEL: gpt-4.1-mini
LLM_API_KEY: ...
```
## 退出码
当发现严重/高危漏洞,或至少有一个仓库扫描失败时,`scan.sh` 会以 `1` 退出。daemon 入口点会记录该情况,并按配置的间隔继续运行。
标签:Cutter, Docker, 依赖安全, 安全防御评估, 对称加密, 网络安全研究, 自动化审计, 请求拦截