Skip to content

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

Open
odosk wants to merge 2 commits intomasterfrom
fix/cve-deps-2026-05-07
Open

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

Conversation

@odosk
Copy link
Copy Markdown
Contributor

@odosk odosk commented May 7, 2026

Note

This PR was opened by Claude Code as part of an automated Mend -> Jira -> GitHub security sweep. It will be merged on approval.

Summary

Whole-manifest sweep of visual-retrieval-colpali/ to clear the 18 HIGH/CRITICAL Mend findings reported in the 2026-05-07 rescan, plus an opennlp-tools override in examples/lucene-linguistics/going-crazy/ for a new finding (CVE-2026-42440) that landed on 2026-05-08.

The preceding Renovate auto-merge of transformers==5.0.0 (commit 952bb5f) left pyproject.toml and the lockfile in an unsatisfiable state because the rest of the dependency tree (vidore-benchmark[interpretability]<5.0.0, colpali-engine==0.3.1) requires transformers<5.0.0. This PR reverts that pin to the latest resolvable 4.x line and refreshes every other dependency in the lockfile.

Changed Files

Path Change
visual-retrieval-colpali/pyproject.toml transformers==5.0.0 -> transformers>=4.57.6,<5.0.0
visual-retrieval-colpali/src/legacy-requirements.txt regenerated via uv pip compile pyproject.toml -o src/legacy-requirements.txt --upgrade (-145 / +126 lines)
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 to satisfy container-enforcer)

Notable transitions in the colpali lockfile:

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)

Notable transition in lucene-linguistics/going-crazy:

Package Before After
opennlp-tools (transitive via lucene-analysis-opennlp:9.12.3) 1.9.4 2.5.9

CVEs Addressed

CVE Library Before After Fixed? Note
CVE-2024-11392 transformers 4.47.1 4.57.6 yes ZDI deserialization, fixed long before 4.57
CVE-2024-11393 transformers 4.47.1 4.57.6 yes ZDI deserialization
CVE-2024-11394 transformers 4.47.1 4.57.6 yes ZDI deserialization
CVE-2025-14920 transformers 4.47.1 4.57.6 yes (no OSV match against 4.57.6) Perceiver model RCE
CVE-2025-14921 transformers 4.47.1 4.57.6 yes ZDI RCE
CVE-2025-14924 transformers 4.47.1 4.57.6 yes ZDI RCE
CVE-2025-14926 transformers 4.47.1 4.57.6 yes ZDI RCE
CVE-2025-14927 transformers 4.47.1 4.57.6 yes ZDI RCE
CVE-2025-14928 transformers 4.47.1 4.57.6 yes ZDI RCE
CVE-2025-14929 transformers 4.47.1 4.57.6 yes ZDI RCE
CVE-2025-14930 transformers 4.47.1 4.57.6 yes ZDI RCE
CVE-2025-14925 accelerate 0.34.2 1.13.0 yes Deserialization RCE
CVE-2025-55551 torch 2.8.0 2.11.0 yes DoS in torch.linalg.lu
CVE-2026-24747 torch 2.8.0 2.11.0 yes weights_only unpickler escape, fixed in 2.10.0
CVE-2026-25990 pillow 10.4.0 10.4.0 NO Fixed in 12.1.1 - blocked, see below
CVE-2026-40192 pillow 10.4.0 10.4.0 NO FITS decompression bomb - blocked
CVE-2026-42311 pillow 10.4.0 10.4.0 NO blocked
CVE-2026-42561 python-multipart 0.0.26 0.0.27 yes Already covered in #1908
CVE-2026-42440 opennlp-tools (transitive in examples/lucene-linguistics/going-crazy) 1.9.4 2.5.9 yes OOM DoS via unbounded array allocation in AbstractModelReader; fixed in 2.5.9. Override added because lucene version is parent-managed

The transformers ZDI advisories are not yet indexed in OSV against specific transformers version ranges, so the "fixed in 4.57.6" claim is best-effort: 4.57.6 is the most recent 4.x release and OSV reports no transformers vulns against it other than the unrelated CVE-2026-1839 (Trainer class) which was not in this Mend batch.

Cannot fix in this PR (pillow CVEs)

Pillow stays at 10.4.0 because both colpali-engine==0.3.1 and vidore-benchmark[interpretability]>=4.0.0,<5.0.0 transitively require pillow<11.0.0. The pillow CVEs need pillow>=12.1.1.

Lifting the pillow constraint requires one of:

  • Migrating vidore-benchmark to 5.x. Blocker: vidore 5.0.0 deleted the interpretability module that src/backend/colpali.py:14 and prepare_feed_deploy.py:67 import. Needs application-code refactor.
  • Bumping colpali-engine past 0.3.1 to a release without the strict pillow ceiling. Blocker: chain leads back to vidore-benchmark 5 / transformers 5 (colpali-engine 0.3.15 requires transformers>=5.3.0), so same blocker.

Surfacing to repo owners as a follow-up: the three pillow CVEs and any forthcoming transformers 5.x-only patches will require porting visual-retrieval-colpali off vidore-benchmark.interpretability.

Supersedes

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

Implementation Notes

  • The previous transformers==5.0.0 pin in pyproject.toml (Renovate, commit 952bb5f) was unsatisfiable. uv pip compile errored:

    Because vidore-benchmark>=4.0.0,<=4.0.1 depends on transformers>=4.41.1,<5.0.0 .. and transformers==5.0.0, your requirements are unsatisfiable.
    The shipped lockfile pinned transformers==5.0.0 anyway because Renovate did a surgical text replace rather than a clean recompile.

  • Constraint relaxed to >=4.57.6,<5.0.0. Latest 4.x is 4.57.6.
  • 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 (opennlp.tools.{chunker,lemmatizer,namefind,postag,sentdetect,tokenize,util}) that 9.12.3 uses, so the 2.5.9 override is API-compatible for lucene-analysis-opennlp:9.12.3.
  • No other manual edits to pyproject.toml. All other transitions came from the resolver.

Verification

  • Resolver: uv pip compile pyproject.toml -o src/legacy-requirements.txt --upgrade succeeds cleanly.
  • Local Maven build for examples/lucene-linguistics/going-crazy: mvn package -DskipTests passes; mvn dependency:tree confirms org.apache.opennlp:opennlp-tools:jar:2.5.9 resolved (was 1.9.4).
  • No local Python tests run -- sample-apps integration tests are heavy and out of scope for an automated dep bump.
  • Recommend Mend rescan after merge to confirm the 16 covered CVEs close out and to confirm the three pillow CVEs (and any transformers 5-only items) remain as known follow-up.

@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 added 2 commits May 8, 2026 22:37
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).
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