mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-06 16:07:01 +08:00
ci: time-bound vulnerability exceptions (#6396)
This commit is contained in:
@@ -4,58 +4,68 @@ vulnerabilities:
|
|||||||
- Python
|
- Python
|
||||||
purls:
|
purls:
|
||||||
- pkg:pypi/msgpack@1.1.2
|
- pkg:pypi/msgpack@1.1.2
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The finding belongs to the base image's system pip and is not imported by MoviePilot.
|
statement: The finding belongs to the base image's system pip and is not imported by MoviePilot.
|
||||||
- id: CVE-2025-47273
|
- id: CVE-2025-47273
|
||||||
paths:
|
paths:
|
||||||
- Python
|
- Python
|
||||||
purls:
|
purls:
|
||||||
- pkg:pypi/setuptools@70.3.0
|
- pkg:pypi/setuptools@70.3.0
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The finding belongs to the base image's system pip and is not used for dependency installation.
|
statement: The finding belongs to the base image's system pip and is not used for dependency installation.
|
||||||
- id: CVE-2026-33818
|
- id: CVE-2026-33818
|
||||||
paths:
|
paths:
|
||||||
- usr/bin/rclone
|
- usr/bin/rclone
|
||||||
purls:
|
purls:
|
||||||
- pkg:golang/stdlib@v1.26.5
|
- pkg:golang/stdlib@v1.26.5
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
||||||
- id: CVE-2026-39821
|
- id: CVE-2026-39821
|
||||||
paths:
|
paths:
|
||||||
- usr/bin/rclone
|
- usr/bin/rclone
|
||||||
purls:
|
purls:
|
||||||
- pkg:golang/stdlib@v1.26.5
|
- pkg:golang/stdlib@v1.26.5
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
||||||
- id: CVE-2026-46600
|
- id: CVE-2026-46600
|
||||||
paths:
|
paths:
|
||||||
- usr/bin/rclone
|
- usr/bin/rclone
|
||||||
purls:
|
purls:
|
||||||
- pkg:golang/stdlib@v1.26.5
|
- pkg:golang/stdlib@v1.26.5
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
||||||
- id: CVE-2026-56853
|
- id: CVE-2026-56853
|
||||||
paths:
|
paths:
|
||||||
- usr/bin/rclone
|
- usr/bin/rclone
|
||||||
purls:
|
purls:
|
||||||
- pkg:golang/stdlib@v1.26.5
|
- pkg:golang/stdlib@v1.26.5
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
||||||
- id: CVE-2026-56858
|
- id: CVE-2026-56858
|
||||||
paths:
|
paths:
|
||||||
- usr/bin/rclone
|
- usr/bin/rclone
|
||||||
purls:
|
purls:
|
||||||
- pkg:golang/stdlib@v1.26.5
|
- pkg:golang/stdlib@v1.26.5
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
||||||
- id: CVE-2026-56859
|
- id: CVE-2026-56859
|
||||||
paths:
|
paths:
|
||||||
- usr/bin/rclone
|
- usr/bin/rclone
|
||||||
purls:
|
purls:
|
||||||
- pkg:golang/stdlib@v1.26.5
|
- pkg:golang/stdlib@v1.26.5
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
||||||
- id: CVE-2026-56860
|
- id: CVE-2026-56860
|
||||||
paths:
|
paths:
|
||||||
- usr/bin/rclone
|
- usr/bin/rclone
|
||||||
purls:
|
purls:
|
||||||
- pkg:golang/stdlib@v1.26.5
|
- pkg:golang/stdlib@v1.26.5
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
||||||
- id: CVE-2026-56862
|
- id: CVE-2026-56862
|
||||||
paths:
|
paths:
|
||||||
- usr/bin/rclone
|
- usr/bin/rclone
|
||||||
purls:
|
purls:
|
||||||
- pkg:golang/stdlib@v1.26.5
|
- pkg:golang/stdlib@v1.26.5
|
||||||
|
expired_at: 2026-11-20
|
||||||
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
statement: The official rclone binary has no patched release for this embedded Go runtime yet.
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
"""正式镜像发布的供应链门禁合同。"""
|
"""正式镜像发布的供应链门禁合同。"""
|
||||||
|
|
||||||
|
from datetime import date
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from ruamel.yaml import YAML
|
from ruamel.yaml import YAML
|
||||||
@@ -8,6 +9,7 @@ from ruamel.yaml import YAML
|
|||||||
ROOT = Path(__file__).resolve().parents[1]
|
ROOT = Path(__file__).resolve().parents[1]
|
||||||
DOCKERFILE = ROOT / "docker" / "Dockerfile"
|
DOCKERFILE = ROOT / "docker" / "Dockerfile"
|
||||||
RELEASE_WORKFLOW = ROOT / ".github" / "workflows" / "build-v3.yml"
|
RELEASE_WORKFLOW = ROOT / ".github" / "workflows" / "build-v3.yml"
|
||||||
|
TRIVY_IGNORE = ROOT / ".trivyignore.yaml"
|
||||||
|
|
||||||
|
|
||||||
def _load_workflow() -> dict:
|
def _load_workflow() -> dict:
|
||||||
@@ -94,6 +96,18 @@ def test_release_scans_both_architectures_before_registry_login_and_publish() ->
|
|||||||
assert last_scan < names.index("Publish multi-architecture image")
|
assert last_scan < names.index("Publish multi-architecture image")
|
||||||
|
|
||||||
|
|
||||||
|
def test_vulnerability_ignores_are_scoped_justified_and_time_bounded() -> None:
|
||||||
|
"""漏洞豁免必须限定制品范围,并保留复查期限和接受理由。"""
|
||||||
|
yaml = YAML(typ="safe")
|
||||||
|
vulnerabilities = yaml.load(TRIVY_IGNORE.read_text(encoding="utf-8"))["vulnerabilities"]
|
||||||
|
|
||||||
|
for vulnerability in vulnerabilities:
|
||||||
|
assert vulnerability["paths"]
|
||||||
|
assert vulnerability["purls"]
|
||||||
|
assert vulnerability["statement"]
|
||||||
|
assert isinstance(vulnerability["expired_at"], date)
|
||||||
|
|
||||||
|
|
||||||
def test_publish_reuses_scanned_architecture_caches_without_refreshing_base() -> None:
|
def test_publish_reuses_scanned_architecture_caches_without_refreshing_base() -> None:
|
||||||
"""发布构建复用已扫描候选缓存,不得在扫描后重新拉取未审计基础镜像。"""
|
"""发布构建复用已扫描候选缓存,不得在扫描后重新拉取未审计基础镜像。"""
|
||||||
workflow = _load_workflow()
|
workflow = _load_workflow()
|
||||||
|
|||||||
Reference in New Issue
Block a user