CRITICAL✓ PATCH🇬🇧 English

CVE-2018-16395

Błędne porównanie obiektów X.509 w bibliotece OpenSSL dla Ruby

CVSS 9.8v3.0pub. 2018-11-16upd. 2024-11-21

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.

🤖 Analiza AI
Jak działa

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.

Skutki

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.

Mitygacja

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.

Kogo dotyczy

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 Vector
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Canonical Ubuntu

    OS
    Canonical
    14.0416.0418.0418.10
  • Debian

    OS
    Debian
    8.09.0
  • Red Hat Enterprise Linux

    OS
    Redhat
    7.4
  • Ruby Lang OpenSSL

    APP
    Ruby-Lang
    < 2.1.2
  • Ruby Lang Ruby

    APP
    Ruby-Lang
    2.6.02.5.0 – 2.5.12.4.0 – 2.4.42.3.0 – 2.3.7
🟢
PATCH DOSTĘPNY
Aktualizacja od producenta gotowa. Wdrożenie w ramach standardowego cyklu.
CWE
Referencje

Powiązane podatności

CVE-2026-24061CRITICAL9.8⚠ KEVPL ✓ten sam produkt

GNU Inetutils telnetd: ominięcie uwierzytelnienia przez zmienną USER

CVE-2025-32463CRITICAL9.3⚠ KEVPL ✓ten sam produkt

Sudo: eskalacja uprawnień do root poprzez opcję --chroot (CVE-2025-32463)

CVE-2025-49113CRITICAL9.9⚠ KEVPL ✓ten sam produkt

RCE przez deserializację PHP w Roundcube Webmail (parametr _from)

CVE-2025-32433CRITICAL10.0⚠ KEVPL ✓ten sam produkt

Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)

CVE-2025-24201CRITICAL10.0⚠ KEVPL ✓ten sam produkt

Apple WebKit: out-of-bounds write umożliwiający ucieczkę z sandbox przeglądarki