CVE-2024-6387: regreSSHion — OpenSSH RCE na 18 jaar
Kort samengevat: Een race condition in de signaalafhandeling van OpenSSH stelt niet-geauthenticeerde aanvallers in staat willekeurige code als root uit te voeren op Linux-servers met glibc. "regreSSHion" gedoopt — een regressie van CVE-2006-5051 die in 2020 per ongeluk opnieuw werd geïntroduceerd. Treft ongeveer 14 miljoen aan internet blootgestelde SSH-servers. CVSS 8,1 HOOG.
| Kenmerk | Waarde |
|---|---|
| CVE ID | CVE-2024-6387 |
| CVSS-vector | AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-364: Signal Handler Race Condition |
| Gepubliceerd | 1 juli 2024 |
| Exploitatie | Theoretisch — nog geen bevestigde in-the-wild RCE |
CVSS 8,1 — HOOG
Wat is CVE-2024-6387?
CVE-2024-6387 is een race condition in de signaalafhandeling van de OpenSSH-server (sshd). Wanneer een client niet binnen de LoginGraceTime (standaard: 120 seconden) authenticeert, roept sshd SIGALRM aan om de verbinding te beëindigen. De signal handler roept functies aan die niet async-signal-safe zijn — met name syslog() — die de heap-status kunnen corrumperen wanneer ze gelijktijdig met andere bewerkingen worden aangeroepen.
Onderzoekers van Qualys, die de kwetsbaarheid ontdekten, noemden het "regreSSHion" omdat een identieke bug (CVE-2006-5051) in 2006 werd verholpen, maar de fix per ongeluk werd verwijderd toen OpenSSH 8.5p1 in oktober 2020 werd uitgebracht — waardoor de kwetsbaarheid bijna vier jaar lang stilzwijgend opnieuw bestond voordat deze werd ontdekt.
Shodan- en Censys-data ten tijde van de openbaarmaking toonden ongeveer 14 miljoen aan internet toegankelijke OpenSSH-servers met kwetsbare versies. Zelfs met een Hoge (niet Kritieke) CVSS-score vanwege het vereiste AC:H (hoge complexiteit), maakte het enorme aantal blootgestelde systemen dit tot een van de meest impactvolle kwetsbaarheden van 2024. Elke Linux-server is een potentieel doelwit.
Getroffen versies
| OpenSSH-versiebereik | Status |
|---|---|
| < 4.4p1 | Kwetsbaar (oorspronkelijke CVE-2006-5051) |
| 4.4p1 – 8.4p1 | Gepatcht (fix voor CVE-2006-5051 aanwezig) |
| 8.5p1 – 9.7p1 | KWETSBAAR (regressie opnieuw geïntroduceerd) |
| 9.8p1+ | Gepatcht |
glibc-vereiste: de PoC van Qualys exploiteerde de malloc-implementatie van glibc. De sshd van OpenBSD is niet kwetsbaar. Alpine Linux (dat musl libc gebruikt) en macOS zijn niet kwetsbaar voor de gedemonstreerde exploitatietechniek, hoewel de race condition nog steeds bestaat.
De race condition uitgelegd
Signal handlers in C-programma's mogen alleen "async-signal-safe" functies aanroepen — een kleine subset van libc-functies die veilig zijn om vanuit een signal handler aan te roepen omdat ze geen gedeelde status gebruiken. De functie syslog() is niet async-signal-safe omdat deze intern malloc gebruikt.
# The problematic code path (simplified):
# When LoginGraceTime expires:
SIGALRM → grace_alarm_handler() → syslog() → malloc() internally
↕ RACE
main sshd thread also calls malloc() / free()
# If both malloc operations interleave:
# → Heap corruption
# → With enough attempts: controlled heap layout
# → Remote code execution as root
Exploitatie vereist het betrouwbaar winnen van de race condition, wat duizenden verbindingspogingen over meerdere minuten vergt. Dit maakt geautomatiseerde exploitatie op internetschaal wat trager dan typische "fire and forget"-kwetsbaarheden — maar geavanceerde actoren met permanente toegang tot een doelwit hebben tijd genoeg.
Moeilijkheidsgraad van exploitatie
Qualys demonstreerde betrouwbare exploitatie op 32-bit systemen (x86). Op 64-bit systemen verhoogt ASLR de moeilijkheidsgraad aanzienlijk. De onderzoekers merken op dat exploitatie met ongeveer 10.000 pogingen over 6-8 uur theoretisch haalbaar is op 64-bit systemen, maar ze publiceerden geen werkende PoC voor x86_64.
De drempel kan echter worden verlaagd door:
- Informatielekken die ASLR verslaan (gecombineerde exploits)
- Brute-forcen in omgevingen waar fail2ban of rate limiting niet is geconfigureerd
- Toekomstig onderzoek dat de exploitatietechniek verbetert
- Toegang tot kwetsbare 32-bit systemen (nog steeds gangbaar in IoT en embedded Linux)
Detectie
# Check OpenSSH version
ssh -V
sshd -V
# Check installed package version (Debian/Ubuntu)
dpkg -l openssh-server | grep openssh
# Check installed package version (RHEL/CentOS)
rpm -qa | grep openssh-server
# Check for brute-force attempts indicative of regreSSHion exploitation
# (very high connection rate from single IP, all failing within grace period)
grep "Connection closed by" /var/log/auth.log |
awk '{print $9}' | sort | uniq -c | sort -rn | head -20
# Check for failed logins at high rate
grep "Failed\|Invalid" /var/log/auth.log |
awk '{print $11}' | sort | uniq -c | sort -rn | head -10
Mitigatie
- Werk OpenSSH bij naar 9.8p1+: alle grote distributies brachten binnen dagen na de openbaarmaking patches uit.
apt update && apt upgrade openssh-serverof equivalent. - Stel LoginGraceTime in op 0: het instellen van
LoginGraceTime 0in/etc/ssh/sshd_configvoorkomt dat de SIGALRM-handler wordt aangeroepen, waardoor de race condition wordt geëlimineerd (hoewel dit de grace-timeout verwijdert):echo "LoginGraceTime 0" >> /etc/ssh/sshd_config systemctl reload sshd
- Rate limit SSH-verbindingen: configureer fail2ban of iptables rate limiting om de duizenden verbindingen die nodig zijn voor exploitatie te voorkomen
- Beperk SSH-toegang op IP: beperk sshd tot bekende beheer-IP-bereiken met behulp van
AllowUsers,ListenAddressof firewallregels - Gebruik alleen SSH-sleutels: schakel wachtwoordauthenticatie uit — sleutelgebaseerde authenticatie voegt een sterk pre-authenticatiefilter toe
- Overweeg SSH naar een niet-standaardpoort te verplaatsen: vermindert opportunistische scannerruis, hoewel dit geen beveiligingsmaatregel is
KENSAI-detectiemogelijkheden
- SSH-banner-scanning: KENSAI identificeert OpenSSH-versies op alle aan internet blootgestelde assets en markeert 8.5p1–9.7p1 als kwetsbaar voor CVE-2024-6387
- Interne netwerkscanning: uitgebreide ontdekking van kwetsbare SSH-servers op interne netwerken
- Configuratieaudit: controleert op mitigerende configuraties (LoginGraceTime, AllowUsers, alleen-sleutel-authenticatie)
- Patchvalidatie: bevestigt patchtoepassing na remediëring
- Blootstellingscontext: prioriteert aan internet blootgestelde SSH-servers boven alleen-interne systemen
KENSAI inventariseert elke SSH-server in uw omgeving — intern en extern — en markeert direct regreSSHion-kwetsbare versies. Geen agents nodig voor externe blootstelling.
Controleer uw SSH-blootstelling