Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-6042-PoC — Proof of Concept und End-to-End-Test von Algorithmic Complexity DoS in musl libc 0.8.0-1.2.6, zugewiesen als CVE-2026-6042 | Kitploit
Tools/GitHubGitHub/jensnesten/cve-2026-6042-poc
SchwachstellenanalyseExploitationWebsicherheitFuzzing
GitHubjensnesten/cve-2026-6042-poc

CVE-2026-6042-PoC

Proof of Concept und End-to-End-Test von Algorithmic Complexity DoS in musl libc 0.8.0-1.2.6, zugewiesen als CVE-2026-6042

Repository anzeigen
5vor 5 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-6042: Algorithmische Komplexitäts-DoS in musl libc iconv

Gap-Skipping-Schleifen im GB18030-4-Byte-Decoder von musls iconv ermöglichen es, dass eine kleine manipulierte Eingabe unverhältnismäßig viel CPU-Zeit verbraucht. Ein 40 KB großer adversarischer Payload kann einen CPU-Kern für über 40 Minuten blockieren.

  • Advisory: https://www.openwall.com/lists/oss-security/2026/04/09/19
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-6042

Entgegen der Aussagen in den Advisories ist der Angriffsvektor dieses Exploits offensichtlich netzwerkbasiert, nicht lokal. Dies rührt daher, dass VulDB die von ihnen zugewiesenen Schwachstellen nicht wirklich versteht.

CVSS 3.1 Vektor: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - 7.5 (Hoch)

Überblick

FeldDetail
Betroffene Softwaremusl libc (iconv-Implementierung)
Betroffene KodierungenGB18030 (4-Byte-Sequenzen)
TypAlgorithmische Komplexität / Denial of Service
Bestätigte Versionenmusl 1.2.5 (Alpine 3.21), musl 1.2.6 (aus dem Quellcode gebaut)
Wahrscheinlich betroffenAlle musl-Versionen seit Einführung von GB18030 und UHC/CP949-Unterstützung
AngriffsflächeJeder musl-basierte Dienst, der iconv() mit nicht vertrauenswürdiger Eingabe in diesen Kodierungen aufruft

Grundursache

Der GB18030-4-Byte-Decoder in musl (src/locale/iconv.c, ungefähr Zeilen 434-442) konvertiert eine 4-Byte-Eingabesequenz in einen linearen Index und durchläuft dann eine Gap-Skipping-Schleife, um diesen Index einem Unicode-Codepunkt zuzuordnen. Für jedes dekodierte Zeichen iteriert die innere Schleife über die gesamte gb18030[126][190]-Tabelle (23.940 Einträge), um zu zählen, wie viele 2-Byte-zugeordnete Codepunkte in einen gleitenden Bereich fallen.

Die Byte-Sequenz 82 35 8F 33 erzeugt einen linearen Index von 19.171, der knapp unterhalb des dichten CJK-Bereichs für vereinheitlichte Ideogramme (U+4E00-U+9FBD, ~20.902 Einträge) liegt. Die Gap-Skipping-Schleife muss dann Eintrag für Eintrag durch den gesamten dichten Block laufen, wobei ~20.905 äußere Iterationen ausgeführt werden, die jeweils alle 23.940 Tabelleneinträge scannen. Das entspricht ungefähr 500 Millionen Vergleichen pro Eingabezeichen.

Da die Kosten linear mit der Anzahl adversarischer Zeichen in der Eingabe skalieren und jedes Zeichen unabhängig die vollständige innere Schleife auslöst, beträgt die Gesamtarbeit O(n * k^2), wobei n die Anzahl der Eingabezeichen und k die Größe der Nachschlagetabelle ist.

Auswirkungen

Jedes musl-basierte System (Alpine Linux, Void Linux, postmarketOS, eingebettete/Container-Images usw.), das einen Dienst ausführt, der GB18030 oder EUC-KR aus benutzergelieferter Eingabe über iconv() transkodiert, ist anfällig für Denial of Service.

Prognostizierte Zeiten auf einem einzelnen Kern (gemessen auf Alpine 3.21 / musl 1.2.5):

