L1ghtn1ng/package-checker

GitHub: L1ghtn1ng/package-checker

一款跨平台的恶意依赖包扫描工具,通过比对 Socket 供应链攻击数据源,检测项目依赖清单中是否存在已知恶意包。

Stars: 2 | Forks: 1

# package-checker `package-checker` 会扫描项目目录中的 package manifests,以对照 Socket 供应链攻击活动包进行检查。 支持的 manifests: - npm:`package.json`、`package-lock.json` - Python/PyPI:`pyproject.toml`、`requirements.txt` - Go modules:`go.mod` - PHP/Composer:`composer.json`、`composer.lock` 当项目包含 `node_modules` 时,`package-checker` 还会扫描 `node_modules/` 和 `node_modules/@scope/` 下已安装的 npm 包根目录。它不会递归遍历嵌套的依赖树。 发布版本构建会发布 Linux 软件包(`.deb`、`.rpm`、Arch 软件包产物)、适用于 Intel 和 Apple Silicon 的 macOS `.pkg` 安装程序,以及独立的 Windows `.exe` 产物。 CI 还会对 Linux、macOS Intel、macOS Apple Silicon 和 Windows 的发布目标进行交叉编译,以便在裁剪发布标签之前发现可移植性退化问题。 ## 用法 ``` package-checker --dir /path/to/project ``` 在需要时覆盖缓存文件的位置: ``` package-checker --dir /path/to/project --cache-file /tmp/package-checker-feed.json ``` ## 注意事项 默认数据源使用 Socket 公开的供应链攻击包 API。扫描器从活动 `16` 开始,容忍在已知的 `/25/packages` 数据源之前出现的稀疏活动 ID,并在覆盖该范围后遇到第一个 `404 Not Found` 时停止。 Socket 活动条目可以包含包版本。当一个条目具有版本号时,只有当 manifest 中包含完全相同的锁定版本时,`package-checker` 才会报告匹配。没有版本号的条目则按包名称进行匹配。 通常,此工具旨在用作发布前检查,以确保您的项目中没有使用已知的恶意包。 由于数据源中存在恶意包,此工具应作为全面安全策略的一部分使用,而不应作为包安全的唯一方法依赖。 它能快速指示某个包是否为恶意包,并有助于在开发过程的早期识别潜在的安全风险。 并且它是抵御恶意包的良好第二道防线,因为每天都有大量被标记为恶意的新包发布。 因此很难跟上所有这些包。此工具是尽可能跟上恶意包的一个好方法。 Linux 发布二进制文件被构建为启用了立即绑定的 PIE 可执行文件,因此它们在 ELF 元数据中会暴露 `GNU_RELRO`、`BIND_NOW` 和 `PIE`。 ## 依赖 从源码构建需要 Go 1.26 此工具仅使用第三方库来支持基于 toml 的配置文件 github.com/pelletier/go-toml/v2,除此之外全都是 golang 标准库,因为 golang 没有内置对 toml 的支持。
标签:EVTX分析, Python安全, 云安全监控, 依赖审查, 日志审计, 静态分析