Уязвимость в функции «мастер-пароль» в течение 9 лет ставит под угрозу пользователей Mozilla
Уязвимость в функции «мастер-пароль» в течение 9 лет ставит под угрозу пользователей Mozilla
Производитель знал о проблеме с момента появления функции «мастер-пароль», но до сих пор не исправил ее.
На протяжении последних девяти лет Mozilla использовала в своей функции «мастер-пароль» недостаточно надежное шифрование.
В Firefox и Thunderbird предусмотрена функция, позволяющая пользователям устанавливать мастер-пароль, играющий роль криптографического ключа для шифрования каждого пароля, сохраненного в браузере или почтовом клиенте. Данная функция получила хорошие отзывы ИБ-экспертов, поскольку без нее браузеры сохраняют пароли локально в незашифрованном виде, оставляя их уязвимыми для вредоносного ПО или хакеров с физическим доступом к компьютерам жертв. Однако по словам создателя AdBlock Plus Владимира Паланта (Wladimir Palant), используемый функцией механизм шифрования ненадежен и может быть легко взломан с помощью брутфорса.
В ходе анализа исходного кода Палант обнаружил функцию sftkdb_passwordToKey(), преобразовывающую пароли в ключи шифрования, применяя хеширование SHA-1 к строке, состоящей из самого мастер-пароля и произвольных символов (соли). По словам исследователя, здесь и кроется проблема.
Счетчик цикла функции SHA-1 равен единице. Это значит, что она применяется только один раз, тогда как рекомендованным значением является 10000 (к примеру, в LastPass счетчик цикла равен 100000). Столь низкое значение существенно облегчает работу хакерам, которые могут осуществить брутфорс-атаку, расшифровать мастер-пароль, а затем и все зашифрованные с его помощью пароли.
Палант – не первый исследователь, обнаруживший данную проблему. Еще девять лет назад о ней сообщил Джастин Долске (Justin Dolske) сразу же после появления функции «мастер-пароль». Тем не менее, Mozilla не исправляла уязвимость до тех пор, пока недавно о ней снова не напомнил Палант. Как сообщили в компании, проблема будет исправлена с выходом нового компонента для функции «мастер-пароль» под кодовым названием Lockbox.
Счетчик цикла – термин, часто использующийся для обозначения переменной, контролирующей повторы выполнения циклов (конструкции языков программирования). Свое название термин получил благодаря тому, что в большинстве случаев использования этой конструкции ее результат записывается в некоторую переменную, принимающую в качестве значения набор целых чисел в определенной последовательности (например, начиная с 0 и заканчивая 10 с шагом приращения 1). Счетчики циклов изменяют свое значение при каждом прохождении цикла, подставляя уникальное значение для каждой отдельной итерации.