Перевод Ваши Monero уничтожаются ради забавы, а вовсе не для извлечения прибыли

Тема в разделе "Статьи", создана пользователем Mr. Pickles, 11 мар 2021.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    891
    Симпатии:
    242
    TLDR: Отсутствие верификации времени разблокировки на аппаратных кошельках Monero, вероятно, позволяло взломанному хосту навсегда блокировать XMR пользователя после проведения транзакции. Как Trezor, так и Ledger решили эту проблему.

    В каждой транзакции Monero имеется поле под названием unlock_time. В нём указывается, в течение какого времени после создания транзакции выходы будут заблокированы, прежде чем их можно будет потратить снова. Выходы транзакции с полем unlock_time с нулевым значением могут быть потрачены сразу же или, по крайней мере, сразу после обычного времени блокировки, то есть, через 10 блоков. Если значение поля unlock_time будет на 100 блоков больше значения текущей высоты блока, получателю придётся подождать в течение 100 блоков, пока он, наконец, снова не сможет потратить соответствующие выходы.

    Максимальное допустимое количество блоков составляет 500 000 000 – 1, и на майнинг такого числа блоков, вероятно, уйдёт примерно 1900 лет. Если значение превысит этот предел, поле unlock_time будет интерпретировано в соответствии с временем Unix, выраженным в секундах. Поскольку это 64-битное поле, оно позволяет блокировать монеты на срок, составляющий более ста миллиардов лет.

    Аппаратные кошельки должны обеспечивать защиту пользователей от кражи средств, вымогательства и потери монет вследствие установки вредоносных программ на их компьютеры. От кошельков Monero, будь это Trezor Model T или Ledger Nano S/X, также ожидается именно это. Аппаратные кошельки должны проверять всю информацию, которая передается им хостом, гарантируя тем самым, что монеты пользователя находятся и впредь будут находиться в безопасности.

    Аппаратные кошельки Ledger и Trezor не проверяли поле unlock_time при подписании транзакции. Злоумышленник, установивший вредоносное ПО на хост-машину пользователя, мог навсегда заблокировать монеты пользователя, задав слишком высокое значение unlock_time. Поскольку суммы сдачи не проверяются устройствами, все средства пользователя могли быть заблокирован, даже если пользователь провёл самую незначительную транзакцию.

    Как Trezor, так и Ledger решили эту проблему. Trezor было достаточно внести корректировки в прошивку, поскольку пол unlock_time уже было разобрано как часть их логической схемы транзакций. И Trezor, и Ledger отображают необработанное число на экране, поэтому зависящие от высоты блока и времени значения unlock_times отображаются таким же образом.

    1.JPG

    Ledger не реализовал никакой логики unlock_time в своей прошивке, так что пришлось вносить исправления в прошивку, но и написать специальный патч для кошелька Monero.

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

    2.JPG

    Как Trezor так и Ledger опубликовали рекомендации по обеспечению безопасности в связи с этой проблемой, указали меня в качестве источника информации и выплатили щедрое вознаграждение за обнаружение ошибок.

    Написано 29 мая 2020 г.

    ---

    Источник: Destroying your moneroj for fun and not for profit

    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
  • О нас

    Наш сайт является одним из уникальных мест, где русскоязычное сообщество Monero может свободно общаться на темы, связанные с этой криптовалютой. Мы стараемся публиковать полезные мануалы и статьи (как собственные, так и переводы с английского) о криптовалюте Monero. Если вы хорошо владеете английским (или можете писать собственные статьи/мануалы) и хотите помочь в переводах и общем развитии Monero для русскоязычной аудитории - свяжитесь с одним из администраторов.