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安全, 云安全监控, 入侵痕迹, 安全扫描器, 数据集, 文档安全, 无后门, 日志审计, 版本审计, 程序破解, 网络信息收集, 网络安全审计, 软件供应链, 软件开发工具包, 静态分析