BigSig, уязвимость в Mozilla NSS, которая делает возможным выполнение кода.

Новости о выявление критической уязвимости (уже указан в CVE-2021-43527) en набор криптографических библиотек NSS (Услуги сетевой безопасности) из Mozilla, что может привести к выполнению вредоносного кода при обработке цифровых подписей DSA или RSA-PSS, указанных с помощью DER (Distinguished Encoding Rules).

Проблема проявляется в приложениях, использующих NSS для обработки цифровых подписей CMS, S / MIME, PKCS № 7 и PKCS № 12, или при проверке сертификатов в развертываниях TLS, X.509, OCSP и CRL. Уязвимость может возникнуть в различных клиентских и серверных приложениях с поддержкой TLS, DTLS и S / MIME, в почтовых клиентах и ​​программах просмотра PDF, которые используют вызов NSS CERT_VerifyCertificate () для проверки цифровых подписей.

LibreOffice, Evolution и Evince упоминаются как примеры уязвимых приложений.. Потенциально проблема также может затронуть такие проекты, как Pidgin, Apache OpenOffice, Suricata, Curl и другие.

Al mismo tiempo, уязвимость не проявляется в Firefox, Thunderbird и Tor Browser, которые используют для проверки отдельную библиотеку mozilla :: pkix, которая также является частью NSS. В Браузеры на базе Chrome (если они не были специально скомпилированы с NSS), которые использовали NSS до 2015 года, но затем были перенесены в BoringSSL, они не затронуты проблемой.

Уязвимость возникает из-за ошибки в коде проверки сертификата в vfy_CreateContext. функция файла secvfy.c. Ошибка проявляется как при чтении клиентом сертификата с сервера как когда сервер обрабатывает сертификаты клиента.

При проверке цифровой подписи в формате DER NSS декодирует подпись в буфер фиксированного размера и передает этот буфер в модуль PKCS # 11. Во время постобработки для подписей DSA и RSA-PSS размер проверяется неправильно, в результате в котором приводит к переполнению выделенного буфера для структуры VFYContextStr, если размер цифровой подписи превышает 16384 бита (для буфера выделяется 2048 байтов, но не проверено, что подпись может быть больше).

Код, содержащий уязвимость, восходит к 2003 году., но это не представляло угрозы до рефакторинга в 2012 году. В 2017 году такая же ошибка была сделана при реализации поддержки RSA-PSS. Для проведения атаки не требуется ресурсоемкая генерация определенных ключей для получения необходимых данных, поскольку переполнение происходит на этапе, предшествующем проверке действительности цифровой подписи. Часть данных, выходящая за границы, записывается в область памяти, которая содержит указатели на функции, что упрощает создание рабочих эксплойтов.

Уязвимость обнаружили исследователи Google Project Zero. во время экспериментов с новыми методами тестирования фаззинга и является хорошей демонстрацией того, как тривиальные уязвимости могут долгое время оставаться незамеченными в хорошо протестированном известном проекте.

Что касается основные проблемы, для которых проблема осталась незамеченной надолго:

  • Библиотека накопителей NSS и тесты фаззинга проводились не полностью, а на уровне отдельных компонентов.
  • Например, код для декодирования сертификатов DER и обработки сертификатов проверялся отдельно; В ходе фаззинга вполне мог быть получен сертификат, что привело к проявлению рассматриваемой уязвимости, но его проверка не дошла до проверочного кода и проблема не была выявлена.
  • Во время фаззинга были установлены строгие ограничения на размер вывода (10,000 10,000 байт) при отсутствии таких ограничений в NSS (многие структуры в нормальном режиме могут иметь размер более 2 24 байт, поэтому для выявления проблем требуется больше входных данных. ). Для полной проверки предел должен составлять 1 16 -XNUMX байта (XNUMX МБ), что соответствует максимальному размеру сертификата, разрешенному в TLS.
  • Заблуждение о покрытии кода фаззинг-тестами. Уязвимый код активно тестировался, но с использованием фазеров, которые не могли сгенерировать необходимые входные данные. Например, fuzzer tls_server_target использовал предопределенный набор готовых сертификатов, который ограничивал проверку кода проверки сертификата только сообщениями TLS и изменениями состояния протокола.

Наконец, Стоит отметить, что проблема с кодовым именем BigSig была исправлена ​​в NSS 3.73 и NSS ESR 3.68.1. а обновления решения в виде пакетов уже были выпущены в различных дистрибутивах: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD и т. д.

Если вы хотите узнать об этом больше, вы можете проконсультироваться по следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

bool (истина)