Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Tajemnicza podatność w Javie, która… może okazać się katastrofalna. Błąd kryptograficzny związany z podpisami cyfrowymi [CVE-2022-21449]

20 kwietnia 2022, 10:35 | W biegu | komentarzy 7

Jeśli zobaczycie na kwietniowy Critical Patch Update odnośnie Javy, to pewnie machniecie ręką – eee, nic ciekawego.

Więc jeśli już machnęliście ręką, warto zapoznać się z tym wpisem: CVE-2022-21449: Psychic Signatures in Java.

Problem występuje w implementacji algorytmu podpisu ECDSA. Ultra krótkie wprowadzenie do problemu:

ECDSA stands for the Elliptic Curve Digital Signature Algorithm, and it is a widely used standard for signing all kinds of digital documents. Compared to the older RSA standard, elliptic curve keys and signatures tend to be much smaller for equivalent security, resulting in them being widely used in cases where size is at a premium. For example, the WebAuthn standard for two-factor authentication allows device manufacturers to choose from a wide range of signature algorithms, but in practice almost all of the devices manufactured to date support ECDSA signatures only (a notable exception being Windows Hello, which uses RSA signatures; presumably for compatibility with older TPM hardware).

Okazuje się, że wystarczy dla dowolnej wiadomości wygenerować „pusty podpis” (same zera) i taki podpis będzie prawdziwy:

Podatne są (tj. były): Java 15, Java 16, Java 17, Java 18 (łatka Oracle wskazuje jako podatne wersje: 7u331, 8u321, 11.0.14, 17.0.2, 18 – lub (w danej linii?) niższe). Polecamy dość szybko zaaplikować łatkę, w szczególności jeśli gdzieś bazujecie na podpisach wykorzystujących krzywe eliptyczne (patrz np. JWT i algorytmy ES*)

~Michał Sajdak

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Jarek

    W artykule jest błąd. Podatne są też wersje javy: Oracle Java SE: 7u331, 8u321, 11.0.14, 17.0.2, 18;

    Odpowiedz
  2. Cezar

    Hmmm, ktoś się ostro wziął za badanie JAVA: log4shell, spring4shell, a teraz to. Ciekawe co będzie dalej?
    Inna sprawa, że w korporacjach w końcu zaczyna upadać mit: „to jest w java, więc to jest z założenia bezpieczne”.

    Odpowiedz
  3. Artur

    Wszędzie czytam o nowościach, przestarzałych technologiach a ciągle ten upośledzony archaizm się pojawia. Rozumiem fascynację Javą wśród programistów tejże, ale pozostali?
    Bezpieczeństwo w tym czymś nigdy nie istniało.

    Odpowiedz
  4. Marek

    To tylko w Oraclowej Javie? OpenJDK i inne implementacje też się łapią?

    Odpowiedz
  5. Artur VL
    Odpowiedz

Odpowiedz