Files
Yudhi Armyndharis 5785ca7c9f ci(release): accept the unfixed arm64 Chromium CVEs in the image scan
The v0.23.1 image scan failed on linux/arm64 with 33 HIGH findings: eleven
Chromium ids across chromium, chromium-common and chromium-sandbox. amd64
was clean, and the asymmetry is structural rather than incidental. Chrome
for Testing publishes no linux-arm64 build, so amd64 uses CfT while arm64
installs Debian's chromium; only the arm64 image carries the package the
findings are against.

The build is not stale. It fetched from bookworm-security with no cached
apt layer and installed 151.0.7922.137-1~deb12u1, the newest that exists.
Trivy names 151.0.7922.169-1~deb12u1 as fixed, and the security mirror's
own package index still serves .137 for both architectures, so there is
nothing to upgrade to and a rebuild changes nothing.

Eight of the eleven are code execution in the renderer and none are
neutralised by running with --no-sandbox, unlike the earlier batch. The
note in the file states that plainly rather than talking it down. Drop all
eleven once bookworm ships 151.0.7922.169 and re-run the scan without them.
2026-08-21 17:53:25 +07:00

79 lines
4.8 KiB
Plaintext

# Vulnerabilities accepted for the release image scan, with an expiry review note each.
# Everything else — anything in the application's own dependency tree, and every OS package —
# still blocks promotion (see the image-scan job in .github/workflows/release.yml).
# CVE-2026-14257 and CVE-2026-69152 — brace-expansion ReDoS, and the follow-up that bypasses the
# first one's mitigation. Fixed upstream in 5.0.8 and 5.0.9 respectively.
#
# The only copies left in the image are the ones bundled inside the npm CLI
# (/usr/local/lib/node_modules/npm/node_modules/brace-expansion, currently 5.0.7). npm is never on
# the request path: the entrypoint runs `node dist/main`, and npm is present only for the
# documented operator runbooks (`docker exec openwa npm run cli …`). Reaching this code requires an
# operator to run an npm command with an attacker-chosen glob inside the container.
#
# npm 12 — the newest release, already installed by the Dockerfile — still bundles 5.0.7, so there
# is currently no npm version that clears either finding. Drop both entries once npm ships a bundle
# with brace-expansion >= 5.0.9.
#
# These are ID-level ignores, so they would also silence the same CVEs in the APPLICATION tree,
# which this file otherwise refuses to do. What keeps that honest is the root `overrides` entry
# pinning brace-expansion to ^5.0.9: npm cannot resolve the application tree below the fixed
# version, so there is no app-tree finding for these ids to hide. Raise that floor alongside any
# future brace-expansion advisory rather than widening this list.
CVE-2026-14257
CVE-2026-69152
# CVE-2026-69192 — ip-address SSRF-adjacent parsing flaw, fixed upstream in 10.3.1.
#
# Same shape as the two above: the only copy in the image is the one bundled inside the npm CLI
# (/usr/local/lib/node_modules/npm/node_modules/ip-address, 10.2.0 in npm 12.0.2 — the newest
# release, and what the Dockerfile installs). npm is not on the request path, so reaching it means
# an operator running an npm command inside the container.
#
# The application tree is independently above the fix: package-lock.json resolves the sole
# node_modules/ip-address at 10.4.0, and the root `overrides` entry pins `ip-address` to ^10.4.0 so
# it cannot regress below it — the same invariant the brace-expansion note describes, which is what
# keeps an ID-level ignore honest. Drop this entry once npm ships a bundle with ip-address >= 10.3.1.
CVE-2026-69192
# CVE-2026-76033 / -76036 / -76037 / -76038 / -76039 / -76040 / -76041 / -76043 / -76044 / -76045 /
# -76047: Chromium, arm64 image ONLY. Eleven ids, 33 findings.
#
# Each lands on `chromium`, `chromium-common` and `chromium-sandbox`, which is why eleven ids produce
# thirty-three findings. They are arm64-only by construction: Chrome for Testing publishes no
# linux-arm64 build, so amd64 uses CfT while arm64 installs Debian's chromium (Dockerfile, TARGETARCH
# branch). Only the arm64 image carries the Debian package, and the amd64 scan is clean.
#
# THE FIX EXISTS UPSTREAM BUT NOT IN DEBIAN YET. The image has 151.0.7922.137-1~deb12u1 and Trivy
# names 151.0.7922.169-1~deb12u1 as fixed. Checked against the security mirror's own package index at
# the time of writing: bookworm-security still serves .137 for both arm64 and amd64. The release build
# is not stale; it fetched from bookworm-security with no cached apt layer (`no-cache-filters:
# production`) and installed the newest version that exists. Rebuilding today changes nothing.
#
# Exposure, stated honestly rather than talked down. Unlike the earlier chromium batch, where two of
# the four were sandbox escapes that `--no-sandbox` made irrelevant, NONE of these are neutralised by
# how the container runs:
# - Eight are arbitrary or remote code execution in the renderer: v8 type confusion (-76038, -76047),
# v8 miscalculation (-76043), Dawn (-76036), WebGL use-after-free (-76045), a use-after-free
# (-76040), a race condition (-76044) and link following (-76037).
# - One is a site isolation bypass (-76033) and two are information disclosure (-76039, -76041).
# Chromium renders content the sender controls (message bodies, link previews, images), so a crafted
# message is a plausible path to code execution as the `openwa` user inside the arm64 container. The
# container is the confinement boundary (cap_drop ALL, no-new-privileges, read_only rootfs), and that
# is all that stands behind it. This is accepted deliberately so the release can ship while Debian has
# no fixed build, NOT because it is harmless.
#
# Drop all eleven the moment bookworm ships chromium >= 151.0.7922.169 (watch
# https://security-tracker.debian.org/tracker/source-package/chromium) and re-run the release scan
# with them removed before assuming they are gone.
CVE-2026-76033
CVE-2026-76036
CVE-2026-76037
CVE-2026-76038
CVE-2026-76039
CVE-2026-76040
CVE-2026-76041
CVE-2026-76043
CVE-2026-76044
CVE-2026-76045
CVE-2026-76047