MichelDiz/SupplyChainChecker
GitHub: MichelDiz/SupplyChainChecker
跨平台 Go 扫描器,用于检测 npm 和 Python 生态中已知供应链投毒包的受影响版本及主机入侵指标。
Stars: 0 | Forks: 0
# 供应链检查器 (Supply Chain Checker)
用于调查跨生态系统已知供应链受损版本的 Go 扫描器。
它检查:
- npm 清单和锁定文件:`package.json`、`package-lock.json`、`npm-shrinkwrap.json`、`yarn.lock`、`pnpm-lock.yaml`、`bun.lock`、`bun.lockb`
- Python 清单和锁定文件:`requirements*.txt`、`constraints.txt`、`pyproject.toml`、`uv.lock`、`poetry.lock`、`Pipfile`、`Pipfile.lock`、`setup.py`、`setup.cfg`
- `node_modules` 中已安装的 Node 依赖
- 通过 virtualenvs 和 `site-packages` 内的 `METADATA` 和 `PKG-INFO` 识别已安装的 Python 发行版
- 研究人员发布的针对 macOS、Linux 和 Windows 的基础主机 IOC (入侵指标)
被视为已受损的版本:
- `litellm@1.82.7`
- `litellm@1.82.8`
- `axios@1.14.1`
- `axios@0.30.4`
- `plain-crypto-js@4.2.1`
## 构建
```
go build -o supplychainchecker .
```
交叉编译:
```
GOOS=linux GOARCH=amd64 go build -o supplychainchecker-linux .
GOOS=windows GOARCH=amd64 go build -o supplychainchecker.exe .
GOOS=darwin GOARCH=arm64 go build -o supplychainchecker-macos .
```
## 使用
默认情况下,它扫描当前用户的主目录。在 macOS 上,这通常是类似 `/Users/your-username` 的路径,而不是整个磁盘。
```
./supplychainchecker
```
扫描指定根目录:
```
./supplychainchecker -root ~/DEV -root ~/Documents
```
扫描特定目录并跳过已知名称:
```
./supplychainchecker -root ~/DEV -skip-dir vendor -skip-dir archive
```
JSON 输出:
```
./supplychainchecker -root ~/DEV -json
```
禁用主机 IOC 覆盖范围并仅扫描项目文件:
```
./supplychainchecker -root ~/DEV -no-ioc
```
Windows:
```
.\supplychainchecker.exe -root C:\Users\me\source -root D:\repos
```
## `.checkignore`
如果您想使用 `HOME` 作为根目录而不进入嘈杂的文件夹,请在扫描根目录下创建一个 `.checkignore` 文件。
示例位于 `~/.checkignore`:
```
# 按名称在任意层级忽略
Library
.Trash
# 按相对于根目录的路径忽略
Applications
Downloads
DEV/archive
```
规则:
- 空行和以 `#` 开头的注释将被忽略
- 简单名称(如 `Library`)将忽略任何具有该基本名称 的目录或文件
- 包含 `/` 的路径(如 `DEV/archive`)将忽略相对于根目录的该前缀
- 您也可以使用 `-ignore-file` 更改文件名
## 退出代码
- `0`:未发现可疑内容
- `1`:发现可疑结果
- `2`:致命运行时错误
## 注意事项
- 包含 `^1.14.1` 或 `~1.14.1` 的 `package.json` 是风险迹象,但并不证明已安装。
- 引用 `litellm==1.82.7` 或 `litellm==1.82.8` 的 Python 清单是风险迹象,但并不证明已安装。
- 指向 `1.14.1` 或 `0.30.4` 的锁定文件或 `node_modules` 是暴露的有力证据。
- 指向 LiteLLM `1.82.7` 或 `1.82.8` 的 Python 锁定文件或已安装的包元数据是暴露的有力证据。
- 如果机器在攻击时间窗 `2026-03-31` 内安装了这些版本,请将该环境视为可能已受损,并轮换密钥。
## 扩展
新事件位于 `incidents.go` 中。要添加另一个已确认的供应链案例,请添加一个包含以下内容的条目:
- `ecosystem` (生态系统)
- `package` (包)
- 受损的 `versions` (版本)
- 简短的 `summary` (摘要)
标签:Axios, Cilium, compromises, Conpot, DNS 反向解析, EVTX分析, Go语言, GraphQL安全矩阵, IOC扫描, LiteLLM, Lockfile分析, macOS安全, NPM, pkg audit, Python, Windows安全, 云安全监控, 入侵痕迹, 安全扫描器, 数据集, 文档安全, 无后门, 日志审计, 版本审计, 程序破解, 网络信息收集, 网络安全审计, 软件供应链, 软件开发工具包, 静态分析