Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-0778 | Kitploit
Strumenti/GitHubGitHub/jeongjunsoo/cve-2022-0778
Analisi delle VulnerabilitàExploitCrittografiaApprendimento e FormazioneLab e Pratica
GitHubjeongjunsoo/cve-2022-0778

CVE-2022-0778

Vedi Repository
12 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2022-0778

Contributori

  • 정준수(@jeongjunsoo)

Riepilogo

  • La vulnerabilità CVE-2022-0778 colpisce la funzione BN_mod_sqrt() di OpenSSL, che calcola la radice quadrata di un numero primo.

  • Quando questa funzione elabora certificati manipolati in modo malevolo che non si basano su numeri primi, i server non patchati possono essere esposti ad attacchi DoS.


Target

  • OpenSSL 1.0.2
  • OpenSSL 1.1.1
  • OpenSSL 3.0

Prima della patch

root@kitploit:~
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;
}

  • Secondo questo algoritmo, quando il valore di i raggiunge il valore di e, il loop dovrebbe terminare.
  • Tuttavia, con un input specifico, se si fa in modo che sia i che e assumano il valore 1, il loop non termina e si verifica un loop infinito.
  • Ciò provoca una denial of service.

Dopo la patch

root@kitploit:~
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;
}

  • La precedente istruzione while è stata trasformata in for.
  • Di conseguenza, la patch fa sì che il loop termini automaticamente quando il valore di i raggiunge e.
  • Con questa patch è stato eliminato il rischio di loop infinito.

Configurazione dell'ambiente ed esecuzione

  • Configurazione dell'ambiente Ubuntu

  • docker compose up -d per avviare l'ambiente di test

  • docker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345

  • docker compose exec curl top per verificare lo stato dei processi

  • docker compose exec curl bash per eseguire bash

  • curl -k https://172.17.0.1:12345 per inviare una richiesta HTTPS alla porta 12345


Esecuzione

  • Per l'esercitazione, preparare tre finestre di terminale (A, B, C).

  • Nel terminale A, eseguire il comando docker run -it --rm -p 12345:12345 yywing/cve-2022-0778 --addr 0.0.0.0:12345 per avviare l'immagine Docker.

  • Successivamente, nel terminale B, eseguire il comando docker compose exec curl top per osservare lo stato dei processi attualmente in esecuzione.

  • Infine, nel terminale C, digitare docker compose exec curl bash e quindi inviare una richiesta HTTPS alla porta 12345 con curl -k https://172.17.0.1:12345.

Risultato

  • Dal risultato del comando top eseguito nel terminale B, si può notare che il processo curl utilizza quasi il 100% delle risorse CPU. Ciò è dovuto al loop infinito in cui è caduto.

Conclusione

  • Questa vulnerabilità è causata dalla mancata verifica della primalità.
  • Per prevenire il problema del loop infinito, la patch ha sostituito l'istruzione while con for.

Riferimenti

  • https://github.com/drago-96/CVE-2022-0778

  • https://hackyboiz.github.io/2022/03/19/syru/cve-2022-0778/

  • https://github.com/yywing/cve-2022-0778/


Scarica lo strumento