Продукты «Хакера»

  • Ежеквартальный «Хакер» #3

    Ежеквартальный «Хакер» #3

    Лучшие статьи квартала на бумаге

    2 000 ₽

    Заказать журнал
  • Годовая подписка на Xakep.ru

    Годовая подписка на Xakep.ru

    Полный доступ к статьям и архиву выпусков

    6 000 ₽ в год

    Подписаться
  • «Пентест WEB» для начинающих

    «Пентест WEB» для начинающих

    Совместный курс «Хакера» и лаборатории «Хаксет»

    7 000 ₽

    Купить курс
  • Спецвыпуск «Хакера» #4

    Спецвыпуск «Хакера» #4

    Лучшие статьи за 2021–2022 годы на бумаге

    2 000 ₽

    Заказать журнал

Обнаружена серьезная уязвимость в приложении Zilliqa для аппаратных кошельков Ledger, которая затрагивает создание подписей Шнорра для нативных (не-EVM) транзакций Zilliqa. Из-за ошибки при генерации случайных чисел злоумышленники могут восстановить приватный ключ владельца, используя только общедоступные данные блокчейна. Разработчики уже приостановили нативные транзакции в качестве защитной меры и готовят скоординированный план спасения средств пользователей.

Уязвимость затрагивает только нативные (не-EVM) транзакции Zilliqa, подписанные через приложение Ledger. Если с аккаунта отправили пять или более таких транзакций, приватный ключ этого аккаунта следует считать скомпрометированным: его можно восстановить из уже опубликованных в блокчейне подписей, и никакое обновление ПО этого не исправит. Проблема не затрагивает EVM-транзакции и официальные SDK: zilliqa-js, gozilliqa-sdk и pyzil.

Нативные транзакции Zilliqa используют схему подписи EC-Schnorr на кривой secp256k1. Для каждой подписи требуется случайное 256-битное «одноразовое число» (nonce, k), и его непредсказуемость критически важна: любое систематическое смещение позволяет вычислить приватный ключ.

Как выяснилось, код приложения сначала корректно генерировал 40 байт случайных данных и приводил их по модулю порядка кривой, получая равномерное 256-битное значение. Но при копировании результата в буфер nonce использовались не те 32 байта. Вместо содержательной части сохранялись восемь нулевых байт, оставшихся от выравнивания, а восемь байт настоящей энтропии терялись. В итоге старшие 64 бита каждого сгенерированного nonce всегда были нулевыми, то есть значение k оказывалось меньше 2192.

Если есть пять или более подписей с подобным дефектом, частичная предсказуемость числа позволяет за секунды восстановить ключ на обычном оборудовании, решив так называемую задачу о скрытом числе (Hidden Number Problem) методом редукции решеток. Это хорошо известная техника атаки на подписи со смещенным nonce.

При этом уязвимость оставалась непропатченной с момента запуска проекта в 2019 году — целых семь лет! Баг обнаружили только после атаки на одного из партнеров компании 19 июля 2026 года. Фикс все еще готовится, и в компании обещают объявить о нем отдельно.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии