diff --git a/docker/Dockerfile b/docker/Dockerfile index de0e8c764..c047cd2c3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,7 +6,8 @@ ARG MOVIEPILOT_PYTHON_VERSION="3.14.7" FROM ghcr.io/astral-sh/uv:latest AS uv -FROM rclone/rclone:1.75.0@sha256:b06aed988cf5967de7c25be5925240983981c757f4ed1ac9d2fa659d51d60548 AS rclone +# rclone v1.75.0 包含受 CVE-2026-46603 影响的 x/image v0.44.0,临时固定已修复的官方 Beta 摘要。 +FROM rclone/rclone:beta@sha256:d6f5448594ecefefcf09cfeaf85cb7a21a866328032576ce2c1813e7b59c66dc AS rclone FROM mwader/static-ffmpeg:8.1.1@sha256:735f84b905e00d5c618b667f0b053f83b1096f5fc404c607e6134bf2275a0e0a AS ffmpeg diff --git a/tests/test_release_supply_chain.py b/tests/test_release_supply_chain.py index fc6262d33..9cf347f09 100644 --- a/tests/test_release_supply_chain.py +++ b/tests/test_release_supply_chain.py @@ -130,6 +130,15 @@ def test_base_image_uses_refreshable_tag_and_apt_does_not_upgrade_in_place() -> assert "\n util-linux \\\n" in dockerfile +def test_rclone_image_uses_cve_2026_46603_patched_build() -> None: + """rclone 制品必须固定到包含 x/image 漏洞修复的不可变镜像。""" + dockerfile = DOCKERFILE.read_text(encoding="utf-8") + + assert "rclone/rclone:1.75.0" not in dockerfile + patched_rclone_image = "rclone/rclone:beta@sha256:d6f5448594ecefefcf09cfeaf85cb7a21a866328032576ce2c1813e7b59c66dc" + assert f"FROM {patched_rclone_image} AS rclone" in dockerfile + + def test_release_audits_locked_runtime_dependencies_before_building() -> None: """正式版和 Beta 构建前必须分别审计两套锁定运行依赖。""" for workflow_path in (RELEASE_WORKFLOW, BETA_WORKFLOW):