Уязвимость: Access Control Vulnerabilities
Топ 1 уязвимость на 2025 год, согласно списку от OWASP. На первый взгляд кажется, что это очень простая уязвимость, которую можно избежать средствами уровня "не ставь пароль 12345", но на самом деле бывают намного более сложные случаи.
OWASP — это Open Worldwide Application Security Project, международное сообщество и некоммерческая организация, которая занимается улучшением безопасности программного обеспечения
В чем заключается
Строгое определение такое: уязвимость нарушения доступа - это уязвимость, позволяющая неавторизованным пользователям получить доступ и/или изменять данные и/или функции контракта
Где искать
Возникают чаще всего там, где недостаточно permission checks, например отсутствует модификатор onlyOwner, или функция вывода средств не проверяет что адрес, инициировавший вывод соответствует адресу, с чьего баланса списываются средства. Так же стоит следить за тем, чтобы роли в вашем протоколе не имели бы слишком много полномочий
Пример
В этой короткой статье рассказывается о то, что у функции burn протокола HospoWise не было модификатора onlyOwner, что привело к тому, что сжигать их токены мог любой желающий
Как быть
Хорошая новость в том, что такие очевидные нарушения прекрасно детектируются статическими инструментами анализа, так что надо:
- использовать статические анализаторы типа slither и aderyn
- использовать onlyOwner от OpenZeppelin
- тесты тесты тесты
Важность тестирования в написании контрактов невозможно переоценить
Post #28
380