Skip to content

fix: servicemesh-operator2 image CVE on 2026-07-29 - #38

Merged
chinaran merged 4 commits into
mainfrom
fix/cve-20260729-2
Jul 29, 2026
Merged

fix: servicemesh-operator2 image CVE on 2026-07-29#38
chinaran merged 4 commits into
mainfrom
fix/cve-20260729-2

Conversation

@chinaran

@chinaran chinaran commented Jul 29, 2026

Copy link
Copy Markdown

背景

对 Alauda Release run 30415369542 构建的镜像 build-harbor.alauda.cn/asm/servicemesh-operator2:2.2.0-r20260729015404 做漏洞扫描,共 6 条漏洞(GO_MODULE=6,GO_STDLIB=0,OS=0),其中 4 条可通过升级依赖修复。

本 PR 取代 #37:该 PR 的首个 commit 为纯中文署名,无法通过 commit-check 的 signoff 正则(要求邮箱前有 ASCII 字母/数字),而校验只看 PR 首 commit 且配置文件必须存在于被校验的 commit 中,无法在不改写历史的前提下翻绿,故重建分支。修复内容与 #37 完全一致(go.mod/go.sum 与原 commit 逐字节相同),并额外带上 signoff 正则修正。

修复清单

变更 说明
oras.land/oras-go/v2 v2.6.0 → v2.6.1 覆盖 CVE-2026-50151 (HIGH)、CVE-2026-50162 (MEDIUM)、GHSA-vh4v-2xq2-g5cg (MEDIUM)、CVE-2026-48978 (LOW)
.commit-check.yml signoff 正则 Unicode 化 cherry-pick 上游 istio-ecosystem/sail-operator#2005(commit 252db639,已于 2026-06-29 合入上游):[A-Za-z0-9]\w,纯中文署名(如"王然")可通过,空名字仍拒绝。附带该 commit 的 update-strategy.adoc 文档修正一并带入

commit 历史说明:首个 commit f8a6c5f8 是同目的的 fork 本地实现(commit-check 只校验 PR 首 commit,且配置需存在于被校验 commit 中,历史不可改写,故保留);随后 71c0671f 将其 revert,4f4d2fa3 cherry-pick 上游同类修改取而代之——与上游内容完全一致,未来上游同步不会因此新增冲突。最终树的 .commit-check.yml 与上游 252db639 版本零差异。

验证

  • 本地按流水线同等条件(GOTOOLCHAIN=auto,实际 go1.26.5)执行 go build ./...,构建通过;
  • 本分支触发 Alauda Release run 304248053892.2.0-r20260729052049)构建成功;此前内容完全相同的原分支(fix: servicemesh-operator2 image CVE on 2026-07-29 #37)也经 run 304239725612.2.0-r20260729050336)验证过;
  • 回归扫描本分支构建的镜像 2.2.0-r20260729052049:上述 4 个 CVE 全部消除,仅剩下表 2 条无修复版本条目。

不修复项(无修复版本,如实报告)

CVE 严重度 说明
oras.land/oras-go/v2 CVE-2026-50163 HIGH 上游暂无修复版本,回归扫描确认 v2.6.1 仍在受影响范围
golang.org/x/crypto GO-2026-5932 UNKNOWN v0.54.0 暂无修复版本

镜像基础层无 os 级漏洞,无需处理。

🤖 Generated with Claude Code

chinaran added 2 commits July 29, 2026 05:19
The commit_signoff regex inherited from commit-check defaults requires an
ASCII alphanumeric right before the email, so CJK-only author names fail.
Relax it to any non-empty name; empty names are still rejected.

Signed-off-by: 王然 <ranwang@alauda.io>
oras.land/oras-go/v2 v2.6.0 -> v2.6.1, covers CVE-2026-50151 (HIGH),
CVE-2026-50162 (MEDIUM), GHSA-vh4v-2xq2-g5cg (MEDIUM), CVE-2026-48978 (LOW)
found by image scan of servicemesh-operator2:2.2.0-r20260729015404.

Signed-off-by: 王然 <ranwang@alauda.io>
@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

chinaran added a commit that referenced this pull request Jul 29, 2026
First real execution (PR #38) surfaced four gaps: verify whether the run
branch was already merged before asking about a base-branch mismatch;
document that commit-check validates only the first commit of a PR and how
to recover (rebuild branch, supersede PR) plus a pre-commit signoff regex
preflight and a post-PR gh pr checks step; write the regression scan
conclusion back into the PR body; correct the pipeline duration estimate.

Signed-off-by: 王然 <ranwang@alauda.io>
chinaran added 2 commits July 29, 2026 06:13
Superseded by cherry-picking upstream istio-ecosystem#2005
(commit 252db63), which makes the same commit_signoff regex Unicode-aware.
Keeping a fork-local variant of the same lines would add merge conflicts on
future upstream syncs. This reverts commit f8a6c5f.

Signed-off-by: 王然 <ranwang@alauda.io>
…tegy note

Fixes an inaccurate note in docs/update-strategy/update-strategy.adoc that
claimed only the InPlace strategy is supported in ambient mode.

The note conflated the control plane with the data plane, and its stated
reason was technically wrong:

- The control plane (istiod) supports multiple coexisting revisions in
  ambient mode. This is already exercised by the e2e test
  tests/e2e/ambient/ambient_update_test.go (Revision-Based Updates), where
  istiod and istiod-canary run side by side while sharing a single ztunnel
  DaemonSet. No validation/webhook ties updateStrategy to ambient
  (api/v1/istio_types.go only declares the InPlace;RevisionBased enum).
- ztunnel is a per-node DaemonSet, not a "cluster-wide singleton with one
  instance per cluster". Only the ZTunnel custom resource is a singleton
  (name: default). The real limitation is that ztunnel/CNI are node-shared
  components that are always updated in place.
- The old text also contradicted the same document, which states (line 803)
  that waypoints "can function with both revisions during migration" under
  RevisionBased.

Additionally, make the commit-check sign-off regex in .commit-check.yml
Unicode-aware ([A-Za-z0-9] -> \w) so DCO sign-offs with non-ASCII display
names (e.g. Chinese) are accepted. The previous pattern required an ASCII
alphanumeric immediately before the email and rejected otherwise-valid
sign-offs.

Signed-off-by: 王然 <ranwang@alauda.io>
(cherry picked from commit 252db63)
Signed-off-by: 王然 <ranwang@alauda.io>
@chinaran
chinaran merged commit 3ef95c8 into main Jul 29, 2026
5 checks passed
@chinaran
chinaran deleted the fix/cve-20260729-2 branch July 29, 2026 06:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant