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