What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

25 лет ложной безопасности протокола RSA

INC.

Midle Weight
Депозит
$0
Старший инженер по качеству в команде безопасности 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. Любая реализация, использующая общее целочисленное выполнение, столкнется с теми же проблемами.
 
Хьюберт Карио (Hubert Kario), чешский исследователь безопасности, работающий в компании Red Hat, представил на завершившемся вчера Европейском симпозиуме по компьютерной безопасности технику атаки Marvin, позволяющую определить исходные данные через измерение задержек при выполнении операций расшифровки на базе алгоритма RSA. На практике предложенный метод позволяет расшифровать трафик или сформировать цифровые подписи без знания закрытого RSA-ключа. Для тестирования применимости атаки опубликован специальный скрипт для проверки TLS-серверов и инструментарий для выявления проблем в библиотеках.

Атака представляет собой вариацию метода Блейхенбахера, предложенного в 1998 году, и продолжает развитие атак ROBOT (Return Of Bleichenbacher's Oracle Threat) и New CAT (New Cache ATtack), опубликованных в 2017 и 2019 годах. Суть метода в том, что атакующий на основании разной реакции сервера и разного времени выполнения операций может отделить корректные и некорректные блоки добавочного заполнения (padding oracle), добавленные в соответствии со стандартом PKCS #1 v1.5 для выравнивания зашифрованных данных по границе блока. Манипулируя информацией о корректности блоков добавочного заполнения атакующий может путём перебора воссоздать подходящий шифротекст.

При этом атака непосредственно не восстанавливает закрытый ключ, а только позволяет расшифровать шифротекст или сформировать поддельное подписанное сообщение. Для успешного проведения атаки требуется отправка очень большого объёма пробных сообщений для расшифровки. Отличие метода Marvin сводится к усовершенствованию техники разделения корректных и некорректных добавочных данных, фильтрации ложных срабатываний, более точному определению задержек при вычислениях и задействованию дополнительных сторонних каналов при измерении.

Применение атаки против TLS-серверов, использующих шифрование на основе ключей RSA, даёт возможность атакующему пассивно сохранить перехваченный трафик и позднее расшифровать его. Для серверов, поддерживающих PFS (Perfect forward secrecy), проведение атаки значительно усложняется и успех зависит от того, как быстро будет проведена атака. Кроме того, метод позволяет сформировать фиктивную цифровую подпись, заверяющую содержимое сообщений ServerKeyExchange в TLS 1.2 или CertificateVerify в TLS 1.3, передаваемых на этапе обмена ключами, что может применяться для совершения MITM-атак по перехвату TLS-соединения между клиентом и сервером.

Проведение MITM-атак существенно усложняется из-за того, что цифровые подписи охватывают не только передаваемые данные, но и случайное значение, выбранное клиентом, а также из-за необходимости подделки подписи за относительно небольшое время, до того как клиент закроет соединение после истечения таймаута (для оптимизации подбора предлагается параллельно отправлять большое число проверочных запросов).

Проблема затрагивает различные реализации протоколов в которых применяется RSA и PKCS #1 v1.5, такие как TLS, XML Encryption, интерфейсы PKCS#11, JWT (JSON Web Token), JOSE (Javascript Object Signing and Encryption) и S/MIME. Несмотря на то, что в современных криптографических библиотеках присутствует та или иная защита от атак на базе метода Блейхенбахера, в ходе проведённого исследования было выявлено, что в библиотеках остаются незакрытые каналы утечки и не обеспечено постоянное время обработки пакетов с корректным и ошибочным добавочным заполнением. Например, реализация атаки Marvin на GnuTLS не привязывается к коду, непосредственно выполняющего вычисления, связанные с RSA, а использует разное время выполнения кода, который принимает решение о выводе того или иного сообщения об ошибке.

Возможность совершения атаки Marvin выявлена в реализациях TLS, предлагаемых в библиотеках:

• OpenSSL (CVE-2022-4304). Уязвимость вызвана утечкой информации в коде дешифровки RSA. Проблема устранена в февральских обновлениях OpenSSL (3.0.8 и 1.1.1t).

• GnuTLS (CVE-2023-0361). Уязвимость вызвана различием времени ответа при обработке шифротекста RSA в сообщении ClientKeyExchange с корректным и некорректным добавочным заполнением PKCS#1 v1.5. Проблема устранена в февральском выпуске GnuTLS 3.8.0.

• Mozilla NSS (CVE-2023-4421). Выявлены проблемы, связанные с непостоянным временем выполнения некоторых операций RSA в зависимости от обрабатываемых данных. Частично уязвимость устранена в выпуске 3.61. Дополнительные исправления ожидаются в выпуске NSS 3.94, который намечен на следующую неделю.

• pyca/cryptography (CVE-2020-25659). Изменения, блокирующие уязвимость, внесены в 2020 году, но их оказалось недостаточно без добавленных в 2021 году исправлений в OpenSSL.

• M2Crypto (CVE-2020-25657). Защита была добавлена год назад, но она эффективна только вместе с изменениями в API OpenSSL.

• OpenSSL-ibmca. Исправления, решающие проблемы с непостоянным временем обработки добавочного заполнения RSA PKCS#1 v1.5 и OAEP, добавлены в мартовский выпуск 2.4.0.

Кроме того, в библиотеке GNU MP (функция mpz_powm_sec) и Go-модуле crypto/rsa (функция DecryptPKCS1v15SessionKey) выявлены уязвимые вызовы API, приводящие к утечкам, которые можно использовать для совершения атак, анализирующих зависимость скорости выполнения операций от обрабатываемых данных (timing attacks). Из протестированных проектов, которые не подвержены атаке, отмечена библиотека BoringSSL.

Так как атака основана на фундаментальной уязвимости в операциях расшифровки на базе RSA с добавочным заполнением, соответствующим стандарту PKCS#1 v1.5, и за 25 лет существования проблемы в библиотеках так и не обеспечили постоянное время обработки пакетов с корректным и ошибочным добавочным заполнением, в качестве оптимального решения предлагается прекратить использование RSA на TLS-серверах в пользу шифров на основе ECDH (Elliptic Curve Diffie Hellman).

Автор исследования также полагает, что рассмотренный класс уязвимостей не ограничивается RSA и может затрагивать многие другие криптографические алгоритмы, зависящие от типовых библиотек для целочисленных вычислений, например, использующих BIGNUM из OpenSSL, MPI из из NSS, Java BigInteger, Python int, Rust apint, GnuMP mpz_t, Go math/big Int и т.п. В качестве примера потенциальной применимости метода приводится атака Minerva на реализации алгоритма создания цифровой подписи ECDSA/EdDSA.

Для подтверждения возможности совершения атаки Marvin на практике исследователь продемонстрировал применимость метода к приложениям на базе библиотек M2Crypto и pyca/cryptography, для компрометации шифрования в которых оказалось достаточно нескольких часов при проведении эксперимента на среднем ноутбуке. Например, в экспериментах с библиотекой M2Crypto на ноутбуке Lenovo T480 с CPU Intel i7-8650U атака по дешифровке шифротекста при использовании 1024-разрядных ключей RSA заняла 9 часов и потребовала отправки 163 тысячи проверочных запросов.

Организация практических атак на TLS-серверы по сети требует более сложных манипуляций, сильно зависящих от размеров ключей, модели CPU на системе жертвы, особенностей конфигурации оборудования, операционной системы, применяемой реализации RSA и расстояния между сервером к атакующим (для учёта сетевых задержек). В наиболее оптимальном варианте проведение целевой сетевой атаки на систему жертвы, подключённую через один сетевой коммутатор с атакующим, потребует нескольких дней при использовании на стороне жертвы OpenSSL и нескольких часов, при использовании NSS.
 
Top