Письменное задание в Spearbit
Для тех, кто не в курсе, Spearbit крутая зарубежная компания, которая занимается безопасностью смарт контрактов. Пару раз в год они набирают к себе аудиторов. Для этого требуется пройти тест из 4 вариантов ответа на время и после технического интервью еще выполнить письменное задание.
Предлагаю вашему вниманию одно из таких заданий от февраля 2022 года. Прекрасная практика для аудиторов и тех, кто любит решать задачи.
Есть два контракта: прокси и Логики. Деплой логики делается только однажды для всех пользователей. Прокси - для каждого свой.
Пользователи держат все свои активы на прокси контракте и, в случае необходимости, посылают вызовы на контракт Логики.
Тут есть критическая уязвимость. Задание: найти ее и дать свои рекомендации по ее устранению.
Вы получите дополнительный бонус, если в рекомендациях расскажите о нишевом решении для предотвращения уязвимости. Еще один бонус получите, если в рекомендациях расскажите, как можно убрать уязвимость, убрав два слова в контракте, и изменив всего одно.
Вот ссылка на репо задания: https://github.com/spearbit-audits/writing-exercise
Удачи в поисках!
#proxy #bug #spearbit
Для тех, кто не в курсе, Spearbit крутая зарубежная компания, которая занимается безопасностью смарт контрактов. Пару раз в год они набирают к себе аудиторов. Для этого требуется пройти тест из 4 вариантов ответа на время и после технического интервью еще выполнить письменное задание.
Предлагаю вашему вниманию одно из таких заданий от февраля 2022 года. Прекрасная практика для аудиторов и тех, кто любит решать задачи.
Есть два контракта: прокси и Логики. Деплой логики делается только однажды для всех пользователей. Прокси - для каждого свой.
Пользователи держат все свои активы на прокси контракте и, в случае необходимости, посылают вызовы на контракт Логики.
Тут есть критическая уязвимость. Задание: найти ее и дать свои рекомендации по ее устранению.
Вы получите дополнительный бонус, если в рекомендациях расскажите о нишевом решении для предотвращения уязвимости. Еще один бонус получите, если в рекомендациях расскажите, как можно убрать уязвимость, убрав два слова в контракте, и изменив всего одно.
Вот ссылка на репо задания: https://github.com/spearbit-audits/writing-exercise
Удачи в поисках!
#proxy #bug #spearbit
👍11❤1🔥1
Баг из протокола Mia
На днях выпустили отчет по аудиту Mia DAO, где был один примечательный med issue, о котором хочется рассказать.
Посмотрите на код ниже и подумайте, в чем тут может быть проблема:
Ответ:
Функция не будет работать, так как deposits никогда не были сохранены в памяти .
Вот как правильно нужно было сделать:
{
uint len = _deposits.length;
deposits = new uint256[](len);
for (uint256 i = 0; i < len; i++) {
deposits[i] = _normalizeDecimals(_deposits[i], ERC20(_tokens[i]).decimals());
}
}
Интересный пример, не так ли?
#bug
На днях выпустили отчет по аудиту Mia DAO, где был один примечательный med issue, о котором хочется рассказать.
Посмотрите на код ниже и подумайте, в чем тут может быть проблема:
function _normalizeDecimalsMultiple(uint256[] memory _deposits, address[] memory _tokens) internal view
returns (uint256[] memory deposits)
{
for (uint256 i = 0; i < _deposits.length; i++) {
deposits[i] = _normalizeDecimals(_deposits[i], ERC20(_tokens[i]).decimals());
}
}
Более опытные разработчки, вероятно, сразу поймут, в чем дело. Хотя этот баг был найден всего лишь одним аудитором.Ответ:
Вот как правильно нужно было сделать:
{
uint len = _deposits.length;
deposits = new uint256[](len);
for (uint256 i = 0; i < len; i++) {
deposits[i] = _normalizeDecimals(_deposits[i], ERC20(_tokens[i]).decimals());
}
}
#bug
👍12