Remediate 2 CVEs in yard - #653
eng-cve-remediation-app[bot] wants to merge 1 commit into
Conversation
🔎 Dependency bump analysisBreaking changes: Impact reportChangelog / Breaking-Change ReportSummaryThis PR fixes CVE-2026-41493 and CVE-2026-49342 (both path-traversal in The actual diffgroup :development, :release_prep do
- gem "puppet-strings", '~> 4.0', require: false
+ gem "puppet-strings", '>= 4.1.2', '< 4.1.3', require: false
Note the unusual exact pin ( Upstream changes
|
| Version | Date | Changes |
|---|---|---|
| 4.1.0 | 2023-07-04 | Added --providers / --list-providers flags (additive) |
| 4.1.1 | 2023-11-22 | Bug fix: option-tag handling with no data types |
| 4.1.2 | 2023-12-05 | Bug fix: revert a rubocop-driven change incompatible with Ruby 2.7.0 |
No removed APIs, no signature changes, no minimum-Ruby bump (still requires
Ruby >= 2.7.0, Puppet >= 7.0.0). Not breaking.
yard 0.9.36 → 0.9.45 (transitive)
| Version | Notable change |
|---|---|
| 0.9.40 | .rbs file support, built-in HybridMarkdown renderer. |
| 0.9.42 | Security fix — CVE-2026-41493: path traversal via --docroot + disk caching in yard server (GHSA-xfhh-rx56-rxcr) |
| 0.9.43 | Bug fix: .rbs attribute registration |
| 0.9.44 | Security fix — CVE-2026-49342: path traversal via --docroot + disk caching in yard server (GHSA-pxcc-8665-phx8) |
| 0.9.45 | Bug/compat fixes (RDoc 8, Struct.new/Data.define doc tags, HTML/RBS rendering) |
The only changelog-flagged "breaking" item (0.9.40, jQuery removal) is scoped
to generated HTML template assets, not the YARD public Ruby API.
Why not the newest puppet-strings?
The newest published releases are not safe substitutes here, which is
why the diff pins exactly 4.1.2:
puppet-strings4.1.3 (2024-09-05) re-pinsyardto< 0.9.37—
taking this release would make it impossible to resolve the fixed
yard(>= 0.9.42), defeating the CVE fix.puppet-strings5.0.0 (2025-06-09) is a labeled breaking release
("removed Puppet 7 infrastructure",puppetpromoted to a runtime
dependency).puppet-strings5.1.0 (2026-08-14) adds Ruby 4.0 / Puppet 9 support.
So 4.1.2 is the correct target: newest release that still carries an
unpinned yard (~> 0.9) constraint, letting Bundler resolve straight to the
patched 0.9.45. Gemfile.lock:246-248,436 confirms puppet-strings (4.1.2) → yard (~> 0.9) → yard (0.9.45) resolved correctly.
How we use it
Rakefile:7—require 'puppet-strings/tasks' if Gem.loaded_specs.key? 'puppet-strings'. This wires up the standardstrings:generate/
strings:validate:referencerake tasks used to buildREFERENCE.md.
Output format is plain Markdown, notyard's HTML templates, so the
0.9.40 jQuery/HTML-template change is inapplicable regardless.- No custom YARD tags, plugins,
@!macro/@!methoddirectives, or direct
YARD::API calls exist anywhere in this repo (checked viagrep). - Both gems live only in the
Gemfile'sgroup :development, :release_prep
— never loaded by the shipped Puppet module code, never invoked in the
ci.yml/nightly.ymlworkflows (nostrings:task reference found
there); used only for local/release-prep doc regeneration. puppet-stringsis also reachable transitively viaboltand
puppet_litmus(perunit.json'sdependency_paths), but this repo's
Gemfile.lockresolvespuppet-stringsto a single version (4.1.2)
across the whole tree, so there's no split-cohort concern — one pinned
version satisfies every path toyard.
Action items / risks
None. This is a dev-tooling-only, non-breaking transitive bump:
- No code changes required in this repo.
REFERENCE.mdregeneration (bundle exec rake strings:generate) is
unaffected — Markdown output, no custom tags in use.- No other
puppet-strings/yardversion in the lockfile is left behind
(single resolved version across all dependency paths), so there's no
cohort split to flag.
References
|
|
bastelfreak
left a comment
There was a problem hiding this comment.
those nonsense AI PRs are extremely annoying> I mentioned more than enough why they are bad.
|
The fix-ci agent made no change this run while CI is red. The reconcile sweep will escalate this PR to a human rather than retry. |
|
🚨 fix-ci circuit open — a fix attempt made no progress. The bot has stopped auto-fixing CI on this PR; it needs a human. |
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ddb26fe to
7162144
Compare
|
This PR pins |
This PR contains the following updates:
0.9.36→0.9.44Dependency paths
puppet_litmus:puppet_litmus → bolt:bolt → puppet-strings:puppet-strings → yard:yardpuppet-strings:puppet-strings → yard:yardbolt:bolt → puppet-strings:puppet-strings → yard:yardBy merging this PR, the below vulnerabilities will be automatically resolved:
Bump strategy
yardis a transitive dependency (blocked-upstream), pulled in viapuppet-strings(a direct
Gemfiledependency,group :development, :release_prep).puppet-strings's newest release (5.1.0) drops itsyardupper bound, but itcannot be used here:
bolt(already at its own newest release, 4.0.0, with nonewer release available) hard-caps
puppet-strings >= 2.3.0, < 5.0, andboltis pulled in transitively viapuppet_litmus.puppet-strings4.1.3(the previously-locked version) also can't work — it added a hard cap
yard ~> 0.9, < 0.9.37, which excludes every fixedyardrelease.puppet-strings4.1.2 (one patch release older than what was locked) has noupper bound on
yardat all (~> 0.9) and still satisfies bolt's< 5.0constraint. PinningGemfileto>= 4.1.2, '< 4.1.3'and re-lockingresolves
yardto 0.9.45 (>= fix_version 0.9.44), fixing both CVEs withoutany conflict.
No cohort siblings —
puppet-stringsandyardare independently released.