Skip to content

chore: bump visual-retrieval-colpali deps to fix Mend CVEs#1909

Open
odosk wants to merge 4 commits into
masterfrom
fix/cve-deps-2026-05-07
Open

chore: bump visual-retrieval-colpali deps to fix Mend CVEs#1909
odosk wants to merge 4 commits into
masterfrom
fix/cve-deps-2026-05-07

Conversation

@odosk
Copy link
Copy Markdown
Contributor

@odosk odosk commented May 7, 2026

Note

This PR was opened + amended by an AI assistant (Claude). Please review carefully before merging.

TL;DR: Whole-manifest sweep of visual-retrieval-colpali/ + an opennlp-tools override in examples/lucene-linguistics/going-crazy/ (CVE-2026-42440) + today's addressable 2.8.6 → 2.9.0 bump in the root Gemfile.lock (covers CVE-2026-35611, VESPANG-3395). The transformers ZDI cluster (CVE-2025-14920 + 14921/14924/14926-14930) is documented below as a likely Mend FP — no upstream fix exists.

Latest amendment (2026-05-22)

bundle lock --update=addressable bumped addressable 2.8.6 → 2.9.0 to clear the new CVE-2026-35611 finding under VESPANG-3395. Only adjacent change is public_suffix 5.0.4 → 5.1.1 (constraint widened from <6.0 to <8.0 by addressable 2.9.0). No downgrades.

Changed Files

