Repository navigation
CVE fixes - 2026-09-23 (ruby resolv via Ruby 3.4.11) - #2031
Merged
Merged
Conversation
Auto-fixed by prisma-taurus skill. CVEs fixed: CVE-2026-80212, CVE-2026-80213 Bump ARG RUBY_VERSION 3.4.10 -> 3.4.11, which bundles resolv 0.7.2 as its default gem. Prisma reads the version from specifications/default/resolv-<v>.gemspec, which a `gem install` never replaces - so the Ruby bump is the only real fix for a default gem (the alternative, deleting the stale gemspec, is the scanner-appeasement bug recorded in vulnerability_history.md). Drops the now-redundant `gem install resolv -v 0.7.2` (its recorded removal condition is met). The runtime assertion still covers resolv via Gem.loaded_specs, verified in both directions against stock ruby images: passes on 3.4.11, and aborts with "resolv loaded 0.7.1" on 3.4.10. json stays force-installed: Ruby 3.4.11 still ships json 2.9.1. Reconciles vulnerability_history.md, whose standing Ruby recipe recorded this removal condition as unmet and still pinned 3.4.10: updates the recipe block, records how to confirm a default-gem bump cheaply before a branch build, and re-checks the npm-internal undici condition (npm 11.20.0 and 12.1.0 both still bundle undici 6.28.0 - still monitor).
henrychv
approved these changes
Sep 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixable in taurus, this run: 11 detected → 2 fixed.
Baseline:
prisma-cloud-ondemand-scan#262 onblazemeter/taurus:unstable(Image ID sha256:222c456e…, confirmed equal to the registry's live config digest, so this is not a stale-image read).Jira: none — the Atlassian MCP is not available in this headless/cron run, so no ticket could be created. A MOB Story should be created manually and linked here.
Fixed (verified gone in the branch image)
resolv(default gem)resolv(default gem)Both come from one change:
ARG RUBY_VERSION3.4.10 → 3.4.11.Ruby 3.4.11 bundles
resolv0.7.2 as a default gem. That matters because Prisma reads the version fromspecifications/default/resolv-<v>.gemspec, and agem installnever replaces that file — so bumping Ruby is the only real fix for a default gem. The alternative (deleting the stale gemspec) is the scanner-appeasement bug recorded invulnerability_history.md: it silences Prisma whilerequiresilently falls back to the vulnerable stdlib copy.This also let the now-redundant
gem install resolv -v 0.7.2line go; its recorded removal condition is now met.Verified before opening, in both directions, against stock
ruby:images: the build-time assertion passes on 3.4.11 (resolv=0.7.2viaGem.loaded_specs) and aborts withresolv loaded 0.7.1on 3.4.10 — so the assertion is not vacuous.jsonstays force-installed: Ruby 3.4.11 still ships json 2.9.1.Verification
Verified against the
taurus-branch-builderimage scan (build #597) before opening — integration passed.Per-CVE diff of baseline vs branch scan: exactly the 2 targeted CVEs removed, and zero new CVEs introduced. (
xorg-serverCVE-2023-5574 appears in both directions only because apt resolved2:21.1.12-1ubuntu1.6→1ubuntu1.8in the fresh build; same CVE, still flagged — net zero, not a regression.)Raw scan, for reconciliation only: baseline 343 rows → branch 341 [crit 6→6, high 56→55, medium 224→223, low 50→50, negligible 7→7]; distinct CVEs 316 → 314. X/Y count distinct CVEs while the raw total counts per-occurrence, so these do not sum arithmetically.
Local code review (pre-push)
superpowers:requesting-code-reviewwas not available in this session, so the/code-reviewfallback ran (4 independent angles). Two findings accepted and amended into the commit before push:Applied — reconcile
vulnerability_history.md. It still stated in bold that ruby-build offered no 3.4.11 and showedARG RUBY_VERSION=3.4.10+gem install resolvas the authoritative "don't re-derive" recipe. Left unfixed, the next CVE run would have re-added the line this PR deletes. The doc now also records how to confirm a default-gem bump cheaply (checkGem.default_specifications_dir, dry-run the assertion in a stock container) before spending a 40-minute branch build.Applied — drop a
Resolv::VERSIONfallback arm I had added to the assertion.Gem.loaded_specs["resolv"]is populated, so it was dead code; and had it ever fired it would have asserted stdlib file contents rather than gem activation — weaker than, and contrary to, the property that assertion exists to prove.Kept as-is — the assertion's exact
==version comparison (a future Ruby bundling resolv 0.8.0 would abort with a misleading message). Real, but pre-existing for all four gems, out of scope for a CVE fix, and it fails closed with a readable message.Also fixed: two comment inaccuracies (resolv never had a "purge", only a force-install; and a duplicated json removal-condition sentence).
Not actionable in this repo — 305 CVEs (count only)
Monitor-only JMeter/Gatling bundled jars 105, no released patch (
needed/deferred/open) 126, Ubuntu Pro ESM 71, distro pip apt cannot reach 2, k6 binary internals 1. No scanner-appeasement/Roslyn and no JDK-later-major findings this run.Criticals this run: all 3 distinct critical CVEs (6 rows) are monitor-only JMeter/Gatling bundled jars — Tika CVE-2025-66516 / CVE-2025-54988 and netty-handler CVE-2026-75595. Computed from the scan, not assumed.
Worth flagging: every one of the 71 OS findings that has a fix is Ubuntu Pro ESM (
+esmN/~esmN— ffmpeg, gnuplot, openexr, qtbase, fonttools, srt, gst-plugins-bad, apt pip).apt-getcannot reach any of them, which is also why no finding was rebuild-clearable this run (R = 0) despite 198 OS rows.Fixable but did not land (9)
All are standing deferrals, each re-checked against upstream this run; none became actionable:
@faker-js/faker5.5.3,file-type3.9.0 — postman-collection 5.3.1 (latest) still pins both at exact old versions.csv-parse4.16.3 — newman latest is still 6.2.2; also a version-match false positive (the vulnerable option pair does not exist in 4.x).diff7.0.0 (mocha) — only mocha 12 moves todiff ^9; mocha 11.8.0 still^7. A major runner bump for one CVSS-2.7 low.undici6.28.0 ×3 (npm-internal) — npm 11.20.0 (new, published 2026-09-22) and 12.1.0 both still bundle 6.28.0, sonpm i -g npm@11cannot clear these. Still monitor.setuptoolsCVE-2026-59890 — needs 83.0.0, butsetup.pystill importspkg_resources, removed in 82.0.0.json2.9.1 — Ruby 3.4.11 still ships 2.9.1; loaded code is patched (2.19.9), the stale default gemspec is the honest, visible residue.No CVEs require manual Dockerfile intervention this run.
🤖 Generated with Claude Code