Files
Artemis-Eapil/docs/plans/2026-10-28-dependency-security.md

6.4 KiB
Raw Permalink Blame History

2026-10-28 依赖安全更新与兼容性验证

审计结果

范围为主仓库声明的 Python、前端 npm、后台原型依赖及可识别的构建依赖。使用当日 PyPI/pip-audit、npm audit、OSV 和上游安全公告;没有忽略漏洞或降低检查级别。

范围 更新前 更新后
uv.lock 中全部 169 个 registry 包,含开发依赖及非 Windows 平台包 11 个包命中,97 条公告记录 0 条,未跳过包
前端 npm 锁文件 17 个受影响包:3 critical、11 high、3 moderate 0 个受影响包
playground/backend_manager/requirements.txt 当日解析结果 54 个包,2 个包命中、3 条记录 52 个包,0 条,未跳过包
Python 构建工具的当日解析结果 — setuptools 84.2.1、Cython 3.3.0,0 条
Android Gradle Plugin 8.5.0 — OSV 直接包查询未检出公告;未解析完整 Gradle 构建工具传递依赖

公告可能含重复 ID 或别名,97 条不代表 97 个独立 CVE;npm 受影响包数也包含依赖链上的父包。零结果仅表示本次数据库未检出已知漏洞,不代表没有未知风险或业务安全问题。

远程 Python SDK 不含第三方运行时依赖;Android Helper 使用系统 API,不含第三方运行时库。独立 Artemis-Plugins 仓库、用户安装的插件、系统软件包和完整容器镜像不在上述零漏洞结论内。

版本调整

包 原版本 更新后
openai 3.3.0 3.40.0,沿用同日 SDK 更新
langchain / langchain-core 1.3.15 / 1.5.6 1.4.7 / 1.7.0
langchain-openai 1.5.2 1.7.3
langgraph / langgraph-sdk 1.2.11 / 0.4.2 1.2.18 / 0.4.10
httpx 0.28.1 保持 0.28.1,当日最新版
httpx2 / httpcore2 2.12.0 2.16.0
mcp 1.29.0 1.30.0
aiohttp 3.14.3 3.14.5
certifi 2026.7.22 2026.10.23
filelock 3.32.3 4.2.4
multidict 6.7.1 7.2.1
pillow 12.3.0 13.0.0
pyjwt 2.13.0 2.15.1
tornado 6.5.8 6.6
urllib3 2.7.0 2.8.0
virtualenv 21.7.4 21.15.1
Angular framework / compiler-cli 22.1.4 22.2.3
Angular CLI / build 22.1.6 22.2.4
Angular CDK 22.1.5 22.2.4
Vite 8.1.5 8.3.5
Piscina 5.2.0 5.3.2
原型 Nginx 基础镜像 1.27-alpine 1.30.6-alpine

langchain-community 0.4.2 和 langchain-mcp-adapters 0.3.2 保持不变。后者要求 MCP <2,因此主项目声明 mcp>=1.30.0,<2.0.0,使用兼容的 1.x 安全修复版本。其余联动升级见 uv.lock。

Angular build 22.2.4 仍精确依赖存在漏洞的 Vite 8.3.0,通过限定在 @angular/build 下的 npm override 使用 8.3.5,未使用 --force 或 --legacy-peer-deps。以后上游采用安全版本时可移除 override,重新审计并验证构建。

后台原型的 python-jose 3.5.0 和间接 ecdsa 0.19.2 没有可用修复版,改为 PyJWT[crypto]>=2.15.1,<3.0.0,保持算法白名单与 HTTP 401 错误处理。原型仍按 requirements 动态解析;该扫描结果不是所有旧镜像或旧安装环境的审计证明。

必要的适配

  • langchain-openai 1.7.x 对没有错误详情的 response.failed 抛出 ValueError("Response <id> failed.")。补充精确分类,保留 INVALID_OUTPUT 的有限重试;未把所有 ValueError 当成无效模型输出。
  • 补充失败流重试回归,验证不完整输出不会成为正式结论或工具动作,重试保留已有工具证据。
  • Responses 模拟传输改用 OpenAI 默认使用的 httpx2,并修正测试夹具中 request 同名遮蔽,确保超过 1 MiB 的中文工具参数确实经过分块 SSE/UTF-8 传输。
  • 原型 JWT 回归覆盖签发、声明、当前用户、过期、错误签名、算法不匹配、无签名、畸形 token 和缺失 subject。
  • MCP 的 audience 漏洞需要服务端配置配合,单纯升级不自动开启校验。本仓库没有配置 AuthSettings/token_verifier,当前不使用该 bearer-auth 路径;未来接入时必须同时设置 validate_token_resource 并提供正确的 token resource。

验证

  • 隔离环境完整默认 Python 测试:3207 通过、6 跳过、8 排除;102 条现有 Pillow getdata() 弃用警告,该接口计划在 Pillow 14 移除。
  • 随后改用 httpx2 的模型流、失败分类和 JWT 专项测试:41 通过;同步原 .venv 后同一组 41 项再次通过。
  • Ruff 格式/静态检查、质量基线、核心 Pyright 类型检查通过;Pyright 额外显式使用了升级后的解释器。
  • 锁文件校验、升级环境 uv pip check、git diff --check 通过。
  • 前端 ChromeHeadless:336 通过;生产构建通过,生成产物不纳入提交。
  • 主 Python、原型 Python、Python 构建工具及前端更新后复扫无已知漏洞。
  • Nginx 1.30.6 为当日官方稳定修复版本,Docker Hub 标签存在且 active。已尝试构建原型镜像,但 Docker Hub registry/auth 连接超时,尚未完成容器构建和运行验证,也未扫描完整镜像内的 OS 包。
  • 未调用付费模型、执行设备业务测试、发布提交或修改用户任务配置。

原始审计 JSON、解析清单和测试日志保存在本地被 Git 忽略的 artifacts/dependency-audit-20261028/。

生效

初次同步受到运行中服务占用 Pillow DLL 的阻止,已恢复旧环境并通过依赖一致性检查。用户随后明确表示已停止服务,原 .venv 已成功执行 uv sync --dev --locked 并再次通过版本核对与兼容性测试。

随后通过 artemis restart --no-open 恢复后台服务;/api/system/server-status 返回 running,首页 HTTP 200 且引用本次新前端构建。原环境全部 165 个已安装 distribution 的版本均与锁文件匹配。

本次沿用 ARTEMIS 2.3.0,按用户要求提交源码和锁文件,不发布。用户已明确无需构建 Docker,本次不再继续容器构建;修改 Dockerfile 不会更新已有容器。

上游依据