Skip to content

fix(trivy): accept rclone go1.26.8 CVEs in the 11.0.1 image - #725

Merged
oc-tmueller merged 3 commits into
masterfrom
fix/trivy-rclone-go-cves
Oct 15, 2026
Merged

oc-tmueller merged 3 commits into
masterfrom
fix/trivy-rclone-go-cves

Conversation

@oc-tmueller

Copy link
Copy Markdown
Member

Docker CI has failed on master since the 2026-10-11 schedule run (also the #723 and #724 pushes, e.g. run 38143841944). Nothing in this repo changed. Three Go advisories published 2026-10-08 began matching the rclone binary that the pinned v11.0.1 bundle ships in apps/migrate_to_ocis/bin/rclone_linux_amd64: rclone v1.75.1, go1.26.8, x/net v0.57.0, from migrate_to_ocis v3.0.2.

CVE pkg Reachable?
CVE-2026-78667 stdlib No. Range parsing in net/http's file server, which only runs server-side
CVE-2026-97031 stdlib No. ECH handling in a crypto/tls server
CVE-2026-78669 stdlib, x/net Yes, from a malicious HTTP/2 peer: the oCIS target or ownCloud source, or anyone on the network path once init --insecure was used. Impact is CPU only

Matrix fail-fast cancels the 10.16.6 leg, so neither line publishes until this is resolved. The 10.16.6 bundle ships no apps/*/bin/* file and is not affected.

Change

v24.04/11.0.1/.trivyignore only:

  • accepts the three CVEs, each with the reasoning above;
  • updates the existing CVE-2026-84445 note: rclone v1.75.2 now carries the grpc fix.

This file is tied to the immutable v11.0.1 tarball, so the entries say not to carry them into the next 11.0.x file.

The actual fix

rclone v1.75.2 (2026-10-09) is built with go1.26.9 and pins x/net v0.60.0 and the fixed grpc, which clears all four findings. That bump goes into migrate_to_ocis (closing owncloud/migrate_to_ocis#74) and reaches this image with the next 11.0.x bundle.

Verification

I extracted the rclone binary from the pinned tarball and scanned it with aquasec/trivy:0.70.0 rootfs using the CI flags (HIGH,CRITICAL, --ignore-unfixed, --exit-code 1):

  • Without an ignore file it reports these three plus CVE-2026-84445.
  • Master's ignore file exits 1; this one exits 0, and the JSON still contains the target.
  • editorconfig-checker passes on the worktree.

A full local image scan was not possible because the local Docker VM is out of disk; this PR's CI run is the full-image check.

🤖 Generated with Claude Code

oc-tmueller and others added 3 commits October 15, 2026 14:41
Docker CI has been red on master since the 2026-10-11 schedule run. The
11.0.1 Trivy scan fails on three HIGH Go advisories published 2026-10-08,
all reported from apps/migrate_to_ocis/bin/rclone_linux_amd64: rclone
v1.75.1, built with go1.26.8 and golang.org/x/net v0.57.0, bundled by
migrate_to_ocis v3.0.2. Matrix fail-fast then cancels the 10.16.6 leg, so
neither line publishes. The 10.16.6 bundle ships no apps/*/bin/* file and
is not affected.

  CVE-2026-78667  stdlib          Range header parsing in FileServer/ServeContent
  CVE-2026-97031  stdlib          ECH outer extensions in a crypto/tls server
  CVE-2026-78669  stdlib, x/net   HTTP/2 SETTINGS flood, client or server

The first two are server-side only. The app runs rclone purely as a
client (`rclone sync`, `rclone obscure`), so neither is reachable.
CVE-2026-78669 does affect clients, but only a malicious HTTP/2 peer can
trigger it, here the oCIS instance an admin configured as the migration
target, and the cost is CPU in a short-lived sync process.

rclone v1.75.2 (2026-10-09) is built with go1.26.9 and pins x/net v0.60.0
and grpc v1.85.0-dev, which fixes all three and CVE-2026-84445. This repo
builds from the immutable v11.0.1 tarball, so the fix can only arrive
with a migrate_to_ocis release that bundles v1.75.2. The existing
CVE-2026-84445 note is updated to the same drop-out condition.

Verified by scanning the binary extracted from the pinned tarball with
trivy 0.70.0 rootfs and the CI flags: without an ignore file it reports
these three plus CVE-2026-84445. Master's ignore file exits 1, this one
exits 0, and the result still contains the target.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
…8669

Review of the previous commit found the CVE-2026-78669 rationale understated
who can trigger it and for how long. With -k the migration passes
--no-check-certificate, so anyone on the network path can impersonate the
oCIS target, and a large migration keeps rclone sync running for hours.

The drop-out notes are reworded too. This file is tied to the immutable
v11.0.1 tarball, so its entries can never drop out. What matters is not
carrying them into the next 11.0.x file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
The second review pass found the note still inexact. -k is the short form of
occ migrate:to-ocis:init --insecure, which is stored and then applies to every
later files run. rclone's --no-check-certificate covers the ownCloud source
remote as well as the oCIS target. The files migration runs one rclone sync
per user rather than a single long process.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
@oc-tmueller
oc-tmueller merged commit 67b8272 into master Oct 15, 2026
5 checks passed
@oc-tmueller
oc-tmueller deleted the fix/trivy-rclone-go-cves branch October 15, 2026 13:38
oc-tmueller added a commit that referenced this pull request Oct 15, 2026
The build matrix runs one leg per release line and set no fail-fast, so
GitHub's default of true applied. A Trivy failure in one leg cancelled the
other before it could publish.

That has blocked an unaffected line three times: #689 (guzzle/jmespath),
#693, and the 2026-10-11 rclone go1.26.8 CVEs that #725 accepts for 11.0.1.
Each time the 10.16 line did not publish although nothing in it had
changed. A cancelled leg also hides its own findings: in #689, 11.0.0 turned
out to be affected only once 10.16.4 stopped shadowing it.

update-docker-hub-description keeps needs: build, so it still runs only when
every leg succeeds. That is the right gate for a description both lines share.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
oc-tmueller added a commit that referenced this pull request Oct 15, 2026
The build matrix runs one leg per release line and set no fail-fast, so
GitHub's default of true applied. A Trivy failure in one leg cancelled the
other before it could publish.

That has blocked an unaffected line three times: #689 (guzzle/jmespath),
#693, and the 2026-10-11 rclone go1.26.8 CVEs that #725 accepts for 11.0.1.
Each time the 10.16 line did not publish although nothing in it had
changed. A cancelled leg also hides its own findings: in #689, 11.0.0 turned
out to be affected only once 10.16.4 stopped shadowing it.

update-docker-hub-description keeps needs: build, so it still runs only when
every leg succeeds. That is the right gate for a description both lines share.

Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
Co-authored-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
oc-tmueller added a commit to owncloud/migrate_to_ocis that referenced this pull request Oct 15, 2026
Ship #76 (closes #74). It replaces the bundled rclone v1.75.1 (go1.26.8,
golang.org/x/net v0.57.0) with upstream v1.75.2 (go1.26.9, x/net v0.60.0, the
fixed grpc pseudo-version). That clears CVE-2026-78667, CVE-2026-78669 and
CVE-2026-97031, published 2026-10-08, plus the previously accepted
CVE-2026-84445.

The Server 11 distribution assembles its apps from tagged GitHub releases, so
until this is tagged the 11.0.1 image keeps bundling v1.75.1, with the four
findings accepted in owncloud-docker/server#725.

Roll changelog/unreleased/rclone-1.75.2 into changelog/3.0.3_2026-10-15/,
regenerate CHANGELOG.md with calens and bump appinfo/info.xml to 3.0.3. The
release workflow refuses to build when the tag and the info.xml version
disagree.

Patch level is correct: there is no API, configuration or dependency-range
change, and the oc11 range stays min-version="11" max-version="11".

Signed-off-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
Co-authored-by: Thomas Müller <323649642+oc-tmueller@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

2 participants