Спецпроекты

В криптобиблиотеке для Linux и macOS нашлась предельно простая для использования брешь

ПО Безопасность

Разновидность ошибки переполнения буфера в библиотеке Libgcrypt ставит под угрозу Fedora, Gentoo и macOS. Разработчики скандалят с критиками.

Без проверки длины буфера

Знаменитый эксперт Google Project Zero Тэвис Орманди (Tavis Ormandy) выявил серьезную ошибку в свежей версии библиотеки шифрования Libgcrypt. Уязвимость класса «переполнение буфера» сама по себе довольно тривиальна, но простота ее эксплуатации превращает ее в серьезную угрозу. «Сама расшифровка данных может приводить к переполнению буфера в динамически выделяемой области памяти данными от потенциального злоумышленника; никаких проверок и никакой авторизации не производится», — отметил Орманди.

Libgcrypt — популярная библиотека криптографических примитивов, разработанная специально для GNU Privacy Guard (GPG), свободной реализации стандарта OpenPGP (RFC4880). Ее код присутствует в дистрибутивах Linux Fedora и Gentoo, а также в менеджере пакетов macOS.

Последняя, уязвимая версия Libgcrypt 1.9.0 вышла 19 января 2021 г., поэтому широкого распространения еще не получила. Ее уже успели встроить в предрелизную версию Fedora 34, но, по-видимому, к тому моменту как состоится окончательный релиз, уязвимая версия будет заменена на более новую. Версия 1.9.0 также попала в Gentoo, но теперь разработчики поспешно ее оттуда удаляют.

В криптографической библиотеке для Linux и macOS выявлена критическая ошибка

Попытка выпустить патч сразу не задалась: версия 1.9.1 на процессорах Intel приводит к сбоям при компиляции.

Арифметические ошибки случаются

Специалист по криптографии, работающий в Google в команде разработчиков языка программирования Go, Филиппо Вальсорда (Filippo Valsorda) утверждает, что проблема вызвана отсутствием средств защиты памяти в коде Libgcrypt (написанном на С).

«Арифметические ошибки случаются. В C они моментально становятся уязвимостями», — написал Вальсорда. По его мнению, ошибка была вызвана попыткой исправить другую проблему — возможность атак по побочному каналу. Но это привело к нежелательным последствиям.

«В результате получилась критическая ошибка, тривиальная и в плане того, как такие ошибки возникают, и в том, насколько легко ее эксплуатировать, — говорит Анастасия Мельникова, эксперт по информационной безопасности компании SEC Consult Services. — Речь идет о переполнении буфера в области динамически выделяемой памяти, возникшей из-за некорректной проверки длины буфера, и, по-видимому, неиспользованием средств проверки кода на подобные баги. Подобные ошибки могут приводить к запуску произвольного кода, так что, безусловно, эту оплошность разработчикам стоит исправить как можно скорее. И без создания дополнительных проблем».

Но это не все

В процессе обсуждения GPG возник еще один скандал: эксперт по безопасности и журналист Ханно Бёк (Hanno Böck) раскритиковал разработчиков GnuPGP не только за неиспользование таких инструментов как Address Sanitizer (asan), которые могли бы помочь обнаружить баг, а также обратил внимание на использование небезопасных ссылок git://, которые можно применять для MITM-атак.

На это руководитель разработки GnuPGP Вернер Кох (Werner Koch) в грубой форме предложил Бёку заниматься своими делами, что лишь подлило масла в огонь критики в Twitter.