Podatność w bibliotece OpenSSL zintegrowanej z Ruby powoduje, że porównanie dwóch obiektów OpenSSL::X509::Name przy użyciu operatora == może zwrócić wartość true dla obiektów, które faktycznie nie są równe. Umożliwia to stworzenie fałszywego certyfikatu akceptowanego jako legalny, co jest krytycznym zagrożeniem dla bezpieczeństwa operacji kryptograficznych.
▸ Pokaż oryginał (EN)
An issue was discovered in the OpenSSL library in Ruby before 2.3.8, 2.4.x before 2.4.5, 2.5.x before 2.5.2, and 2.6.x before 2.6.0-preview3. When two OpenSSL::X509::Name objects are compared using ==, depending on the ordering, non-equal objects may return true. When the first argument is one character longer than the second, or the second argument contains a character that is one less than a character in the same position of the first argument, the result of == will be true. This could be leveraged to create an illegitimate certificate that may be accepted as legitimate and then used in signing or encryption operations.
Błąd pojawia się podczas porównywania dwóch obiektów OpenSSL::X509::Name. Gdy pierwszy argument jest o jeden znak dłuższy od drugiego lub drugi argument zawiera znak o wartości o jeden mniejszą niż znak na tej samej pozycji w pierwszym argumencie, operator == niepoprawnie zwraca true. Wynika to z wadliwej logiki porównania w implementacji biblioteki OpenSSL dla Ruby. Atakujący może spreparować certyfikat X.509 ze specjalnie dobraną nazwą, który zostanie błędnie uznany za równy zaufanemu certyfikatowi.
Atakujący może stworzyć nielegalny certyfikat X.509, który zostanie zaakceptowany jako legalny przez podatne systemy i następnie wykorzystany do podpisywania lub szyfrowania danych, co prowadzi do kompromitacji integralności i poufności komunikacji.
Należy zaktualizować Ruby do wersji 2.3.8, 2.4.5, 2.5.2 lub 2.6.0-preview3 (albo nowszych). Dostępne są również patche dystrybucyjne, m.in. w ramach Red Hat (RHSA-2018:3729, RHSA-2018:3730, RHSA-2018:3731) oraz openSUSE.
Ruby przed wersją 2.3.8, Ruby w wersjach 2.4.x przed 2.4.5, Ruby w wersjach 2.5.x przed 2.5.2 oraz Ruby w wersjach 2.6.x przed 2.6.0-preview3, korzystające z biblioteki OpenSSL (Ruby-Lang OpenSSL).
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HCanonical Ubuntu
OSCanonical14.0416.0418.0418.10Debian
OSDebian8.09.0Red Hat Enterprise Linux
OSRedhat7.4Ruby Lang OpenSSL
APPRuby-Lang< 2.1.2Ruby Lang Ruby
APPRuby-Lang2.6.02.5.0 – 2.5.12.4.0 – 2.4.42.3.0 – 2.3.7
Powiązane podatności
GNU Inetutils telnetd: ominięcie uwierzytelnienia przez zmienną USER
Sudo: eskalacja uprawnień do root poprzez opcję --chroot (CVE-2025-32463)
RCE przez deserializację PHP w Roundcube Webmail (parametr _from)
Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)
Apple WebKit: out-of-bounds write umożliwiający ucieczkę z sandbox przeglądarki