Rozszerzenie OpenSSL w Ruby (gałąź Git trunk) w określonym przedziale czasowym zawsze generowało wykładnik prywatny RSA o wartości '1', co czyni wygenerowane klucze kryptograficznie słabymi. Zdalny atakujący może wykorzystać tę wadę do obejścia lub naruszenia integralności usług opartych na silnych kluczach RSA.
▸ Pokaż oryginał (EN)
The OpenSSL extension of Ruby (Git trunk) versions after 2011-09-01 up to 2011-11-03 always generated an exponent value of '1' to be used for private RSA key generation. A remote attacker could use this flaw to bypass or corrupt integrity of services, depending on strong private RSA keys generation mechanism.
Błąd tkwi w rozszerzeniu OpenSSL dołączonym do Ruby (Git trunk) w wersjach z okresu od 2011-09-01 do 2011-11-03. W tym czasie mechanizm generowania prywatnych kluczy RSA zawsze przypisywał wykładnikowi prywatnemu wartość '1' zamiast kryptograficznie bezpiecznej wartości losowej. Klucz RSA z wykładnikiem równym '1' jest trywialnie słaby i nie zapewnia żadnej rzeczywistej ochrony kryptograficznej. Zgodnie z klasyfikacją CWE-326 jest to przypadek niewystarczającej siły mechanizmu szyfrowania.
Atakujący może obejść mechanizmy uwierzytelniania lub ochrony integralności oparte na kluczach RSA wygenerowanych przez podatną wersję biblioteki. W konsekwencji możliwe jest naruszenie poufności, integralności oraz dostępności usług korzystających z tych kluczy.
Należy zastąpić wszystkie klucze prywatne RSA wygenerowane przez podatną wersję rozszerzenia OpenSSL nowymi, bezpiecznymi kluczami wygenerowanymi przez niezagrożoną wersję biblioteki. Należy zastosować patche dostępne u producenta zgodnie z referencjami.
Ruby (Git trunk) z rozszerzeniem OpenSSL — wersje opublikowane po 2011-09-01 do 2011-11-03 włącznie.
Podatność dotyczy wyłącznie wąskiego okna czasowego (2011-09-01 do 2011-11-03) gałęzi Git trunk Ruby. Klucze RSA wygenerowane w tym okresie powinny zostać natychmiast unieważnione i zastąpione. CVE zostało opublikowane formalnie dopiero w 2019 roku, mimo że problem dotyczył kodu z 2011 roku.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HRuby Lang Ruby
APPRuby-Lang1.8.7.334 – 1.9.3 (bez)
Powiązane podatności
Heap overflow w Ruby Psych::Emitter start_document — RCE
Double free w kompilatorze Regexp w Ruby — zapis do dowolnych obszarów pamięci
Integer overflow w CGI.escape_html w Ruby — przepełnienie bufora
Błędne porównanie obiektów X.509 w bibliotece OpenSSL dla Ruby
Path traversal w metodach Dir Ruby przez brak walidacji znaków NULL