secpipw:避免 PyPI 供应链攻击,最好用也最省事的方式。

$

不用学习,

不用配置,

不用改变使用习惯,

不用承受明显性能损失,

装上 secpipw,添加 pip 的别名为 spip,像原来的 pip 一样用,

但会远比原版 安全。

本项目目前尚处于 pre-release 阶段,不建议在生产环境下使用。

现在,本项目积极欢迎任何可能的贡献。GitHub

为什么选择 secpipw?

解决了什么问题

供应链投毒一直是网络安全里永恒的话题。现在市面上对此的解决方案,有成熟却性能开销大的 GuardDog,也有完全依赖付费 socket API 的 sfw。它们的问题在于:成熟如 GuardDog 的太笨重,不适合进入 CI 反而适合安全研究员静态解析。若对每一个 pip install 的下载产物(包括各种依赖)都跑一次 GuardDog 无疑会拖慢安装进度;而 sfw 虽然轻量,却是完全依靠付费的 socket API 完成,对于日常开发者而言,无疑又是一次经济负担。

secpipw 解决了这个问题。它通过给 pip 的安装器上钩子,将安全检查融合到了 pip install 的下载和安装流程中去。最新 GitHub Actions benchmark 会比较默认 spip install 和 pip install 在多个目标包上的完整下载和安装流程。主要中位数是 x-- 的 pip 时间。secpipw 完全免费提供给所有人。

当代,很多独立开发者的 CI 服务器被攻击导致 secret key 泄露,造成严重后果。如果安装了 secpipw,这样的风险会大大降低,同时不需要付费,不需要额外的性能开支,也不需要学习和配置。只有一次的 pip install secpipw 再设置一次别名,你就可以接着用 pip,却在无形中获得一层至关重要的保护网。

secpipw 的优势

  • 轻量。你感受不到它的存在。
  • 0 迁移或学习成本。你不需要任何配置,开箱即用。
  • 免费。secpipw 在 MIT 协议下开源。任何人都可以使用,修改或再分发。
  • 强大。经过测试可以完美防御如 LiteLLM,colorama 等知名攻击事件。
  • 多样化包管理器支持。保护 pip 以及常见的 pipx、poetry、uv 加包工作流。

多样化包管理器支持。

secpipw 不再只覆盖直接使用 pip 的场景。它可以先保护开发者常用的 加包流程,再把实际环境更新交还给原始工具完成。

阅读包管理器说明

spip install requests

使用 pip 自身解析器和安装器的受保护安装流程。

spipx install black

保护 install、inject 和 run 的预检查流程。

spoetry add requests

保护 add 和 self add 的预检查流程。

suv pip install requests

保护 pip install、add 和 tool 的预检查流程。

基准测试结果。

最新 GitHub Actions benchmark 会用本地 wheelhouse 比较默认 spip install 和 pip install 在 opencv-python、scipy、uv 三个目标包上的安装流程。

目标包 pip 中位数 spip 中位数 倍率 中位数开销
opencv-python -- -- x-- --
scipy -- -- x-- --
uv -- -- x-- --

Runs: --。 更新时间:--。 打开 GitHub Actions benchmark job。

开始安装。

先安装 secpipw,再用 spip 命令。最好把 pip 变成 spip 的别名,这样你原来的工作流完全不用变。

cmd(Windows)

pip install secpipw
doskey pip=spip $*

Bash(Linux)

pip install secpipw
echo "alias pip='spip'" >> ~/.bashrc
source ~/.bashrc

Zsh(macOS)

pip install secpipw
echo "alias pip='spip'" >> ~/.zshrc
source ~/.zshrc

你的 PyPI 供应链安全就这样搞定。

现在当你输入 pip install 的时候,会安全很多 :)

阅读我们的文档

GitHub