Бесплатно Экспресс-аудит сайта:

28.09.2023

Новые уязвимости: 25 лет ложной безопасности протокола RSA

Старший инженер по качеству в команде безопасности QE BaseOS в Red Hat Хуберт Карио показал, что многие программные реализации схемы заполнения PKCS#1 v1.5 для обмена ключами RSA , которые ранее считались устойчивыми к широко известной атаке Даниэля Блейхенбахера, на самом деле уязвимы.

В 1998 году Блейхенбахер показал, что клиент сервера SSL/TLS может использовать информацию, полученную из ответов сервера об ошибках, чтобы узнать достаточно о заполнении и расшифровать защищенное сообщение.

Уязвимость появлялась неоднократно, в последний раз в 2017 году, когда исследователи безопасности обнаружили, что по крайней мере 8 IT-поставщиков и открытых проектов были уязвимы для вариации оригинальной атаки Блейхенбахера. Исследователи назвали свою атаку ROBOT.

В статье Карио говорится, что атаки в стиле Блейхенбахера на протокол RSA все еще возможны и что уязвимые реализации распространены. Карио назвал свою атаку MARVIN. По сути, отправляя специально созданные шифртексты RSA на сервер, который использует PKCS#1 v1.5 , и измеряя время, необходимое для обработки сообщений, можно в конечном итоге прочитать целевой открытый текст.

Карио рекомендует прекратить использование шифрования RSA PKCS#1 v1.5, так как затрагиваются только серверы, реализующие шифрование RSA. Большинство современных клиентов, по его словам, полагаются на Elliptic Curve Diffie Hellman.

Карио выявил по крайней мере 7 затронутых реализаций, некоторые из которых подтвердили исправления, но, по его мнению, большинство криптографических реализаций RSA PKCS#1 v1.5 всё ещё уязвимы.

Затронутые реализации:

  • OpenSSL (уровень TLS) – Синхронизация Oracle в расшифровке RSA (CVE-2022-4304);
  • OpenSSL (уровень API) – Сделать API расшифровки RSA безопасным для использования с заполнением PKCS#1 v1.5 (без CVE);
  • GnuTLS (уровень TLS) – уязвимость связана с тем, что время ответа на неправильные шифртексты RSA в ClientKeyExchange отличается от времени ответа шифртекстов с правильным заполнением PKCS#1 v1.5 (CVE-2023-0361);
  • НСС (уровень TLS) – улучшено постоянное время в операциях RSA. Ошибка была неполностью исправлена в версии 3.61 – реализация ещё уязвима (CVE-2023-4421);
  • pyca/cryptography – требуется исправление уровня OpenSSL (CVE-2020-25659);
  • M2Crypto – требуется исправление уровня OpenSSL (CVE-2020-25657);
  • OpenSSL-ibmca – Исправления для RSA PKCS#1 v1.5 и заполнения OAEP в версии 2.4.0 (без CVE).

Те, кто заинтересован в тестировании своих систем, могут воспользоваться скриптом Карио для тестирования серверов TLS и соответствующими инструкциями . Карио также отметил, что недостаток не ограничивается только RSA. Любая реализация, использующая общее целочисленное выполнение, столкнется с теми же проблемами.