Уязвимость в GnuPG

Опубликован выпуск инструментария GnuPG 2.2.8 (GNU Privacy Guard), совместимого со стандартами OpenPGP (RFC-4880) и S/MIME, и предоставляющего утилиты для шифрования данных, работы с электронными подписями, управления ключами и доступа к публичным хранилищам ключей. В новой версии устранена уязвимость (CVE-2018-12020), позволяющая исказить сообщение о результатах проверки цифровой подписи при использовании утилиты gpg. Уязвимость проявляется во всех версиях GnuPG и на всех платформах.

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

В случае вызова gpg из других программ сообщения со статусом проверки цифровой подписи создаются при помощи опции «—status-fd N», где N — файловый дескриптор. Если в опцию передан номер дескриптора 2 (по умолчанию), то сообщение будет выведено в стандартный поток stderr. Злоумышленник может воспользоваться данной особенностью и скомпоновать управляющие символы в имени файла для изменения выдаваемой gpg строки с результатами проверки цифровой подписи.

Проблема пока устранена только во FreeBSD, а в дистрибутивах Linux пока остаётся неисправленной (Debian, RHEL, Ubuntu, SUSE). Проблема не затрагивает приложения, которые для вызова функций GnuPG используют библиотеку GPGME, которая применяется в большинстве современных почтовых клиентов, включая GpgOL и KMail (пользователям Mutt следует проверить, что активен режим «set crypt_use_gpgme»). Проблема также не затрагивает приложения, которые вызывают gpg без опции «—verbose» (данный режим также должен быть отключен в файле конфигурации) или с указанием отдельно выделенного файлового дескриптора в опции «—status-fd» (по умолчанию для вывода лога используется stderr). В качестве обходного пути защиты рекомендуется явно указывать опцию «—no-verbose» при вызове gpg или перенаправить вывод лога в другой файл, например «—log-file /dev/null».

В выпуске GnuPG 2.2.8 также изменено поведение, касающееся применения режима аутентифицированного шифрования (MDC — Modification Detection Codes) с целью дополнительной защиты от подмены CFB-блоков при атаках на почтовые клиенты. Попытки расшифровки сообщения без использования MDC теперь будут приводить к выводу фатальной ошибки, даже при использовании устаревших шифров. Для переведения ошибки в разряд нефатальных предупреждений следует явно указать опцию «—ignore-mdc-error». При шифровании сообщений MDC теперь используется во всех случаях, независимо от настроек и алгоритмов (для отключения можно явно указать опцию «—rfc2440»). Опции «—no-mdc-warn», «—force-mdc», «—no-force-mdc»,
«—disable-mdc» и «—no-disable-mdс» отныне игнорируются.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.