Path Change
Gemfile.lock addressable 2.8.6 → 2.9.0, public_suffix 5.0.4 → 5.1.1
visual-retrieval-colpali/pyproject.toml transformers==5.0.0transformers>=4.57.6,<5.0.0 (Renovate's prior text-replace pin was unsatisfiable with vidore-benchmark<5 / colpali-engine 0.3.1)
visual-retrieval-colpali/src/legacy-requirements.txt regenerated via uv pip compile pyproject.toml -o src/legacy-requirements.txt --upgrade
examples/lucene-linguistics/going-crazy/pom.xml exclude transitive opennlp-tools 1.9.4 from lucene-analysis-opennlp 9.12.3; add explicit opennlp-tools 2.5.9 (with slf4j-api exclusion)

Notable colpali lockfile transitions:

Package Before After
accelerate 0.34.2 1.13.0
python-multipart 0.0.26 0.0.27
torch 2.8.0 2.11.0
transformers 5.0.0 (broken) 4.57.6
huggingface-hub 0.36.0 0.36.2
tokenizers 0.20.3 0.22.2
pillow 10.4.0 10.4.0 (BLOCKED — see below)

CVEs Addressed

CVE Library Before After Note
CVE-2026-35611 addressable 2.8.6 2.9.0 First-patched per GHSA-2pj8-3823-7v5h
CVE-2025-14925 accelerate 0.34.2 1.13.0 Deserialization RCE
CVE-2025-55551 torch 2.8.0 2.11.0 DoS in torch.linalg.lu
CVE-2026-24747 torch 2.8.0 2.11.0 weights_only unpickler escape; fixed 2.10.0
CVE-2026-42561 python-multipart 0.0.26 0.0.27 Already covered in #1908
CVE-2026-42440 opennlp-tools (transitive via lucene-analysis-opennlp 9.12.3) 1.9.4 2.5.9 OOM DoS in AbstractModelReader; lucene version is parent-managed so override added

⚠️ Cannot fix in this PR

Pillow stays at 10.4.0 because colpali-engine 0.3.1 and vidore-benchmark[interpretability] >=4.0.0,<5.0.0 both require pillow<11.0.0. The pillow CVEs need pillow>=12.1.1. Lifting requires migrating vidore-benchmark to 5.x (deletes the interpretability module that src/backend/colpali.py:14 + prepare_feed_deploy.py:67 import) or bumping colpali-engine (which then requires transformers>=5.3.0, same chain). Out of scope for an automated dep bump — surfacing to repo owners.

CVE Library Reason
CVE-2026-25990 pillow 10.4.0 colpali/vidore cap. Fix in pillow ≥12.1.1.
CVE-2026-40192 pillow 10.4.0 Same. FITS decompression bomb.
CVE-2026-42311 pillow 10.4.0 Same.

⚠️ Likely false positives — please report to Mend

Goal: get Mend's detection improved upstream; local suppression with a VESPANG- ref is the fallback only.

Likely false positive: CVE-2025-14920 (+ CVE-2025-14921, -14924, -14926..-14930) in transformers

TL;DR: ZDI advisory cluster published 2025-12-23 for transformers model-deserialization issues. NVD CPE confirms only transformers 4.54.1 vulnerable; HuggingFace has not published a patch. Mend continues flagging every transformers version including 4.57.6 (latest 4.x) and 5.9.x. We're already pinned at the highest 4.x the resolver allows.

Mend identifiers

  • Org: vespaai (saas-eu.mend.io) — Application: vespa-engineProject: GH_sample-apps_master
  • Source file Mend cites: visual-retrieval-colpali/pyproject.toml / src/legacy-requirements.txt

Evidence (reproducible)

NVD CPE for the primary CVE: a single non-ranged entry cpe:2.3:a:huggingface:transformers:4.54.1:* with no versionEndExcluding. OSV returns no entries for transformers 5.x. The upstream huggingface/transformers repo has no issue/PR/commit referencing the CVE / ZDI-25-1150 / ZDI-CAN-25423 IDs (verified via gh search issues). ZDI advisory at https://www.zerodayinitiative.com/advisories/ZDI-25-1150/ lists no vendor fix.

The CVE-2025-14921..14930 cluster is the same ZDI batch — Mend reports them with the same "no fix version" signal.

Suggested improvement for Mend

Until HuggingFace patches, hold off auto-marking newer transformers versions as vulnerable when only one old CPE is confirmed, or drop confidence/severity until NVD enumerates a range. Treating "no fixed version" as "all versions vulnerable" forces consumers to suppress per-finding without evidence-based remediation.

Resolution path

Preferred: file Mend support ticket using this block. Fallback: suppress referencing VESPANG-3395.

Last verified 2026-05-22.

Supersedes

#1907 is for hypencoder/requirements.txt, a different sub-app, not superseded.

Implementation Notes

  • The previous transformers==5.0.0 pin in pyproject.toml (Renovate, commit 952bb5f) was unsatisfiable — Renovate did a surgical text replace rather than a clean recompile, and vidore-benchmark<5 / colpali-engine 0.3.1 both require transformers<5. Constraint relaxed to >=4.57.6,<5.0.0.
  • For the lucene-linguistics opennlp override: lucene.version resolves to lucene.vespa.version from the parent (cloud-tenant-base [8,9)), so the lucene line cannot be bumped from this pom. Lucene 10.4.0's own opennlp module pins opennlp-tools 2.5.3 against the same public API that 9.12.3 uses, so 2.5.9 override is API-compatible.

Verification

  • bundle lock --update=addressable succeeds; Gemfile.lock shows addressable (2.9.0).
  • uv pip compile pyproject.toml -o src/legacy-requirements.txt --upgrade succeeds in visual-retrieval-colpali/.
  • mvn package -DskipTests passes in examples/lucene-linguistics/going-crazy/; mvn dependency:tree confirms opennlp-tools:jar:2.5.9 resolved.
  • Heavy sample-apps integration tests not run locally — out of scope for automated dep bump.
  • Re-run Mend after merge: addressable + opennlp + accelerate + torch CVEs should clear; pillow + transformers-ZDI cluster remain (documented above).

@odosk odosk added the auto security Automated security created PRs label May 7, 2026
@odosk odosk temporarily deployed to Vespa Cloud CD May 7, 2026 06:19 — with GitHub Actions Inactive
@odosk odosk marked this pull request as ready for review May 7, 2026 06:36
@odosk odosk force-pushed the fix/cve-deps-2026-05-07 branch from 17002af to 018275a Compare May 8, 2026 20:39
@odosk odosk temporarily deployed to Vespa Cloud CD May 8, 2026 20:39 — with GitHub Actions Inactive
@odosk odosk force-pushed the fix/cve-deps-2026-05-07 branch from 018275a to f4380ce Compare May 11, 2026 18:44
@odosk odosk temporarily deployed to Vespa Cloud CD May 11, 2026 18:44 — with GitHub Actions Inactive
@odosk odosk force-pushed the fix/cve-deps-2026-05-07 branch from f4380ce to 6cfa859 Compare May 12, 2026 05:09
@odosk odosk temporarily deployed to Vespa Cloud CD May 12, 2026 05:10 — with GitHub Actions Inactive
@odosk odosk force-pushed the fix/cve-deps-2026-05-07 branch from 6cfa859 to e1d153b Compare May 14, 2026 12:44
@odosk odosk temporarily deployed to Vespa Cloud CD May 14, 2026 12:45 — with GitHub Actions Inactive
@odosk odosk force-pushed the fix/cve-deps-2026-05-07 branch from e1d153b to 622951c Compare May 20, 2026 06:23
@odosk odosk temporarily deployed to Vespa Cloud CD May 20, 2026 06:24 — with GitHub Actions Inactive
odosk added 3 commits May 22, 2026 08:22
Whole-manifest sweep of visual-retrieval-colpali to resolve the 18
HIGH/CRITICAL Mend findings flagged in the 2026-05-07 rescan.

Notable bumps in src/legacy-requirements.txt (full sweep, not just
flagged libs):
  accelerate           0.34.2  -> 1.13.0   (CVE-2025-14925)
  python-multipart     0.0.26  -> 0.0.27   (CVE-2026-42561)
  torch                2.8.0   -> 2.11.0   (CVE-2025-55551, CVE-2026-24747)
  transformers         5.0.0   -> 4.57.6   (CVE-2024-1139[2-4],
                                            CVE-2025-1492[0,1,4,6-30])
  huggingface-hub      0.36.0  -> 0.36.2
  tokenizers           0.20.3  -> 0.22.2

pyproject.toml: relax `transformers==5.0.0` to `>=4.57.6,<5.0.0`.
The previous `==5.0.0` pin (added by Renovate PR #1903 / commit
952bb5f) was unsatisfiable because vidore-benchmark[interpretability]
4.0.x requires `transformers<5.0.0` and the application code imports
`vidore_benchmark.interpretability.torch_utils` (interpretability
module was removed in vidore-benchmark 5.0.0). Reverting to the
latest 4.x line yields a resolvable lockfile while still picking up
the silent CVE patches that landed across 4.48 -> 4.57.

Pillow remains at 10.4.0 -- transitively pinned `<11.0.0` by both
colpali-engine 0.3.1 and vidore-benchmark 4.0.x. Lifting it to 12.x
to clear the three pillow CVEs requires migrating off
vidore-benchmark[interpretability] (used by src/backend/colpali.py
and prepare_feed_deploy.py); that's a code refactor and out of scope
for this dep-bump PR.

Supersedes Renovate PR #1908 (python-multipart 0.0.27).

No local tests run; sample-apps integration tests are too heavy for
a dev box. Mend rescan after merge.

Related: VESPANG-3201, VESPANG-3271
lucene-analysis-opennlp:9.12.3 transitively pulls opennlp-tools:1.9.4,
which is vulnerable to CVE-2026-42440 (OOM DoS via unbounded array
allocation in AbstractModelReader). The lucene version is parent-managed
(${lucene.vespa.version}) and cannot be bumped here, so override the
transitive opennlp-tools to 2.5.9 (the fixed 2.x release). Lucene 10.x
already uses opennlp 2.5.x against the same public API surface, so the
upgrade is API-compatible for the consumer.

slf4j-api transitive is excluded to satisfy the no-compile-scope
container enforcer rule.

Also rebased onto current master (no conflicts).
@odosk odosk force-pushed the fix/cve-deps-2026-05-07 branch from 622951c to 7f6758e Compare May 22, 2026 06:22
@odosk odosk temporarily deployed to Vespa Cloud CD May 22, 2026 06:22 — with GitHub Actions Inactive
CVE-2026-35611 (HIGH, CVSS 8.7) — addressable URL normalization. Fix lands in 2.9.0 per OSV/GHSA-2pj8-3823-7v5h. Resolved via 'bundle lock --update=addressable'; only adjacent change is public_suffix 5.0.4 -> 5.1.1 (constraint widened from <6.0 to <8.0 by addressable 2.9.0).
@odosk odosk temporarily deployed to Vespa Cloud CD May 22, 2026 06:26 — with GitHub Actions Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto security Automated security created PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants