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-2274 — OpenSSL-src Corruzione della memoria heap con operazione su chiave privata RSA : CVE-2022-2274 | Kitploit
Strumenti/GitHubGitHub/desmondsanctity/cve-2022-2274
Memory ForensicsAnalisi delle VulnerabilitàExploitCrittografiaAnalisi di BinariApprendimento e Formazione
GitHubdesmondsanctity/cve-2022-2274

CVE-2022-2274

OpenSSL-src Corruzione della memoria heap con operazione su chiave privata RSA : CVE-2022-2274

Vedi Repository
13 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

OpenSSL-src Heap Memory Corruption with RSA Private Key Operation : CVE-2022-2274

Sommario

OpenSSL-src-rust è un codice sorgente e una logica per compilare OpenSSL dal sorgente scritta in rust e impacchettata come crate. Ci sono attualmente due branch mantenuti, che corrispondono alle due versioni OpenSSL mantenute che sono main che compila OpenSSL 3.0 e release/111 che compila OpenSSL 1.1.1.

La release OpenSSL 3.0.4 ha introdotto un grave bug nell'implementazione RSA per CPU X86_64 che supportano le istruzioni AVX512IFMA. Questo problema rende l'implementazione RSA con chiavi private a 2048 bit errata su tali macchine e la corruzione della memoria avverrà durante il calcolo. Come conseguenza della corruzione della memoria, un attaccante potrebbe essere in grado di innescare una esecuzione di codice remota sulla macchina che esegue il calcolo. Server SSL/TLS o altri server che usano chiavi private RSA a 2048 bit in esecuzione su macchine che supportano le istruzioni AVX512IFMA dell'architettura X86_64 sono affetti da questo problema.

Questa vulnerabilità ha fatto sì che la compilazione di OpenSSL versione 3.0 usando openssl-src-rust fallisse e andasse in crash nel processo sulla macchina che supporta le istruzioni AVX512IFMA dell'architettura X86_64.

Prodotto

openssl-src(Rust)

Versione Testata

>= 300.0.8, < 300.0.9

Dettagli

Problema: corruzione della memoria heap in openssl-src 300.0.8 con operazione su chiave privata RSA (GHSA-735f-pg76-fxc4)

I processi per riprodurre l'errore o il crash sono i seguenti:

Compilare OpenSSL-3.0.4 su una CPU con AVX512 (questa dimostrazione usa un Core i7-1065G7) con:

root@kitploit:~
CFLAGS="-O3 -g -fsanitize=address" ./config
make

Eseguire un test:

root@kitploit:~
make V=1 TESTS=test_exp test

Il sanitizer si lamenta:

root@kitploit:~
==481618==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60c000089400 at pc 0x7f01e32a9509 bp 0x7fff643ec100 sp 0x7fff643ec0f8
READ of size 8 at 0x60c000089400 thread T0
    #0 0x7f01e32a9508 in bn_select_words crypto/bn/rsaz_exp.h:64
    #1 0x7f01e32a9508 in bn_reduce_once_in_place crypto/bn/rsaz_exp.h:74
    #2 0x7f01e32a9508 in ossl_rsaz_mod_exp_avx512_x2 crypto/bn/rsaz_exp_x2.c:223
    #3 0x7f01e3287dc8 in BN_mod_exp_mont_consttime_x2 crypto/bn/bn_exp.c:1448
    #4 0x4042c3 in test_mod_exp_x2 test/exptest.c:260
    #5 0x40611a in run_tests test/testutil/driver.c:370
    #6 0x4039ba in main test/testutil/main.c:30
    #7 0x7f01e2c29319 in __libc_start_call_main (/usr/lib/libc.so.6+0x29319)
    #8 0x7f01e2c293e4 in __libc_start_main_impl (/usr/lib/libc.so.6+0x293e4)
    #9 0x403c40 in _start (/home/xry111/sources/lfs/openssl-3.0.4/test/exptest+0x403c40)

0x60c000089400 is located 0 bytes to the right of 128-byte region [0x60c000089380,0x60c000089400)
allocated by thread T0 here:
    #0 0x7f01e3ae5107 in __interceptor_malloc ../../../../libsanitizer/asan/asan_malloc_linux.cpp:69
    #1 0x7f01e34aa7a8 in CRYPTO_zalloc crypto/mem.c:197

SUMMARY: AddressSanitizer: heap-buffer-overflow crypto/bn/rsaz_exp.h:64 in bn_select_words
Shadow bytes around the buggy address:
  0x0c1880009230: 00 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa
  0x0c1880009240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c1880009250: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
  0x0c1880009260: 00 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa
  0x0c1880009270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c1880009280:[fa]fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
  0x0c1880009290: 00 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa
  0x0c18800092a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c18800092b0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
  0x0c18800092c0: 00 00 00 00 00 00 00 00 fa fa fa fa fa fa fa fa
  0x0c18800092d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==481618==ABORTING

È stato proposto dallo scopritore del problema che commit precedenti al codice OpenSSL potrebbero aver introdotto il bug. Il commit era stato fatto per correggere BN_mod_exp_consttime in modo che non produca un risultato non ridotto. La funzione bn_reduce_once_in_place ha causato la corruzione della memoria heap.

crypto/bn/rsaz_exp_x2.c

root@kitploit:~
@@ -220,6 +220,9 @@ int ossl_rsaz_mod_exp_avx512_x2(BN_ULONG *res1,
    from_words52(res1, factor_size, rr1_red);
    from_words52(res2, factor_size, rr2_red);

    bn_reduce_once_in_place(res1, /*carry=*/0, m1, storage, factor_size);
    bn_reduce_once_in_place(res2, /*carry=*/0, m2, storage, factor_size);

Questo è stato corretto con un aggiornamento trovato in questo commit che affermava che bn_reduce_once_in_place si aspetta il numero di BN_ULONG, ma factor_size è la dimensione in bit dei moduli. Questo aggiornamento è stato incluso in OpenSSL 3.0.5 rilasciato il 12 ottobre 2022.

crypto/bn/rsaz_exp_x2.c

root@kitploit:~
@@ -257,6 +257,9 @@ int ossl_rsaz_mod_exp_avx512_x2(BN_ULONG *res1,
    from_words52(res1, factor_size, rr1_red);
    from_words52(res2, factor_size, rr2_red);

    /* bn_reduce_once_in_place expects number of BN_ULONG, not bit size */
    factor_size /= sizeof(BN_ULONG) * 8;

    bn_reduce_once_in_place(res1, /*carry=*/0, m1, storage, factor_size);
    bn_reduce_once_in_place(res2, /*carry=*/0, m2, storage, factor_size);

Impatto

Un attaccante potrebbe teoricamente sfruttare questa vulnerabilità inviando una trasmissione attraverso una rete (ad es., una rete TCP/IP). Un exploit riuscito potrebbe comportare:

  • Interruzione dei servizi (cioè DoS);
  • Furto di informazioni in memoria (cioè violazione della riservatezza);
  • Alterazione di informazioni in memoria (cioè violazione dell'integrità);
  • Invocare/eseguire un elenco definibile di azioni specifiche sull'applicazione/host di destinazione;
  • Invocare/eseguire comandi/codice arbitrari sull'applicazione/host di destinazione.

Patch

  • Gli utenti della versione OpenSSL 3.0.4 dovrebbero aggiornare a OpenSSL 3.0.5 e successive.
  • OpenSSL 1.1.1 e 1.0.2 non sono affetti da questo problema.

Risorse

  • https://nvd.nist.gov/vuln/detail/CVE-2022-2274
  • openssl/openssl#18625
  • https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=4d8a88c134df634ba610ff8db1eb8478ac5fd345
  • https://rustsec.org/advisories/RUSTSEC-2022-0033.html
  • https://www.openssl.org/news/secadv/20220705.txt
  • https://security.netapp.com/advisory/ntap-20220715-0010/

Metriche basate su CVSS

CVE

  • CVE-2022-2274

Crediti

  • Questo problema è stato segnalato a OpenSSL il 22 giugno 2022 da Xi Ruoyao. La correzione è stata sviluppata da Xi Ruoyao.
  • Questo problema è stato scoperto e segnalato dal membro del team GHSL Konrad Borowski.
Scarica lo strumento
GravitàCritica 9.8 / 10
Vettore di attaccoRete
Complessità dell'attaccoBassa
Privilegi richiestiNessuno
Interazione utenteNessuna
ScopeInvariato
RiservatezzaAlta
IntegritàAlta
DisponibilitàAlta