EingabeZeit
1 adversarisches Zeichen (4 Bytes)~0,26 s
100 Zeichen (400 Bytes)~26 s
1.000 Zeichen (4 KB)~4,3 min
10.000 Zeichen (40 KB)~43 min

Zum Vergleich: 100 harmlose GB18030-Zeichen werden in Mikrosekunden dekodiert.

Repository-Inhalte

DateiBeschreibung
poc_gb18030_dos.cEigenständiger PoC: misst die Zeit für harmlose vs. adversarische GB18030-Dekodierung über iconv()
server.cMinimaler HTTP-Server, der POST-Bodies über iconv() transkodiert und so eine reale Angriffsfläche simuliert
DockerfileAlpine-Linux-Container-Image, das den anfälligen Server baut und ausführt
test.shEnd-to-End-Testskript: sendet harmlose und adversarische Payloads an den Server und vergleicht die Antwortzeiten

Reproduktion

1. Eigenständiger PoC (direkte iconv-Zeitmessung)

Auf jedem musl-basierten System bauen und ausführen:

root@kitploit:~
# Auf Alpine Linux
apk add gcc musl-dev
gcc -O2 -o poc_gb18030_dos poc_gb18030_dos.c
./poc_gb18030_dos

Oder über Docker:

root@kitploit:~
docker run --rm -v "$(pwd)":/work -w /work alpine:latest \
  sh -c "apk add gcc musl-dev && gcc -O2 -o poc_gb18030_dos poc_gb18030_dos.c && ./poc_gb18030_dos"

Erwartete Ausgabe: Harmlose Zeichen werden in Mikrosekunden dekodiert; ein einzelnes adversarisches Zeichen (82 35 8F 33) benötigt ~0,26 Sekunden.

2. End-to-End (HTTP-Server in Docker)

Den anfälligen Server bauen und starten:

root@kitploit:~
docker build -t cve-2026-6042 .
docker run --rm -p 8080:8080 cve-2026-6042

In einem anderen Terminal das Test-Harness ausführen:

root@kitploit:~
./test.sh

Oder einen Payload manuell senden:

root@kitploit:~
# Harmlos: 100 Zeichen, sollte sofort zurückkommen
printf '\x81\x30\x81\x30%.0s' $(seq 1 100) > /tmp/benign.bin
curl -X POST -H "Content-Type: text/plain; charset=gb18030" \
     --data-binary @/tmp/benign.bin http://localhost:8080/

# Adversarisch: nur 5 Zeichen, sollte >1 Sekunde dauern
printf '\x82\x35\x8F\x33%.0s' $(seq 1 5) > /tmp/adversarial.bin
curl -X POST -H "Content-Type: text/plain; charset=gb18030" \
     --data-binary @/tmp/adversarial.bin http://localhost:8080/

Der X-Transcode-Time-Antwortheader meldet die Zeit, die innerhalb von iconv() verbracht wurde.

End-to-End-Demo

Der Screenshot unten zeigt die lineare Skalierung adversarischer Eingaben gegen den Docker-Server: 20 Zeichen (80 Bytes) benötigen ~5,2 s, 80 Zeichen (320 Bytes) ~20,8 s und 160 Zeichen (640 Bytes) ~41,5 s.

End-to-End-DoS-Demo

Wichtige Byte-Sequenzen

SequenzLinearer IndexVerhalten
81 30 81 30 (harmlos)128Niedriger Codepunkt; Gap-Skip-Schleife terminiert schnell
82 35 8F 33 (adversarisch)19.171Liegt knapp unterhalb des dichten CJK-Blocks; löst ~500M Vergleiche aus
82 35 90 30 (adversarisch)~19.200Gleiche Region, ähnliche Kosten

Haftungsausschluss

Dieses Repository wird zu Zwecken der Sicherheitsforschung und verantwortungsvollen Offenlegung veröffentlicht. Der Code wird ausschließlich bereitgestellt, um CVE-2026-6042 zu reproduzieren und zu verifizieren. Verwenden Sie ihn nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Testautorisierung haben.

Tool herunterladen