Iron Fish: баг, написанный в 2019 году. Почему из-за него пришлось полностью остановить работу всей сети?
Официальный аккаунт Iron Fish в X опубликовал длинный пост ранним утром 31 октября по пекинскому времени: в этот день проект официально прекратил всю оставшуюся поддержку сети Iron Fish. Причина изложена откровенно. Я разбил её на несколько пунктов:
1. Причина: несколько дней назад команда обнаружила подозрительную активность с wIRON и межсетевым мостом ChainPort. Изучив логи вместе с ChainPort, команда подтвердила, что проблема кроется в уязвимости самой сети Iron Fish, позволявшей создавать дополнительные монеты (inflation).
2. Источник: код восходит к одному из изменений в реализации дерева Меркла в начале 2019 года. Из-за особенностей вычисления nullifier для note (метки аннулирования, необходимой обычным пользователям для траты средств) злоумышленник мог тратить одну и ту же note несколько раз.
3. Вывод средств: злоумышленник многократно использовал уязвимость, объединял имевшиеся у него note, а затем вывел средства через межсетевой мост ChainPort.
4. Завершение: патч уже отправлен, к PR приложен подробный постмортем, после чего репозиторий с кодом закрыли и архивировали.
Несколько слов начистоту:
· Самое болезненное признание: этот код входил в область внутренних и внешних аудитов, но проверяющие ничего не обнаружили. «Прошёл аудит» никогда не означает «уязвимостей нет».
· Официальный пост не сообщает размер потерь. Не спешите верить цифрам из интернета — я тоже не стану их подсчитывать.
· Баг, позволявший «потратить одни и те же деньги несколько раз», оставался незамеченным годами. В блокчейне с приватностью в основе дизайна постороннему ещё сложнее заметить такое с первого взгляда. Но это не значит, что «приватные блокчейны небезопасны» — не додумывайте.
· Вывод Iron Fish (это мнение команды проекта): программное обеспечение, которое нельзя обновить немедленно, — то есть большая часть криптографического ПО, — находится в крайне опасном положении; поиск и эксплуатация уязвимостей становятся всё дешевле, а те, кто устраняет уязвимости, могут не успеть за злоумышленниками.
Проект, которым вы владеете, способен быстро выпустить патч после инцидента? Или, как в этом случае, день выхода патча станет днём закрытия проекта?
#IronFish #隐私链 #АудитБезопасности
Официальный аккаунт Iron Fish в X опубликовал длинный пост ранним утром 31 октября по пекинскому времени: в этот день проект официально прекратил всю оставшуюся поддержку сети Iron Fish. Причина изложена откровенно. Я разбил её на несколько пунктов:
1. Причина: несколько дней назад команда обнаружила подозрительную активность с wIRON и межсетевым мостом ChainPort. Изучив логи вместе с ChainPort, команда подтвердила, что проблема кроется в уязвимости самой сети Iron Fish, позволявшей создавать дополнительные монеты (inflation).
2. Источник: код восходит к одному из изменений в реализации дерева Меркла в начале 2019 года. Из-за особенностей вычисления nullifier для note (метки аннулирования, необходимой обычным пользователям для траты средств) злоумышленник мог тратить одну и ту же note несколько раз.
3. Вывод средств: злоумышленник многократно использовал уязвимость, объединял имевшиеся у него note, а затем вывел средства через межсетевой мост ChainPort.
4. Завершение: патч уже отправлен, к PR приложен подробный постмортем, после чего репозиторий с кодом закрыли и архивировали.
Несколько слов начистоту:
· Самое болезненное признание: этот код входил в область внутренних и внешних аудитов, но проверяющие ничего не обнаружили. «Прошёл аудит» никогда не означает «уязвимостей нет».
· Официальный пост не сообщает размер потерь. Не спешите верить цифрам из интернета — я тоже не стану их подсчитывать.
· Баг, позволявший «потратить одни и те же деньги несколько раз», оставался незамеченным годами. В блокчейне с приватностью в основе дизайна постороннему ещё сложнее заметить такое с первого взгляда. Но это не значит, что «приватные блокчейны небезопасны» — не додумывайте.
· Вывод Iron Fish (это мнение команды проекта): программное обеспечение, которое нельзя обновить немедленно, — то есть большая часть криптографического ПО, — находится в крайне опасном положении; поиск и эксплуатация уязвимостей становятся всё дешевле, а те, кто устраняет уязвимости, могут не успеть за злоумышленниками.
Проект, которым вы владеете, способен быстро выпустить патч после инцидента? Или, как в этом случае, день выхода патча станет днём закрытия проекта?
#IronFish #隐私链 #АудитБезопасности
