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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.