用途:扫描 Python 环境与依赖文件中的已知漏洞,查询 Python Packaging Advisory Database(PyPI JSON API)和 OSV 数据库,报告 CVE、GHSA ID 与修复版本。
安装:pip install pip-audit;CI 推荐 pipx install pip-audit;也可 conda install -c conda-forge pip-audit。需要 Python 3.10 或更新版本。
主要用法:pip-audit 审计当前环境;pip-audit -r requirements.txt 审计依赖文件;pip-audit . 审计本地项目(读取 pyproject.toml 或 pylock.*.toml);pip-audit --locked . 仅审计锁文件;加 -l 排除系统包。
漏洞服务:默认使用 PyPI JSON API(-s pypi),可用 -s osv 切换 OSV,并用 --osv-url 指定自托管端点。
输出格式:-f columns(默认)、json、markdown、cyclonedx-json、cyclonedx-xml;用 -o 保存到文件;--desc --aliases 输出描述与别名。
自动修复:--fix 自动升级,--fix --dry-run 预览;--dry-run 单独使用可报告将审计的依赖数量。
忽略漏洞:--ignore-vuln 可按 PYSEC、CVE 或 GHSA ID 抑制,可多次使用;建议记录每个被抑制 ID 的原因。
性能:默认自行解析依赖,可能较慢;输入已完全固定时可用 --no-deps -r requirements.txt,或 --require-hashes -r requirements.txt(等价 pip 哈希校验模式,最快且更安全)。
退出码:0 表示未发现漏洞,1 表示发现漏洞;无法内部抑制,可用 shell 惯用法处理。
环境变量:PIP_AUDIT_FORMAT、PIP_AUDIT_VULNERABILITY_SERVICE、PIP_AUDIT_DESC、PIP_AUDIT_PROGRESS_SPINNER、PIP_AUDIT_OUTPUT 可替代对应参数。
其他:可用 jq 仅报告有修复版本的漏洞;pipenv 项目可 pipenv run pip-audit -r <(pipenv requirements);私有索引用 --index-url 与 --extra-index-url,不支持交互式认证。
限制:不进行静态代码分析,不检测 Python 包链接的原生共享库漏洞,无法防御尚未进入任何公告数据库的恶意包;pip-audit -r INPUT 会解析并下载包,仅审计可信来源。