SuperAPI AI 工具集

software-supply-chain-failures

安全与审计

查看项目

更新于 10-16 02:49

技能介绍

用途

该技能针对 OWASP Top 10:2025 中的 A03:2025「软件供应链失败」类别,提供在 Python 应用中检测、评估与修复相关问题的专家指引。A03:2025 由 A06:2021「易受攻击和过时的组件」扩展而来,是社区投票第一的关注点,也是整个 OWASP Top 10:2025 中按利用分数计算的最高风险类别。

覆盖范围

供应链失败贯穿完整生命周期,包括:未跟踪或未监控的直接与传递依赖;存在未修补已知 CVE 的脆弱或不受支持组件;缺少 SBOM(软件物料清单)管理;未加固的 CI/CD 流水线(缺乏职责分离、未签名构建);不受信任或仿冒(typosquatting)的包来源;延迟或缺失的补丁节奏;构建系统被攻陷(如 SolarWinds 2019、Log4Shell 2021、npm 蠕虫)。

关键 CWE:CWE-1104(使用无人维护的第三方组件)、CWE-1395(依赖存在漏洞的第三方组件)、CWE-1329(依赖无法更新的组件)。

主要能力

漏洞检测工具运行手册

  • pip-audit:针对 OSV + PyPI Advisory DB 扫描。命令包括 pip install pip-audit、pip-audit、pip-audit -r requirements.txt、pip-audit -r requirements.txt -f json -o audit-results.json、pip-audit --fix。
  • safety:针对 Safety DB / PyUp 扫描。命令包括 pip install safety、safety check、safety check -r requirements.txt、safety check --json。
  • osv-scanner:使用 Google OSV 数据库。go install github.com/google/osv-scanner/cmd/osv-scanner@latest,osv-scanner --lockfile=requirements.txt .。
  • Trivy:trivy fs --scanners vuln .、trivy image myapp:latest。

CI/CD 集成建议:在每个 PR 上运行 pip-audit + safety,对 HIGH/CRITICAL 级别发现使构建失败。

SBOM 生成与管理

使用 cyclonedx-bom:pip install cyclonedx-bom,cyclonedx-py environment -o sbom.json --format json、cyclonedx-py requirements requirements.txt -o sbom.json --format json、cyclonedx-py poetry -o sbom.json。使用 pip-licenses 进行许可证合规:pip install pip-licenses、pip-licenses --format=json --output-file=licenses.json。SBOM 应包含包名、版本与哈希、许可证标识符、生成时的已知漏洞、传递依赖树。

哈希锁定与锁文件

requirements.txt 中应使用哈希锁定(flask==3.0.0 后附 --hash=sha256:...),生成方式为 pip install pip-tools 与 pip-compile --generate-hashes requirements.in -o requirements.txt。锁文件工具:Poetry(poetry.lock,poetry install --no-root)、uv(uv.lock,uv sync)、pip-tools(compiled requirements.txt,pip-sync requirements.txt)、Pipenv(Pipfile.lock,pipenv install --ignore-pipfile)。关键检查:锁文件已提交至版本控制、CI 从锁文件安装、定期(至少每周)重新生成锁文件、配置 Dependabot / Renovate Bot。

传递依赖审计

pipdeptree:pip install pipdeptree、pipdeptree --json-tree > deptree.json、pipdeptree --reverse --packages flask。guarddog 检测恶意包:pip install guarddog、guarddog pypi scan flask、guarddog pypi verify flask 3.0.0。Bandit 标记危险导入模式(如 CWE-426 不受信任搜索路径):bandit -r . -t B322,B323,B411。

CI/CD 流水线加固

最低安全要求:流水线认证启用 MFA(使用 OIDC 令牌而非静态密钥)、签名构建(sigstore / cosign)、防篡改日志(不可变审计日志如 Rekor)、依赖固定、最小权限、分阶段发布(金丝雀部署)。GitHub Actions 应按提交 SHA 固定(如 actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683),而非按标签。SLSA 框架合规级别:Level 1(构建过程有文档、基本来源信息)、Level 2(构建服务生成签名来源)、Level 3(加固构建平台、不可伪造来源)。slsa-verifier 命令:pip install slsa-verifier、slsa-verifier verify-artifact mypackage.tar.gz --provenance-path provenance.json --source-uri github.com/myorg/myrepo。

FastAPI 与 Flask 测试目标

Flask 直接依赖:flask、flask-login、flask-wtf、sqlalchemy;关键传递依赖:Jinja2、Werkzeug、MarkupSafe、itsdangerous。FastAPI 直接依赖:fastapi、uvicorn、sqlalchemy、pydantic;关键传递依赖:Starlette、anyio、httpx、h11。Bandit 全扫描:pip install bandit、bandit -r . -t B301,B302,B303,B324,B411,B412 --format json -o bandit-report.json。关键规则:B301(pickle 反序列化风险)、B302(marshal 风险)、B411(xmlrpc 导入)、B412(httpoxy 检测)。

使用方式

文档提供快速启动清单:CI 中 pip-audit 与 safety 通过(无 HIGH/CRITICAL);所有依赖固定于锁文件;锁文件已提交并用于 CI 安装;生成 SBOM(cyclonedx-py)并作为 CI 制品存储;启用 Dependabot 或 Renovate Bot;GitHub Actions 按提交 SHA 固定;未在未验证路径上使用 sys.path.insert() / sys.path.append();发布包达到 SLSA Level 2+;每周安排锁文件刷新。

适用场景

适用于 Python 应用(尤其 Flask、FastAPI 项目)的安全审计、CI/CD 流水线加固、依赖管理与 SBOM 合规建设。

限制

资料仅涉及 Python 生态;提供的工具命令与版本行为可能随工具更新而变化;SLSA 合规、生产部署节奏等需结合组织实际环境判断。