summaryrefslogtreecommitdiff
path: root/net-analyzer/ssh-audit/files/ssh-audit-3.9.0_p20261011_fix_dropbear_kexguess2.patch
blob: 204ba95c1e2d1cb1c3290472e683c46cb700048d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
From: https://github.com/jtesta/ssh-audit/pull/377

commit fcfe99834ade7a87fe5436c11284051734efabb5
Author: ranas-mukminov <ranas@run-as-daemon.dev>
Date: Fri, 2 Oct 2026 09:35:03 +0000
Subject: [PATCH] fix: treat Dropbear kexguess2 as negotiation marker, not
 PQ-unsafe KEX

kexguess2@matt.ucc.asn.au is a Dropbear KEX guessing marker (data field
NULL), not an actual key-exchange algorithm. Flagging it with
WARN_NOT_PQ_SAFE is misleading (#375). Classify it like ext-info /
kex-strict pseudo-algorithms with an INFO note instead.
--- a/src/ssh_audit/ssh2_kexdb.py
+++ b/src/ssh_audit/ssh2_kexdb.py
@@ -80,6 +80,7 @@ class SSH2_KexDB:  # pylint: disable=too-few-public-methods
     INFO_WITHDRAWN_PQ_ALG = 'the sntrup4591761 algorithm was withdrawn, as it may not provide strong post-quantum security'
     INFO_EXTENSION_NEGOTIATION = 'pseudo-algorithm that denotes the peer supports RFC8308 extensions'
     INFO_STRICT_KEX = 'pseudo-algorithm that denotes the peer supports a stricter key exchange method as a counter-measure to the Terrapin attack (CVE-2023-48795)'
+    INFO_KEXGUESS2 = 'pseudo-algorithm / negotiation marker used by Dropbear to accelerate KEX guessing; not an actual key exchange'
 
     # NIST PQC security levels: https://blog.cloudflare.com/pq-2025/
     INFO_NIST_PQC_LEVEL_2 = 'rated at NIST PQC level 2 (at least as hard to break as SHA256)'
@@ -196,7 +197,7 @@ class SSH2_KexDB:  # pylint: disable=too-few-public-methods
             'kexAlgoECDH256': [[], [FAIL_NSA_BACKDOORED_CURVE], [WARN_NOT_PQ_SAFE]],
             'kexAlgoECDH384': [[], [FAIL_NSA_BACKDOORED_CURVE], [WARN_NOT_PQ_SAFE]],
             'kexAlgoECDH521': [[], [FAIL_NSA_BACKDOORED_CURVE], [WARN_NOT_PQ_SAFE]],
-            'kexguess2@matt.ucc.asn.au': [['d2013.57'], [], [WARN_NOT_PQ_SAFE]],
+            'kexguess2@matt.ucc.asn.au': [['d2013.57'], [], [], [INFO_KEXGUESS2]],  # Dropbear KEX guessing marker (not a real algorithm).
             'm383-sha384@libassh.org': [[], [FAIL_UNPROVEN], [WARN_NOT_PQ_SAFE]],
             'm511-sha512@libassh.org': [[], [FAIL_UNPROVEN], [WARN_NOT_PQ_SAFE]],
             'mlkem768x25519-sha256': [['9.9'], [], [], [INFO_DEFAULT_OPENSSH_KEX_100, INFO_HYBRID_PQ_X25519_KEX]],
--- a/test/test_ssh2_kexdb.py
+++ b/test/test_ssh2_kexdb.py
@@ -48,6 +48,7 @@ def test_kex_pq_unsafe(self):
             "ext-info-s",
             "kex-strict-c-v00@openssh.com",
             "kex-strict-s-v00@openssh.com",
+            "kexguess2@matt.ucc.asn.au",  # Dropbear negotiation marker, not a KEX algorithm
             "mlkem768x25519-sha256",
             "sntrup4591761x25519-sha512@tinyssh.org",
             "sntrup761x25519-sha512@openssh.com",