pip audit 不能直接查出所有漏洞,仅检测已安装包的已知cve,不分析源码、不覆盖私有包、存在数据延迟且忽略可编辑安装等。

pip audit 能直接查出所有漏洞吗
不能。pip audit 只检查已安装包的已知 CVE,不分析源码、不检测间接依赖的逻辑缺陷、不覆盖未打包进 PyPI 的私有包或 git 直接引用的依赖。
它依赖 pip-audit 自带的 pip-api 和官方 NVD 数据快照,更新有延迟(通常 1–3 天),遇到新爆的漏洞大概率漏报。
- 只对
pip install后的环境生效,对requirements.txt文件本身不扫描 - 默认跳过可编辑安装(
-e)和本地路径依赖,需加--include-editable才能覆盖 - 若项目用
poetry或pipenv管理,得先导出为pip freeze格式再扫,否则审计结果不完整
如何让 pip audit 发现更多真实风险
关键不是多扫几次,而是补全上下文:把锁文件、构建环境、运行时实际加载的包都纳入判断范围。
- 用
pip freeze --all替代pip freeze,强制包含 setuptools、wheel 等底层工具链包(它们也有 CVE) - 对 CI 流程,在
venv激活后、跑测试前执行pip audit --require-hashes,能揪出哈希不匹配导致的包篡改 - 配合
safety(safety check -r requirements.txt)交叉验证:它用不同数据源,常能发现pip audit漏掉的旧版本高危包
pyproject.toml 里写 dependency-groups 会影响审计结果吗
会,而且影响很隐蔽。如果只在 [project.optional-dependencies] 里声明 dev 或 test 组,但没在 CI 中显式安装,pip audit 就完全看不到这些包——哪怕它们在开发机上装了。
Ke361是一个开源的淘宝客系统,基于最新的ThinkPHP3.2版本开发,提供更方便、更安全的WEB应用开发体验,采用了全新的架构设计和命名空间机制, 融合了模块化、驱动化和插件化的设计理念于一体,以帮助想做淘宝客而技术水平不高的朋友。突破了传统淘宝客程序对自动采集商品收费的模式,该程序的自动 采集模块对于所有人开放,代码不加密,方便大家修改。集成淘点金组件,自动转换淘宝链接为淘宝客推广链接。K
立即学习“Python免费学习笔记(深入)”;
更麻烦的是,pip-tools 生成的 requirements.txt 默认不包含 optional 组,除非你手动加 --extra dev。
- 审计前务必确认:当前环境是否真包含了你要上线的全部依赖组合
- CI 中建议用
pip install .[dev,test]安装,再跑pip audit,避免“本地能过、线上翻车” -
dependency-groups是 PEP 732 提案,尚未被pip audit原生支持,别指望它自动识别组间冲突
audit 报 Warning: No known vulnerabilities found 是好事吗
不一定。这个提示只是说「没查到已知 CVE」,不代表安全。常见陷阱是依赖链里混入了被弃用但仍在用的包(比如 urllib3 ),NVD 可能还没给它打标,但社区早已公开绕过方案。
- 检查
pip show <pkg_name></pkg_name>输出的Version和Home-page,确认是否还在维护周期内 - 用
pip install --upgrade --dry-run <pkg></pkg>看升级路径,有些包升到新版要改代码(比如requests从 2.x 到 3.x),硬升反而引入新问题 - 真正要盯的是
pip audit --strict下的 exit code:0=无已知漏洞,1=有漏洞,2=网络错误或解析失败——别只看 stdout
依赖安全不是扫一次就完事的事。最危险的漏洞往往藏在没人碰的旧子依赖里,而 pip audit 的静默通过最容易让人放松警惕。









