Уязвимости биткойна

Получайте компенсацию до 100% от спреда/комиссии, взимаемых Вашим брокером, торгуя через Международное объединение Форекс трейдеров (МОФТ).

Биткойн – это постоянно развивающаяся система и код её основного программного клиента Bitcoin Core неоднократно менялся и совершенствовался. Летом 2010 года был выпущен Bitcoin Core 0.3. Несмотря на то, что работу над программным кодом биткойна ведут независимые профессиональные программисты, а окончательное решение по внесению изменений в код принимается после их всестороннего обсуждения, тем не менее существует потенциальная опасность возникновения непреднамеренных ошибок и уязвимостей. Этот риск очень мал, но он есть. И его надо принимать во внимание. В истории биткойна известна одна такая ошибка в программном коде, которая могла иметь серьезные последствия.

6 августа 2010 года была обнаружена серьезная уязвимость в протоколе: транзакции, как выяснилось, не проходили необходимую проверку перед их добавлением в блокчейн. Это позволяло обойти экономические ограничения протокола и создавать неограниченное количество биткойнов. Сознательно кем-то была использована эта только что открытая уязвимость, или все произошло случайно – но 15 августа 2010 года в сети биткойн прошла одна так называемая «грязная» транзакция. В блоке номер 74638 в одной из транзакций было сгенерировано более 184 миллиардов биткойнов, которые были отправлены по двум разным адресам. Если точнее, то в этой транзакции было передано 184 467 440 737,09551616 биткойна. На два адреса в рамках этой транзакции было отправлено по 92,2 миллиардов биткойнов, и еще на один адрес было дополнительно отправлено 0,01 биткойна. Как известно, общее количество монет в сети биткойн не может превышать 21 миллион. Этих миллиардов новых биткойнов не существовало до проведения транзакции. Их возникновение стало возможным, потому что программный код, который использовался для проверки транзакций, прежде чем включать их в блок, не учитывал возможность появления таких больших цифр и регистры компьютера просто переполнялись при суммировании.

Спустя час возникшая ошибка была обнаружена. Еще через несколько часов программный код блокчейна был изменен и в результате сделанного преднамеренного форка биткойна «чистый» блок номер 74691 стал заменой «грязного» блока, выявленного в цепочке блокчейна биткойна. Это была единственная за всю историю биткойна найденная существенная уязвимость, которая к тому же была реально использована. Хотя и без последствий для самой сети биткойна и для пользователей.

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

Именно эту ошибку пытался указать в качестве основной причины потери денег клиентов на бирже MI. Gox ее владелец Марк Карпелес. Однако сообщество ему не поверило в первую очередь потому, что данная уязвимость была исправлена буквально за несколько часов с момента ее появления. И иметь отношение к регулярным пропажам денег клиентов Mt. Gox она никак не могла.

Еще в 2011 году американский эксперт в области систем компьютерной безопасности Дэн Камински пытался в исследовательских целях взломать биткойн. Однако он не смог найти слабые места или уязвимости в системе. По мнению Дэна, устойчивость к взлому системы биткойна обусловлена тем, что при разработке создателями биткойна изначально предусматривалась вероятность разнообразных атак на сеть. Основоположники первой и самой известной в мире криптовалюты были специалистами в различных областях. В том числе во взломе и в безопасности. Не зря Камински, формулируя свое заключение об уязвимостях программного кода биткойна, писал:

«в коде есть признаки, что аудит проводили люди вроде нас».

Еще одно событие, которое связано скорее с ошибками в программном коде, чем с реальной уязвимостью, произошло 11 марта 2013 года. После выхода очередной версии 0.8 программы-клиента выяснилась несовместимость формата блоков с предыдущими версиями программы. Программный модуль версии 0.7 отвергал блоки нового формата, используемые в версии 0.8. Это привело к разделению цепочки блоков на две параллельные, каждую из которых продолжала наращивать своя версия программы. Произошёл фактический раскол биткойна на две параллельные платёжные системы. Было принято решение срочно отказаться от версии 0.8. Примерно через семь часов после начала инцидента версия цепочки 0.7 стала стабильно превышать цепочку 0.8, которая, в соответствии с протоколом, была отвергнута и ее использование прекратилось.

Содержание Далее

Перейти на Главную страницу сайта