Хакер #305. Многошаговые SQL-инъекции
Исследователь обнаружил, что несколько месяцев Mozilla Thunderbird сохранял ключи OpenPGP некоторых пользователей в формате простого текста. Так, недавно пользователи Thunderbird осознали, что при открытии программы они могут просматривать электронные письма, зашифрованные OpenPGP, без ввода своих мастер-паролей. Такие сообщения в Thunderbird должны быть доступны для просмотра только после аутентификации.
Уязвимость получила идентификатор CVE-2021-29956 и низкий уровень серьезности. Баг затрагивал почтовый клиент всех версий между 78.8.1 и 78.10.1. Он позволял локальному злоумышленнику видеть импортированные ключи OpenPGP, сохраненные на устройствах пользователей, без шифрования. Таким образом, атакующий мог просмотреть и скопировать чужие ключи, а затем выдать себя за отправителя защищенных электронных писем.
Сопровождающий Thunderbird Кай Энгерт (Kai Engert) признает, что это была его личная ошибка, возникшая из-за недостатка тестирования. Дело в том, что несколько месяцев назад процессы обработки ключей были переписаны с целью улучшения их безопасности. Ранее процесс обработки недавно импортированных ключей OpenPGP в Thunderbird выглядел так:
- импорт секретного ключа во временную область памяти;
- разблокировка ключа, с использованием введенного пользователем пароля;
- копирование ключа в постоянное хранилище;
- защита ключа с помощью автоматического пароля OpenPGP в Thunderbird;
- сохранение нового списка секретных ключей на диске.
Но, по словам Энгерта, после внесения изменений в код, получилось следующее (шаги 3 и 4 поменялись местами):
- импорт секретного ключа во временную область памяти;
- разблокировка ключа, с использованием введенного пользователем пароля;
- защита ключа с помощью автоматического пароля OpenPGP в Thunderbird;
- копирование ключа в постоянное хранилище;
- сохранение нового списка секретных ключей на диске.
«Автор кода (то есть я) и рецензент предположили, что это будет равнозначно [прошлому варианту], — говорит Энгерт. — Но наше предположение, что защита секретного ключа в шаге 3 будет сохранена при копировании его в другую область… оказалось ложным».
Фактически, когда ключ копировался в постоянное хранилище, защита не копировалась вместе с ним из-за бага в библиотеке RNP, которая используется в Thunderbird и браузере Mozilla Firefox для защиты ключей OpenPGP.
В Thunderbird версии 78.10.2 баг был исправлен, и теперь почтовый клиент будет проверять наличие незащищенных ключей в secring.gpg. Если такие ключи будут найдены, они будут преобразованы в защищенные.