Replace OpenSSH package ban with FIPS SSH configuration checks - #132
Draft
xnox wants to merge 1 commit into
Draft
Conversation
OpenSSH uses FIPS-validated cryptography, so banning it as a
remote-access package is no longer correct. Drop openssh,
openssh-server, openssh-client, and openssh-sftp-server from the
RemoteAccessServices banned-package pattern (dropbear, tigervnc, samba,
telnet, etc. remain banned), and instead verify OpenSSH is configured
for FIPS.
Extend the OpenSSL FIPS OVAL definition (oval:org.OpenSsl:def:1, already
backing the 5 Open_Ssl STIG rules) with SSH policy checks:
- The client (ssh_config.d/10-ssh-fips.conf) and server
(sshd_config.d/10-sshd-fips.conf) drop-ins exist and pin the
FIPS-approved Ciphers/KexAlgorithms/MACs/RequiredRSASize and, for
the server, the Host/CA/HostBased/Pubkey signature algorithm lists.
- The top-level ssh_config / sshd_config Include their respective
*_config.d/*.conf drop-in directories, so the policy is actually
sourced.
The SSH checks are gated on package presence via OVAL implication
(nested criteria operator="OR" with a negated package-presence test):
client checks apply only when openssh-client is installed and server
checks only when openssh-server is installed. A client-only image such
as go-fips (no sshd_config) therefore passes.
Mirror all OVAL changes in both the standalone DetectOpenSslTest.xml and
the embedded copy in the datastream, and update the affected rule/manual
-verification descriptions.
Tests:
- Offline matrix: switch RemoteAccessServices fixtures off openssh
onto still-banned dropbear, add an openssh-now-allowed pass case,
and add DetectOpenSsl cases covering drop-in presence/content, the
Include wiring, and the client-only / server-only / no-openssh
gating. All verified against the real oscap scanner.
- e2e: remote-access-violation now installs dropbear instead of
openssh-server.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
xnox
marked this pull request as draft
July 23, 2026 16:32
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.
Summary
OpenSSH uses FIPS-validated cryptography, so treating it as a banned remote-access package was incorrect. This PR drops the OpenSSH ban and instead verifies OpenSSH is configured for FIPS.
openssh,openssh-server,openssh-client,openssh-sftp-serverfrom theRemoteAccessServicesbanned-package pattern.dropbear,tigervnc,xrdp,samba,telnet, etc. remain banned.oval:org.OpenSsl:def:1, which already backs the 5Open_SslSTIG rules) with checks that:/etc/ssh/ssh_config.d/10-ssh-fips.confand server drop-in/etc/ssh/sshd_config.d/10-sshd-fips.confexist and pin the FIPS-approvedCiphers/KexAlgorithms/MACs/RequiredRSASize(plus the serverHostKey/CASignature/HostBasedAccepted/PubkeyAcceptedalgorithm lists);ssh_config/sshd_configIncludetheir respective*_config.d/*.confdrop-in directories, so the policy is actually sourced.Package-gated
The SSH checks use OVAL implication (nested
criteria operator="OR"with a negated package-presence test), so:openssh-clientis installed;openssh-serveris installed.A client-only image such as
cgr.dev/chainguard-private/go-fips(hasopenssh-client, nosshd_config) therefore passes — its server policy is not asserted.All OVAL changes are mirrored in both the standalone
DetectOpenSslTest.xmland the embedded copy inssg-chainguard-gpos-ds.xml; rule and manual-verification descriptions were updated to match.Testing
tests/oscap-offline): RemoteAccessServices fixtures switched offopensshonto still-banneddropbear, plus a new openssh-now-allowed pass case; newDetectOpenSslcases cover drop-in presence/content, theIncludewiring, and the client-only / server-only / no-openssh gating. All verified against the realoscapscanner (OSCAP_OFFLINE_REQUIRE=1).remote-access-violationnow installsdropbearinstead ofopenssh-server.go-fipsimage now reports all 5Open_Sslrules pass (client policy enforced + correct; server policy gated off).🤖 Generated with Claude Code