В этом году хакеры украли более $2.000.000.000 из криптовалюты. Проблема будет только усугубляться по мере роста экосистемы криптовалют и привлечения новых злоумышленников. Что-то должно измениться. Пришло время сделать шаг назад, задуматься о прошлых ошибках и изменить подход к обеспечению безопасности в этой отрасли.
В этой серии статей я:
Виды взломов
Экосистема криптоприложений состоит из взаимодействующих протоколов, управляемых смарт-контрактами, которые опираются на базовую инфраструктуру цепочки хостов и интернета.
Каждый слой этого стека имеет свои уникальные уязвимости. Мы можем классифицировать взломы криптовалют в зависимости от того, какой слой стека был использован и какой метод был применен.
Инфраструктура
Атаки на инфраструктурный уровень используют слабые места в базовых системах, поддерживающих криптоприложение: блокчейн, на который оно опирается, интернет-сервисы, используемые для фронтенда, и инструменты, используемые для управления закрытыми ключами.
Язык смарт-контрактов
Взломы на этом уровне используют слабые места в языках смарт-контрактов, таких как Solidity. Существуют общеизвестные уязвимости в языках смарт-контрактов, такие как реентерабельность и опасность плохой реализации delegatecall, которые можно устранить, следуя лучшим практикам.
Забавный факт: Reentrancy, уязвимость, использованная для взлома печально известного DAO за 60 миллионов долларов, была обнаружена в ходе аудита безопасности Ethereum компанией Least Authority. Забавно подумать о том, насколько все изменилось бы, если бы эта проблема была устранена до запуска.
Логика протокола
Атаки в этой категории используют ошибки в логике отдельного приложения. Если хакер находит ошибку, он может использовать ее для запуска поведения, которое не было задумано разработчиками приложения.
Например, если новая децентрализованная биржа имеет ошибку в математическом уравнении, определяющем, сколько пользователь получает от обмена, то эта ошибка может быть использована для получения большего количества денег от обмена, чем должно было быть.
Атаки на уровне логики протокола также могут использовать преимущества систем управления, созданных для контроля параметров приложения.
Экосистема
Многие из наиболее серьезных взломов криптовалют используют взаимодействие между несколькими приложениями. Наиболее распространенный вариант - когда хакеры используют логические ошибки в одном протоколе, используя средства, заимствованные из другого, для усиления масштаба атаки.
Обычно средства, используемые в экосистемной атаке, заимствуются с помощью флэш-кредитования. При флэш-кредитовании вы можете взять столько денег, сколько хотите, из пулов ликвидности таких протоколов, как Aave и dYdX, без предоставления залога, при условии, что средства будут возвращены в той же транзакции.
Анализ данных
В сети имеются данные о 100 крупнейших взломах криптовалют, начиная с 2020 года, общая сумма похищенных средств составила 5 млрд долларов.
Чаще всего происходили атаки на экосистемы. Они составляют 41% от группы выборки.
Эксплойты логики протокола привели к потере наибольшего количества денег.
Три крупнейших взлома в наборе данных - атака на мост Ronin (624 млн долларов), взлом Poly Network (611 млн долларов) и взлом моста Binance (570 млн долларов) - оказывают огромное влияние на результаты.
Если исключить три самые крупные атаки, то взломы инфраструктуры являются самой влиятельной категорией по объему потерянных средств.
Как осуществляются взломы?
Инфраструктурные атаки
В 61% случаев использования инфраструктуры в группе выборки закрытые ключи были скомпрометированы неизвестным способом. Хакеры могли получить доступ к этим закрытым ключам с помощью атак социальной инженерией, таких как фишинговые электронные письма и поддельные объявления о работе.
Атаки на язык смарт-контрактов
Атаки реентерабельности были самым популярным видом атак на уровне языка смарт-контрактов.
При атаке реентерабельности функция в уязвимом смарт-контракте вызывает функцию на вредоносном контакте. Или же функция во вредоносном контракте может быть запущена, когда уязвимый контракт отправляет токены вредоносному контракту. Затем эта вредоносная функция обращается к уязвимой функции в рекурсивном цикле до того, как контракт обновит свой баланс.
Например, во взломе Siren Protocol функция для вывода токенов залога была уязвима к реентерабельности и вызывалась многократно (каждый раз, когда вредоносный контракт получал токены), пока весь залог не был израсходован.
Атаки на логику протокола
Большинство эксплойтов на протокольном уровне уникальны для конкретного приложения, поскольку каждое приложение имеет уникальную логику (если только это не чистый форк).
Ошибки контроля доступа были наиболее часто повторяющейся проблемой в группе выборки. Например, во взломе Poly Network контракт "EthCrossChainManager" содержал функцию, которую мог вызвать любой желающий для выполнения межцепочечной транзакции.
Этот контракт владел контрактом "EthCrossChainData", поэтому, если установить "EthCrossChainData" в качестве цели кросс-цепной транзакции, можно было обойти проверку onlyOwner().
Оставалось только составить нужное сообщение, чтобы изменить публичный ключ, определенный как "хранитель" протокола, захватить контроль и слить средства. Обычные пользователи никогда не должны были иметь доступ к функциональности контракта "EthCrossChainData".
Примечание: Было много случаев, когда несколько протоколов были взломаны с помощью одной и той же техники, потому что команда форкнула кодовую базу, в которой была уязвимость.
Например, многие форки Compound, такие как CREAM, Hundred Finance и Voltage Finance, стали жертвами атак реентерабельности, потому что код Compound не проверяет эффект от взаимодействия, прежде чем разрешить его. Это прекрасно работало для Compound, поскольку они проверяли каждый новый токен, который они поддерживали, на наличие этой уязвимости, но команды, создающие форки, не проявляли такого усердия.
Экосистемные атаки
Флэш-кредиты использовались в 98% экосистемных атак.
Атаки с использованием флеш-кредитов обычно следуют следующей формуле: Используйте кредит для совершения массивных свопов, которые повышают цену токена на AMM, который кредитный протокол использует в качестве ценового фида. Затем, в той же транзакции, используйте этот раздутый токен в качестве залога, чтобы взять кредит намного выше его истинной стоимости.
В этой серии статей я:
- Представлю схему классификации криптовалютных взломов
- Опишу методы, использованные в самых прибыльных на сегодняшний день взломах
- Рассмотрю сильные и слабые стороны инструментов, которые в настоящее время используются для предотвращения взломов
- Обсудим будущее безопасности в криптовалютах
Виды взломов
Экосистема криптоприложений состоит из взаимодействующих протоколов, управляемых смарт-контрактами, которые опираются на базовую инфраструктуру цепочки хостов и интернета.
Каждый слой этого стека имеет свои уникальные уязвимости. Мы можем классифицировать взломы криптовалют в зависимости от того, какой слой стека был использован и какой метод был применен.
Инфраструктура
Атаки на инфраструктурный уровень используют слабые места в базовых системах, поддерживающих криптоприложение: блокчейн, на который оно опирается, интернет-сервисы, используемые для фронтенда, и инструменты, используемые для управления закрытыми ключами.
Язык смарт-контрактов
Взломы на этом уровне используют слабые места в языках смарт-контрактов, таких как Solidity. Существуют общеизвестные уязвимости в языках смарт-контрактов, такие как реентерабельность и опасность плохой реализации delegatecall, которые можно устранить, следуя лучшим практикам.
Забавный факт: Reentrancy, уязвимость, использованная для взлома печально известного DAO за 60 миллионов долларов, была обнаружена в ходе аудита безопасности Ethereum компанией Least Authority. Забавно подумать о том, насколько все изменилось бы, если бы эта проблема была устранена до запуска.
Логика протокола
Атаки в этой категории используют ошибки в логике отдельного приложения. Если хакер находит ошибку, он может использовать ее для запуска поведения, которое не было задумано разработчиками приложения.
Например, если новая децентрализованная биржа имеет ошибку в математическом уравнении, определяющем, сколько пользователь получает от обмена, то эта ошибка может быть использована для получения большего количества денег от обмена, чем должно было быть.
Атаки на уровне логики протокола также могут использовать преимущества систем управления, созданных для контроля параметров приложения.
Экосистема
Многие из наиболее серьезных взломов криптовалют используют взаимодействие между несколькими приложениями. Наиболее распространенный вариант - когда хакеры используют логические ошибки в одном протоколе, используя средства, заимствованные из другого, для усиления масштаба атаки.
Обычно средства, используемые в экосистемной атаке, заимствуются с помощью флэш-кредитования. При флэш-кредитовании вы можете взять столько денег, сколько хотите, из пулов ликвидности таких протоколов, как Aave и dYdX, без предоставления залога, при условии, что средства будут возвращены в той же транзакции.
Анализ данных
В сети имеются данные о 100 крупнейших взломах криптовалют, начиная с 2020 года, общая сумма похищенных средств составила 5 млрд долларов.
Чаще всего происходили атаки на экосистемы. Они составляют 41% от группы выборки.
Эксплойты логики протокола привели к потере наибольшего количества денег.
Три крупнейших взлома в наборе данных - атака на мост Ronin (624 млн долларов), взлом Poly Network (611 млн долларов) и взлом моста Binance (570 млн долларов) - оказывают огромное влияние на результаты.
Если исключить три самые крупные атаки, то взломы инфраструктуры являются самой влиятельной категорией по объему потерянных средств.
Как осуществляются взломы?
Инфраструктурные атаки
В 61% случаев использования инфраструктуры в группе выборки закрытые ключи были скомпрометированы неизвестным способом. Хакеры могли получить доступ к этим закрытым ключам с помощью атак социальной инженерией, таких как фишинговые электронные письма и поддельные объявления о работе.
Атаки на язык смарт-контрактов
Атаки реентерабельности были самым популярным видом атак на уровне языка смарт-контрактов.
При атаке реентерабельности функция в уязвимом смарт-контракте вызывает функцию на вредоносном контакте. Или же функция во вредоносном контракте может быть запущена, когда уязвимый контракт отправляет токены вредоносному контракту. Затем эта вредоносная функция обращается к уязвимой функции в рекурсивном цикле до того, как контракт обновит свой баланс.
Например, во взломе Siren Protocol функция для вывода токенов залога была уязвима к реентерабельности и вызывалась многократно (каждый раз, когда вредоносный контракт получал токены), пока весь залог не был израсходован.
Атаки на логику протокола
Большинство эксплойтов на протокольном уровне уникальны для конкретного приложения, поскольку каждое приложение имеет уникальную логику (если только это не чистый форк).
Ошибки контроля доступа были наиболее часто повторяющейся проблемой в группе выборки. Например, во взломе Poly Network контракт "EthCrossChainManager" содержал функцию, которую мог вызвать любой желающий для выполнения межцепочечной транзакции.
Этот контракт владел контрактом "EthCrossChainData", поэтому, если установить "EthCrossChainData" в качестве цели кросс-цепной транзакции, можно было обойти проверку onlyOwner().
Оставалось только составить нужное сообщение, чтобы изменить публичный ключ, определенный как "хранитель" протокола, захватить контроль и слить средства. Обычные пользователи никогда не должны были иметь доступ к функциональности контракта "EthCrossChainData".
Примечание: Было много случаев, когда несколько протоколов были взломаны с помощью одной и той же техники, потому что команда форкнула кодовую базу, в которой была уязвимость.
Например, многие форки Compound, такие как CREAM, Hundred Finance и Voltage Finance, стали жертвами атак реентерабельности, потому что код Compound не проверяет эффект от взаимодействия, прежде чем разрешить его. Это прекрасно работало для Compound, поскольку они проверяли каждый новый токен, который они поддерживали, на наличие этой уязвимости, но команды, создающие форки, не проявляли такого усердия.
Экосистемные атаки
Флэш-кредиты использовались в 98% экосистемных атак.
Атаки с использованием флеш-кредитов обычно следуют следующей формуле: Используйте кредит для совершения массивных свопов, которые повышают цену токена на AMM, который кредитный протокол использует в качестве ценового фида. Затем, в той же транзакции, используйте этот раздутый токен в качестве залога, чтобы взять кредит намного выше его истинной стоимости.