5 февраля компания Zcash опубликовала подробности устраненной уязвимости, с помощью которой злоумышленники могли бы чеканить неограниченное количество фальшивых монет Zec. Вся эта покрытая тайной история развивалась с марта 2018 года и только сейчас Zcash решил открыть все детали выявленной проблемы.
Как работает уязвимость
Zcash – анонимная монета, в которой детали отдельных транзакций могут видеть только ее участники. Система под названием Sprout отвечает за «экранирование» этих транзакций, и, со слов программиста — разработчика Zcash Ариэля Габизона,
«злоумышленник мог бы создать фальшивые экранированные записи Sprout, содержащие… контрафактные средства без возможности обнаружения».
Оказывается, Габизон нашел ошибку еще в марте 2018 года и сообщил о ней Шону Боу, криптографу Zcash. После того, как Шон подтвердил существование уязвимости, были проинформированы Zooko Wilcox (генеральный директор компании Zcash) и Натан Уилкокс (технический директор компании Zcash).
Выявление ошибки, ее изучение и устранение хранились в секрете, чтобы никто из злоумышленников не смог воспользоваться этой уязвимостью, как написано в блоге Zcash
«Благодаря тщательной координации, вероятность фальшивой чеканки была уменьшена в сети Zcash без какого-либо известного дальнейшего раскрытия за пределами этой группы из четырех человек.»
Между тем, исправление бага разработчики провели с выпуском обновления Sapling еще в октябре 2018 года без публичного объявления проблемы сообществу.
Как заявлено в блоге, ошибка была очень сложной для использования, ее способны идентифицировать только небольшое количество технически подготовленных специалистов. Даже эксперты и аудиторы не смогли обнаружить уязвимость, несмотря на то, что она существовала в течение нескольких лет.
Кроме того, для использования уязвимости злоумышленникам потребовался бы доступ к информации в большой расшифровке протокола MPC, которую криптографы удалили из открытого доступа сразу же после обнаружения уязвимости.
Фальшивые монеты не обнаружены
Если бы ошибку нашли злоумышленники, ущерб для капитализации монеты и сети был бы катастрофическим, в Zcash это прекрасно поняли и постоянно мониторили сеть в поисках признаков подделки. Контролируя общее количество монет в экранированном пуле Sprout и просматривая определенные следы на блокчейне, компания Zcash в состоянии определить, имела ли место атака.
До сих пор криптографы Zcash не нашли никаких доказательств какой-либо фальшивой «чеканки» монет. Чтобы обеспечить безопасность двух проектов (форков Zcash) — Horizen и Komodo, они уведомили их о проблеме. В Zcash заявляют и считают маловероятным, чтобы фальшивая «чеканка» имела место в сети монеты или ее вилках.
«Zcash не был подвержен этой атаке с момента активации Sapling», — написано в блоге.
Уязвимость неограниченной чеканки монет (подделка) не является характерной только для Zcash. В 2017 году программисты Monero нашли похожую ошибку в алгоритме Cryptonote, с помощью которой была атакована сеть Bytecoin. В 2018 году в протоколе биткоина была выявлена ошибка инфляции, которая позволила хакерам провести атаку 51% на Pigeoncoin.