Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2022-2274 — OpenSSL-src Corrupção de Memória no Heap com Operação de Chave Privada RSA : CVE-2022-2274 | Kitploit
Ferramentas/GitHubGitHub/desmondsanctity/cve-2022-2274
Forensia de MemóriaAnálise de VulnerabilidadesExploraçãoCriptografiaAnálise de BináriosAprendizado e Educação
GitHubdesmondsanctity/cve-2022-2274

CVE-2022-2274

OpenSSL-src Corrupção de Memória no Heap com Operação de Chave Privada RSA : CVE-2022-2274

Ver Repositório
1há 3 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

OpenSSL-src Corrupção de Memória no Heap com Operação de Chave Privada RSA : CVE-2022-2274

Resumo

OpenSSL-src-rust é um código-fonte e uma lógica para compilar o OpenSSL a partir do código-fonte, escrito em Rust e empacotado como uma crate. Atualmente existem dois branches mantidos, correspondentes às duas versões do OpenSSL mantidas: main, que compila o OpenSSL 3.0, e release/111, que compila o OpenSSL 1.1.1.

A versão 3.0.4 do OpenSSL introduziu um bug grave na implementação do RSA para CPUs X86_64 que suportam as instruções AVX512IFMA. Esse problema torna incorreta a implementação do RSA com chaves privadas de 2048 bits nessas máquinas e a corrupção de memória ocorrerá durante o cálculo. Como consequência da corrupção de memória, um atacante pode ser capaz de acionar uma execução remota de código na máquina que realiza o cálculo. Servidores SSL/TLS ou outros servidores que usam chaves privadas RSA de 2048 bits em execução em máquinas que suportam as instruções AVX512IFMA da arquitetura X86_64 são afetados por esse problema.

Essa vulnerabilidade fez com que a compilação do OpenSSL versão 3.0 usando openssl-src-rust falhasse e causasse um crash durante o processo na máquina que suporta as instruções AVX512IFMA da arquitetura X86_64.

Produto

openssl-src(Rust)

Versão Testada

>= 300.0.8, < 300.0.9

Detalhes

Problema: corrupção de memória no heap do openssl-src 300.0.8 com operação de chave privada RSA (GHSA-735f-pg76-fxc4)

Os procedimentos para reproduzir o erro ou o crash são os seguintes:

Compile o OpenSSL-3.0.4 em uma CPU com AVX512 (esta demonstração usa um Core i7-1065G7) com:

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

Execute um teste:

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

O sanitizer reclama:

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

Foi proposto pelo descobridor do problema que commits anteriores ao código do OpenSSL podem ter introduzido o bug. O commit tinha como objetivo corrigir BN_mod_exp_consttime para que ele não produzisse um resultado não reduzido. A função bn_reduce_once_in_place causou a corrupção de memória no 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);

Isso foi corrigido com uma atualização encontrada neste commit, que afirmava que bn_reduce_once_in_place espera o número de BN_ULONG, mas factor_size é o tamanho em bits do módulo. Essa atualização foi incluída no OpenSSL 3.0.5, lançado em 12 de outubro de 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);

Impacto

Um atacante poderia teoricamente explorar essa vulnerabilidade enviando uma transmissão por uma rede (por exemplo, uma rede TCP/IP). Uma exploração bem-sucedida poderia resultar em:

  • Interromper serviços (ou seja, DoS);
  • Roubar informações na memória (ou seja, violação de confidencialidade);
  • Alterar informações na memória (ou seja, violação de integridade);
  • Invocar/executar uma lista definível de ações específicas no aplicativo/host de destino;
  • Invocar/executar comandos/código arbitrários no aplicativo/host de destino.

Correções

  • Os usuários da versão 3.0.4 do OpenSSL devem atualizar para o OpenSSL 3.0.5 ou superior.
  • O OpenSSL 1.1.1 e 1.0.2 não são afetados por esse problema.

Recursos

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

Métricas Baseadas em CVSS

CVE

  • CVE-2022-2274

Créditos

  • Este problema foi relatado ao OpenSSL em 22 de junho de 2022 por Xi Ruoyao. A correção foi desenvolvida por Xi Ruoyao.
  • Este problema foi descoberto e relatado pelo membro da equipe GHSL Konrad Borowski.
Baixar ferramenta
SeveridadeCrítico 9.8 / 10
Vetor de ataqueRede
Complexidade de ataqueBaixa
Privilégios necessáriosNenhum
Interação do usuárioNenhum
EscopoInalterado
ConfidencialidadeAlta
IntegridadeAlta
DisponibilidadeAlta