Security Openssh-server-sig-algs-fingerprinting-vulnerability
Home | Articles | Status |
Login
English

CVE-ID: [To be assigned by MITRE]

Title: OpenSSH Server-Sig-Algs Fingerprinting Vulnerability

Date: March 31, 2025

Researcher: Farid

Vendor: OpenSSH (openbsd.org)

Product: OpenSSH

Affected Versions: All versions supporting server-sig-algs (7.2 and later, confirmed in 8.9p1 and 9.2p1)

CVE Status: Draft, pending submission

Description

OpenSSH servers expose a comprehensive list of compile-time supported signature algorithms in the server-sig-algs extension (sent via SSH2_MSG_EXT_INFO, RFC 8308), even when runtime configuration (e.g., PubkeyAcceptedAlgorithms in sshd_config) restricts client authentication to a subset of these algorithms. This behavior allows remote attackers to fingerprint the server's OpenSSH version and distribution by analyzing the advertised algorithms, including deprecated ones like ssh-dss or modern extensions like sk-ecdsa-sha2-nistp256@openssh.com. This information leakage can aid in identifying unpatched vulnerabilities or tailoring exploits specific to the server's build.

For example, a server configured with PubkeyAcceptedAlgorithms rsa-sha2-256 still advertises server-sig-algs=<ssh-ed25519, ..., ssh-rsa, rsa-sha2-256, rsa-sha2-512, ssh-dss, ...>, revealing support for algorithms not in use and exposing version-specific details (e.g., ssh-dss dropped in 7.0, sk-* added later). Tools like ssh-audit can exploit this to map server characteristics, increasing the attack surface.

Impact

Preconditions

Proof of Concept

  1. Connect to an OpenSSH server with ssh -vvv hostname.
  2. Observe server-sig-algs in debug output, e.g., kex_input_ext_info: server-sig-algs=<ssh-ed25519, ..., ssh-rsa, rsa-sha2-256, rsa-sha2-512, ssh-dss, ...>.
  3. Cross-reference with OpenSSH version history:
    • ssh-dss indicates pre-7.0 build.
    • rsa-sha2-512 confirms 6.5+.
    • sk-* algorithms suggest 8.2+.
  4. Use tools like ssh-audit to automate fingerprinting.

Mitigation

Additional Information

This vulnerability was identified during an investigation into OpenSSH authentication failures caused by configuration mismatches. The researcher noticed that uncommenting general PubkeyAcceptedAlgorithms settings (e.g., ssh-ed25519,rsa-sha2-512,rsa-sha2-256) in the client's ssh_config disrupted connections to a server restricted to PubkeyAcceptedAlgorithms rsa-sha2-256, even with host-specific overrides. This led to the discovery of three related design flaws: 1. Incomplete Host-Specific Overrides: Host-specific PubkeyAcceptedAlgorithms settings do not fully isolate from general settings, causing unexpected client behavior. 2. Client Retry Absence: The SSH client selects one algorithm per key (e.g., rsa-sha2-512) and does not retry others (e.g., rsa-sha2-256), even when a match exists, breaking expected negotiation flexibility. 3. Server-Sig-Algs Mismatch: The server advertises rsa-sha2-512 in server-sig-algs despite rejecting it for client authentication, misleading the client into attempting an unsupported algorithm.

These issues highlighted the fingerprinting vulnerability: the broad server-sig-algs list exposed compile-time settings unrelated to runtime policy, revealing version and build details. Aligning server-sig-algs with PubkeyAcceptedAlgorithms at runtime would not only mitigate this security risk by reducing information leakage (e.g., advertising only rsa-sha2-256 in the example case) but also enhance usability. Clients could then reliably select supported algorithms, avoiding failed authentication attempts due to mismatches. This dual benefit—improved security and user-friendliness—suggests a design improvement for OpenSSH beyond mere vulnerability patching.

References

Status

Views: 44