Skip to content

CHEF-37962 - Add faraday >= 2.14.3 floor to chef-server-ctl and oc-id Gemfiles - #4239

Open
lbakerchef wants to merge 2 commits into
mainfrom
CHEF-37252/lbaker
Open

CHEF-37962 - Add faraday >= 2.14.3 floor to chef-server-ctl and oc-id Gemfiles#4239
lbakerchef wants to merge 2 commits into
mainfrom
CHEF-37252/lbaker

Conversation

@lbakerchef

@lbakerchef lbakerchef commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds an explicit faraday version floor (>= 2.14.3) directly to two Gemfiles: src/chef-server-ctl/Gemfile and src/oc-id/Gemfile. faraday is a real (transitive) dependency in both — via chef-licensing, faraday-follow_redirects, faraday-http-cache, inspec-core, octokit, sawyer on chef-server-ctl; faraday-follow_redirects, inspec-core on oc-id.

Declared as a bare floor rather than routed through the SafeVersions/resolve_safe_version.call mechanism (unlike rack/rexml/net-imap/concurrent-ruby immediately above it in both Gemfiles): that mechanism exists to keep a cleanup-recipe threshold (ruby_gems_cleanup.rb, in chef-server-omnibus-config) and a Gemfile floor from drifting apart for the same gem. faraday has no on-disk cleanup consumer — no ticket or test/scan finding has established a stale-version-left-on-disk cleanup need for it — so there's no second consumer for that mechanism to keep in sync with this floor.

Jira

https://progresssoftware.atlassian.net/browse/CHEF-37962

CVEs closed

  • GHSA-98m9-hrrm-r99r / CVE-2026-54297 (high, CVSS 7.5): uncontrolled recursion in NestedParamsEncoder allows stack exhaustion DoS via deeply nested query parameters. Fixed in 2.14.3. Dependabot alerts 385 (chef-server-ctl), 384 (oc-id).
  • GHSA-5rv5-xj5j-3484 / CVE-2026-33637 (low): incomplete fix for GHSA-33mh-2634-fwr2 — protocol-relative URI objects still bypass host scoping. Fixed in 2.14.2 (2.14.3 supersedes it). Dependabot alerts 345 (chef-server-ctl), 344 (oc-id).

Testing

  • Lockfile regeneration (Docker, ruby:3.1.3 + bundler 2.3.27, matching the pinned BUNDLED WITH): confirmed a minimal, expected diff in both lockfiles — faraday 2.14.1 → 2.14.3, transitive faraday-net_http 3.4.2 → 3.4.4 (expected resolver side effect, not drift), plus the new faraday (>= 2.14.3) line in each DEPENDENCIES section. BUNDLED WITH unchanged in both files.
  • Manual VM verification (fresh install + upgrade) is still pending. Will confirm the ruby_gems_cleanup recipe does not touch faraday during a real upgrade run (expected, matching this bare-floor/no-cleanup-entry design), and will report results here once done.

Related

Supersedes #4184 (oc-id-only, stale at 2.14.2, no chef-server-ctl fix) — recommend closing that PR once this one merges.

Sibling fix: chef/chef-server-omnibus-config#33 — a second, independent source of the same faraday vulnerability, found in that repo's own top-level Gemfile (build/CI tooling only, never shipped in chef-server-core). This branch also carries a temporary "REVERT ME" commit bumping the omnibus/ submodule pointer to #33's unmerged commit, so an adhoc build can validate that fix end-to-end before #33 merges — see the commit message for revert instructions; it must be reverted before this PR merges.

Dependabot flagged faraday in both src/chef-server-ctl/Gemfile.lock and
src/oc-id/Gemfile.lock, resolved to 2.14.1, affected by two CVEs:

- GHSA-98m9-hrrm-r99r / CVE-2026-54297 (high, CVSS 7.5): uncontrolled
  recursion in NestedParamsEncoder allows stack exhaustion DoS via deeply
  nested query parameters. Fixed in 2.14.3. Dependabot alerts 385
  (chef-server-ctl), 384 (oc-id).
- GHSA-5rv5-xj5j-3484 / CVE-2026-33637 (low): incomplete fix for
  GHSA-33mh-2634-fwr2 -- protocol-relative URI objects still bypass host
  scoping. Fixed in 2.14.2 (2.14.3 supersedes it). Dependabot alerts 345
  (chef-server-ctl), 344 (oc-id).

Added an explicit >= 2.14.3 floor to both Gemfiles and regenerated both
lockfiles (Docker, ruby:3.1.3 + bundler 2.3.27, matching the pinned
BUNDLED WITH version -- unchanged by this change). Resolved:
faraday 2.14.1 -> 2.14.3; faraday-net_http 3.4.2 -> 3.4.4 (transitive,
expected resolver side effect).

Declared as a bare floor, not routed through omnibus-config's
safe_versions.rb/resolve_safe_version.call (same reasoning as the existing
concurrent-ruby floor immediately above it in both files): that mechanism
exists to keep a ruby_gems_cleanup.rb threshold and a Gemfile floor from
drifting apart for the same gem -- it is not a generic place to declare any
gem's minimum version. No ticket or on-disk test/scan finding establishes a
stale-gem-left-on-disk cleanup need for faraday, so there is no second
consumer for safe_versions.rb to keep in sync with this floor.

CHEF-37252

Signed-off-by: Lincoln Baker <51833247+lbakerchef@users.noreply.github.com>
@lbakerchef lbakerchef changed the title CHEF-37252 - Add faraday >= 2.14.3 floor to chef-server-ctl and oc-id Gemfiles CHEF-37962 - Add faraday >= 2.14.3 floor to chef-server-ctl and oc-id Gemfiles Sep 3, 2026
…testing

Temporarily bumps the omnibus/ submodule pointer to c489623, the faraday
>= 2.14.3 floor fix on chef-server-omnibus-config's CHEF-37962/lbaker branch
(chef/chef-server-omnibus-config#33, not yet merged), so an adhoc build from
this branch can validate the fix end-to-end before that PR merges.

This commit MUST be reverted before this branch/PR (#4239) merges to main --
the submodule pointer should reference a merged main commit in
chef-server-omnibus-config, not an unmerged feature-branch commit. A
follow-up commit will re-bump the pointer to the real post-merge main SHA.

Signed-off-by: Lincoln Baker <51833247+lbakerchef@users.noreply.github.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.

1 participant