Аудит вне рамок - 2
Интересный пример, где нужно держать в голове несколько действующих лиц при тестировании функции.
Если кратко, то функция отвечает за оплату займа для пользователя. Она без каких-либо модификаторов и ограничений.
Обращаем внимание при аудите
Тут хочу отметить два момента.
1. Из опыта прочтения аудиторских отчетов, всегда нужно обращать внимание на строгие равенства, типа "==". Очень часто можно наткнуться на баг и выявить условие при котором это равенство "ломает" логику.
2. Кто может обращаться к функции? Да, все пользователи. Но если попробовать разбить их по ролям, то выходит: заемщик, который платит займ, администратор протокола, заниматель, хакер, случайный пользователь и т.д.
Если предположить, что сам админ заинтересован в потере пользователем своего залога, или хакер просто хочет напакостить, то кто-либо из них может отправить небольшой repaid, чем сломает выполнение функции, и займ будет невозможно погасить вовремя. Тут также возможен и фронтран данной функции.
Возможно, придумывать роли пользователей для вас будет не нужной тратой времени, но для меня это помогает найти новые векторы аудита.
#audit #outofbox
Post #722
465
- ❤ 2
- 👍 2