Обязательный Foundry
В прошлую среду я предложил разобрать один bug bounty и этот процесс натолкнул меня на написание этого поста.
Сам протокол написан с использованием обновляемых контрактов UUPS, да еще и с Beacon Proxy. При том, что я понимаю как работают паттерны этих прокси, но в данном случае была какая-то авторская разработка и мне пришлось потратить пару часов, чтобы разобраться как все там работает.
В процессе разбора были такие моменты, когда казалось, что "Вот! Здорово! Баг найден! Это по-любому приведет к взлому и можно писать отчет." А для отчета нужен PoC...
Сидишь такой, пишешь тесты, и оказывается, что бага нет. В какой-то момент происходит реверт, отрабатывая require в коде, или переменная состояния не позволяет выполнить действие. И казалось бы 100% баг перестает быть таковым... Обидно, досадно, но ладно.
В целом, я не особо люблю писать тесты в конкурсных протоколах, так как это занимает время самого аудита. И мы возвращаемся к описанной ранее в постах проблеме недостаточной валидации.
Foundry давно стал стандартом написания тестов в мире аудита. Immunefi, портал для bug bounty, требует к каждому репорту добавлять функциональный PoC. Платформа для конкурсов Cantina стала требовать у своих аудиторов с определенной бальной системой добавление тестов к отчетам. Скоро и другие платформы сделают это обязательным условием для участия в конкурсах, либо будут резать выплаты находкам без тестов.
Тесты - это как железобетонные доказательства. Для разработчиков - что функция отрабатывает так как надо, для аудиторов - что баг действительно есть.
Пару лет назад, в вакансиях доминировали Truffle и Hardhat, потом основным стал Hardhat и Truffle и немного Foundry. Потом все начали забывать о Truffle и в вакансиях требовались знания или/или - Hardhat/Foundry. Теперь же Foundry чуть больше доминирует на рынке из-за своего более простого освоения.
Foundry уже не опция для знаний разработчика, а обязанность. Даже если вы мастер JavaScript и можете без проблем написать тесты на Hardhat.
Уже в прошлом году стали появляться компании, которые выводят Foundry на новый уровень, упрощая разработку инвариант тестов и проверок формальной верификации. В этом году будет еще больше "движений" в эту сторону.
И если вы будете откладывать изучение Foundry, то в какой-то момент нужно будет учить его не по чуть-чуть, вместе с развитием программы, а сразу большим объемом.
#foundry
Post #1311
1.18K
- ❤ 5
- 👍 3
- 🔥 3
- 💯 1