Skip to content

Fixes #40028 - Restrict Dynflow console access - #144

Merged
adamruzicka merged 3 commits into
theforeman:masterfrom
Odilhao:fix/cve-2026-107152
Nov 12, 2026
Merged

adamruzicka merged 3 commits into
theforeman:masterfrom
Odilhao:fix/cve-2026-107152

Conversation

@Odilhao

@Odilhao Odilhao commented Nov 12, 2026

Copy link
Copy Markdown
Member

Purpose

Fix CVE-2026-107152: when console authentication is enabled, a client certificate signed by the proxy's CA must not by itself authorize access to the Dynflow console.

Issue: https://projects.theforeman.org/issues/40028

Changes

  • Use the proxy authorization helper that includes the trusted-host check, rather than only the SSL-client check.
  • Update the configuration example to explain the certificate and :trusted_hosts requirements.
  • Remove unused certificate-serial handling.
  • Add regression tests for a trusted client, an untrusted client and a missing client certificate.

The two original source commits remain separate, with original authorship preserved.

Separate test-dependency follow-up

A third commit constrains json to < 3 in the Gemfile's test group. Fresh bundles otherwise select JSON 3, which rejects positional parser options supplied by multi_json. This reproduced eight parsing errors in the suite. The constraint does not alter the published gem's runtime dependencies.

Testing

Local validation, not a claim about GitHub Actions:

  • bundle exec rake test:core — 86 tests, 216 assertions, no failures or errors on Ruby 3.0 and 3.1.
  • Full configured RuboCop passed on Ruby 3.0 and 3.1.
  • The core suite passed again on Ruby 3.1 from the signed candidate's exact source tree.

For manual verification, enable console authentication and configure the proxy's trusted hosts. Check that a trusted client certificate can access the console, while a certificate for an untrusted host and a request without a client certificate are denied. Authentication-disabled behavior is unchanged.

Require Dynflow console requests to satisfy the proxy authorization
checks, including trusted-host checks as well as client certificate
validation. A CA-signed client certificate alone must not grant console
access.

Restrict Dynflow console by trusted hosts
Require Dynflow console requests to satisfy the proxy authorization
checks, including trusted-host checks as well as client certificate
validation. A CA-signed client certificate alone must not grant console
access.

Remove unused certificate serial handling
@Odilhao

Odilhao commented Nov 12, 2026

Copy link
Copy Markdown
Member Author

[test redmine]

Fresh CI bundles select JSON 3, but multi_json still passes parser
options positionally. Keep the test dependency on JSON 2 so the
CVE-2026-107152 regression suite can run without a local override.

Reproduced eight JSON parsing errors before this change. The full
core suite and RuboCop pass on Ruby 3.0 and 3.1 afterwards.
This does not change the published gem runtime dependencies.
@Odilhao
Odilhao force-pushed the fix/cve-2026-107152 branch from 0b41f1c to 0aca8b6 Compare November 12, 2026 20:43
@adamruzicka

Copy link
Copy Markdown
Contributor

[test redmine]

@adamruzicka adamruzicka left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prprocessor is confused, let's get this in

@adamruzicka
adamruzicka merged commit 5712aa4 into theforeman:master Nov 12, 2026
15 of 18 checks passed
@adamruzicka

Copy link
Copy Markdown
Contributor

Thank you @Odilhao !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants