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-2022-2274 — OpenSSL-src Heap-Speicherkorruption bei RSA-Private-Key-Operation : CVE-2022-2274 | Kitploit
Tools/GitHubGitHub/desmondsanctity/cve-2022-2274
SpeicherforensikSchwachstellenanalyseExploitationKryptographieBinäranalyseLernen & Bildung
GitHubdesmondsanctity/cve-2022-2274

CVE-2022-2274

OpenSSL-src Heap-Speicherkorruption bei RSA-Private-Key-Operation : CVE-2022-2274

Repository anzeigen
1vor 3 JahrenNoch 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

OpenSSL-src Heap-Speicherkorruption bei RSA-Private-Key-Operation: CVE-2022-2274

Zusammenfassung

OpenSSL-src-rust ist ein Quellcode- und Logikpaket zum Erstellen von OpenSSL aus dem Quellcode, geschrieben in Rust und als Crate verpackt. Derzeit gibt es zwei gepflegte Branches, die den beiden gepflegten OpenSSL-Versionen entsprechen: main, der OpenSSL 3.0 erstellt, und release/111, der OpenSSL 1.1.1 erstellt.

Das OpenSSL 3.0.4-Release führte einen schwerwiegenden Fehler in der RSA-Implementierung für X86_64-CPUs ein, die die AVX512IFMA-Anweisungen unterstützen. Dieses Problem führt dazu, dass die RSA-Implementierung mit 2048-Bit-privaten Schlüsseln auf solchen Maschinen falsch arbeitet und während der Berechnung Speicherkorruption auftritt. Infolge der Speicherkorruption könnte ein Angreifer eine Remote-Codeausführung auf der Maschine auslösen, die die Berechnung durchführt. SSL/TLS-Server oder andere Server, die 2048-Bit-RSA-Private-Key auf Maschinen mit AVX512IFMA-Unterstützung der X86_64-Architektur verwenden, sind von diesem Problem betroffen.

Diese Schwachstelle führte dazu, dass das Erstellen von OpenSSL Version 3.0 mit openssl-src-rust auf Maschinen mit AVX512IFMA-Unterstützung der X86_64-Architektur fehlschlug und während des Prozesses abstürzte.

Produkt

openssl-src(Rust)

Getestete Version

>= 300.0.8, < 300.0.9

Details

Problem: openssl-src 300.0.8 Heap-Speicherkorruption bei RSA-Private-Key-Operation (GHSA-735f-pg76-fxc4)

Die Vorgehensweise zur Reproduktion des Fehlers oder Absturzes ist wie folgt:

Build OpenSSL-3.0.4 on a CPU with AVX512 (this demonstration uses a Core i7-1065G7) with:

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

Führen Sie einen Test durch:

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

Der Sanitizer meldet:

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

Es wurde vom Entdecker des Problems vorgeschlagen, dass frühere Commits am OpenSSL-Code den Fehler eingeführt haben könnten. Der Commit sollte BN_mod_exp_consttime korrigieren, sodass es kein unreduziertes Ergebnis liefert. Die Funktion bn_reduce_once_in_place verursachte die Heap-Speicherkorruption.

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);

Dies wurde mit einem Update behoben, das in diesem Commit zu finden ist, der besagt, dass bn_reduce_once_in_place die Anzahl der BN_ULONG erwartet, aber factor_size die Bitgröße des Moduls ist. Dieses Update war im OpenSSL 3.0.5 enthalten, das am 12. Oktober 2022 veröffentlicht wurde.

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);

Auswirkung

Ein Angreifer könnte diese Schwachstelle theoretisch ausnutzen, indem er eine Übertragung über ein Netzwerk (z. B. ein TCP/IP-Netzwerk) sendet. Ein erfolgreicher Exploit könnte zu Folgendem führen:

  • Unterbrechung von Diensten (d. h. DoS);
  • Diebstahl von Informationen im Speicher (d. h. Verletzung der Vertraulichkeit);
  • Änderung von Informationen im Speicher (d. h. Verletzung der Integrität);
  • Aufrufen/Ausführen einer definierbaren Liste spezifischer Aktionen auf der Zielanwendung/dem Zielhost;
  • Aufrufen/Ausführen beliebiger Befehle/Codes auf der Zielanwendung/dem Zielhost.

Patches

  • Benutzer der OpenSSL 3.0.4-Version sollten auf OpenSSL 3.0.5 und höher aktualisieren.
  • OpenSSL 1.1.1 und 1.0.2 sind von diesem Problem nicht betroffen.

Ressourcen

  • 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/

CVSS-basierte Metriken

CVE

  • CVE-2022-2274

Danksagungen

  • Dieses Problem wurde am 22. Juni 2022 von Xi Ruoyao an OpenSSL gemeldet. Der Fix wurde von Xi Ruoyao entwickelt.
  • Dieses Problem wurde vom GHSL-Teammitglied Konrad Borowski entdeckt und gemeldet..
Tool herunterladen
SchweregradKritisch 9.8 / 10
AngriffsvektorNetzwerk
AngriffskomplexitätNiedrig
Erforderliche BerechtigungenKeine
BenutzerinteraktionKeine
AuswirkungsbereichUnverändert
VertraulichkeitHoch
IntegritätHoch
VerfügbarkeitHoch