
Exploit de preuve de concept pour CVE-2022-0778, une vulnérabilité de déni de service dans la fonction BN_mod_sqrt() d'OpenSSL, avec un environnement de laboratoire basé sur Docker pour les tests et l'analyse.
Contributeurs
La vulnérabilité CVE-2022-0778 affecte la fonction BN_mod_sqrt() d'OpenSSL qui calcule la racine carrée d'un nombre premier.
Lorsque cette fonction traite un certificat malveillant qui n'est pas basé sur un nombre premier, un serveur non patché peut être exposé à une attaque DoS.
i = 1;
if (!BN_mod_sqr(t, b, p, ctx))
goto end;
while (!BN_is_one(t)) {
i++;
if (i == e) {
ERR_raise(ERR_LIB_BN, BN_R_NOT_A_SQUARE);
goto end;
}
if (!BN_mod_mul(t, t, t, p, ctx))
goto end;
}
for (i = 1; i < e; i++) {
if (i == 1) {
if (!BN_mod_sqr(t, b, p, ctx))
goto end;
} else {
if (!BN_mod_mul(t, t, t, p, ctx))
goto end;
}
if (BN_is_one(t))
break;
}
/* If not found, a is not a square or p is not prime. */
if (i >= e) {
ERR_raise(ERR_LIB_BN, BN_R_NOT_A_SQUARE);
goto end;
}
while a été remplacée par une instruction for.Configuration de l'environnement Ubuntu
docker compose up -d pour exécuter l'environnement de test
docker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345
docker compose exec curl top pour vérifier l'état des processus
docker compose exec curl bash pour exécuter bash
curl -k https://172.17.0.1:12345 pour envoyer une requête HTTPS sur le port 12345

docker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345 pour démarrer l'image Docker.
docker compose exec curl top pour observer l'état des processus en cours d'exécution.
docker compose exec curl bash, puis exécutez curl -k https://172.17.0.1:12345 pour envoyer une requête HTTPS au port 12345.