ПолiтДумка

Крупная криптографическая уязвимость в Java позволяет подделывать сертификаты

23 апреля
08:10 2022

В новых версиях Java-фреймворка Oracle обнаружена опасная уязвимость. Ее эксплуатация позволяет злоумышленникам легко подделывать сертификаты и TLS-подписи, сообщения двухфакторной аутентификации и учетные данные авторизации, созданные рядом широко используемых открытых стандартов.

Уязвимость затрагивает реализацию алгоритма с открытым ключом Elliptic Curve Digital Signature Algorithm (ECDSA) в версиях Java 15 и младше. ECDSA — алгоритм, использующий принципы эллиптической криптографии для цифровой аутентификации сообщений. Ключевым преимуществом ECDSA является меньший размер генерируемых им ключей по сравнению с RSA или другими криптоалгоритмами, что делает его подходящим для использования в таких стандартах, как 2FA на основе FIDO, язык разметки Security Assertion Markup Language (SAML), OpenID и JSON.

«Если компания использует одну из уязвимых версий Java, злоумышленник может легко подделать некоторые типы SSL-сертификатов и рукопожатий (позволяющих перехватывать и изменять сообщения), подписанные JWT, утверждения SAML или токены идентификатора OIDC и даже сообщения аутентификации WebAuthn», — пояснил исследователь из ИБ-фирмы ForgeRock Нил Мэдден (Neil Madden), обнаруживший уязвимость.

Уязвимость (CVE-2022-21449) получила оценку в 7,5 балла по шкале CVSS. По словам специалиста, он оценил бы опасность проблемы на максимальные 10 баллов «из-за широкого спектра воздействий на различную функциональность в контексте управления доступом».

Подписи ECDSA основаны на псевдослучайном числе, обычно обозначаемом как K, которое используется для получения двух дополнительных чисел — R и S. Для подтверждения подлинности подписи сторона должна проверить уравнение, включающее R и S, открытый ключ подписавшего, и криптографический хэш сообщения. Когда обе части уравнения равны, подпись действительна.

Реализация проверки подписи ECDSA в Java не проверяет, равны ли R или S нулю, поэтому пользователь может создать значение подписи, в котором они оба равны 0, и Java примет это как действительную подпись для любого сообщения и для любого общедоступного ключа. Цифровой эквивалент пустой идентификационной карты.

Организациям, использующим любую из уязвимых версий Java для проверки подписей, настоятельно рекомендуется применить исправления.


Warning: count(): Parameter must be an array or an object that implements Countable in /home/politdumkakiev/public_html/wp-content/themes/legatus-theme/includes/single/post-tags.php on line 5
Share

Статьи по теме

Последние новости

Приголомшливий рекорд. Підліток повністю пройшов NES Tetris і змусив гру «переродитися»

Читать всю статью

Мы в соцсетях

Наши партнеры

UA.TODAY - Украина Сегодня UA.TODAY

EA-LOGISTIC: Международные грузоперевозки – всегда своевременно и надежно!