Старая уязвимость в функции JavaScript позволяет получить доступ к криптокошелькам

image

Теги: биткойн-кошелек, уязвимость, шифрование

Известная с 2013 года уязвимость в криптографической функции SecureRandom() по-прежнему ставит под угрозу пользователей криптовалют.

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

Уязвимость затрагивает функцию JavaScript SecureRandom(), которая используется для генерирования произвольных биткойн-адресов и соответствующих закрытых ключей, играющих роль паролей. Как отметили анонимный исследователь безопасности и его британский коллега Дэвид Джерард (David Gerard), проблема заключается в том, что функция на самом деле не генерирует произвольные данные.

«Я сгенерирую ключи шифрования, имеющие, несмотря на свою длину, менее 48 битов энтропии, [...] так что на выходе энтропия будет не более 48 битов, даже если энтропия входных данных была больше. Затем SecureRandom() пропустит полученное число через устаревший алгоритм RC4, который, как известно, предугадать намного легче, чем следовало бы, то есть, с меньшей энтропией. В итоге ваш ключ будет намного легче вычислить», - сообщил Джерард.

Из всего вышесказанного следует, что сгенерированные с использованием SecureRandom() биткойн-адреса уязвимы к брутфорс-атакам, позволяющим злоумышленникам вычислить чужие учетные данные. Как обнаружил исследователь, в некоторых онлайн- или клиентских приложениях реализована функция SecureRandom(), однако уязвимость в них была исправлена в 2013-2015 годах. Адреса, сгенерированные с использованием приложений BitAddress до 2013 года и Bitcoinjs до 2014 года, по-прежнему уязвимы.

По словам профессора Университетского колледжа Лондона Мустафы аль-Бассама (Mustafa Al-Bassam), во многих старых биткойн-кошельках (как web, так и клиентских) для генерирования биткойн-адресов используется криптографическая библиотека jsbn.js. Версия jsbn.js до 2013 года содержит функцию SecureRandom(), поэтому приложения, до сих пор использующие эту библиотеку, по-прежнему генерируют легко взламываемые закрытые ключи. Как сообщил Джерард, на взлом такого ключа потребуется неделя.

Telegram Подписывайтесь на канал "SecurityLab" в Telegram, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.

comments powered by Disqus