Skip to content

[chore] 修复依赖审计失败:urllib3 2.7.0 与 virtualenv 21.7.4 存在已知漏洞 #536

Closed

Description

@liujuanjuan1984

背景

问题

运行期依赖审计(uv export --no-dev + pip-audit):

包 当前版本 漏洞 ID 修复版本
urllib3 2.7.0 PYSEC-2026-4175 / 4176 / 4177 2.8.0

urllib3 经 requests <- google-api-core <- a2a-sdk 进入运行期依赖,属于运行期风险面。

开发依赖审计(scripts/dependency_health.sh,每月定时任务,近期持续失败):

包 当前版本 漏洞 ID 修复版本
urllib3 2.7.0 CVE-2026-97687 / 97688 / 97689 2.8.0
virtualenv 21.7.4 PYSEC-2026-4011 / 4012 / 4013 / 4014 21.7.11 ~ 21.7.13

方案

  1. 在 pyproject.toml 的运行期依赖中新增安全下限 urllib3>=2.8.0,沿用既有 click / pyasn1 的写法,使下限同时写入 wheel 元数据。
  2. uv lock 将 urllib3 升至 2.8.0。
  3. uv lock --upgrade-package virtualenv 将开发工具链 virtualenv 升至 21.14.3(高于全部修复版本)。

验收

  • uv run pip-audit --requirement <runtime requirements> → No known vulnerabilities found
  • uv run pip-audit --requirement <dev requirements> → No known vulnerabilities found
  • ./scripts/doctor.sh → 通过

关联

Activity

  1. liujuanjuan1984 commented on Oct 2, 2026

    @liujuanjuan1984
    CollaboratorAuthor

    进展:已在 PR #535 分支 dependabot/uv/uv-all-updates-a7757bd5ea 追加提交 63b9c94。

    验证结果:

    合并 PR #535 后本 issue 会自动关闭(PR 描述已含 Closes #536)。

  2. liujuanjuan1984 commented on Oct 2, 2026

    @liujuanjuan1984
    CollaboratorAuthor

    补充:审查中发现本分支新增的 urllib3 安全下限未同步到仓库的“安全下限”契约,已通过提交 2f706e3 收敛:

    • tests/package/test_dependency_contract.py 增加 urllib3 用例(2.7.0 → 2.8.0)
    • docs/compatibility.md、docs/guide.md 同步列出 urllib3>=2.8.0

    当前 PR #535 的 5 项 CI 检查全部通过。

  3. liujuanjuan1984 commented on Oct 2, 2026

    @liujuanjuan1984
    CollaboratorAuthor

    更正:上一则评论中提到的 2f706e3 已由 cb5fab2 撤销。按“依赖版本信息只由依赖文件承载”的原则,urllib3 下限仅保留在 pyproject.toml 与 uv.lock,docs/* 与 tests/* 恢复为与 main 一致。

    PR #535 最终改动仅 pyproject.toml、uv.lock 两个文件。

  4. liujuanjuan1984 commented on Oct 2, 2026

    @liujuanjuan1984
    CollaboratorAuthor

    进一步清理:仓库此前在 docs/compatibility.md、docs/guide.md、tests/package/test_dependency_contract.py 中已存在同类冗余(重复书写 click/pyasn1 安全下限、protobuf/sqlalchemy 版本区间/字面量)。已由提交 e068f45 一并清理,改为指向 pyproject.toml,仅保留 sqlalchemy[asyncio] extra 的打包契约检查。

    依赖版本唯一来源现为 pyproject.toml + uv.lock。

  5. liujuanjuan1984 commented on Oct 2, 2026

    @liujuanjuan1984
    CollaboratorAuthor

    进一步清理(提交 949379d):此前只去掉了版本数字,但文档里仍在描述依赖管理策略,本身仍属越界冗余。现已从 docs/compatibility.md、docs/guide.md 移除:

    • “Protobuf”与“Security floors”行(protobuf 范围、CI 依赖矩阵、安全下限)
    • uv.lock 作为 lint 版本来源的说明
    • SDK 固定/升级依赖的指引、pinned a2a-sdk release 表述
    • sqlalchemy[asyncio] 包元数据声明说明

    保留兼容性承诺(Python / A2A 协议 / OpenCode / SDK 线)与适配层评审结论。依赖信息现仅存在于 pyproject.toml、uv.lock 与 CI 配置。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions