Проблемы контракта USDT
Нашел ветку твитов от Pashov, прекрасного начинающего аудитора, который описал несколько неочевидных нюансов контракта USDT. Предлагаю их перевод.
А сам контракт можно посмотреть тут.
1. Во-первых, у USDT нет комиссии за перевод токенов. Однако это можно легко исправить, вызвав нужную функцию админами. Это может поломать некоторые dapp приложения, которые не предусмотрели этого.
2. Во-вторых, он имеет встроенную защиту approval race condition. Другими словами, если у вас есть ненулевое allowance и вы попробуете вызвать erc20:approve, то ваша транзакция откатится, что может привести к dos в вашем контракте.
3. Transfer, transferFrom and approve - не возвращают булево значение, что не соответствует стандартам erc20.
4. Decimals. В USDT их 6, что может приводить к некорректным расчетам в контрактах.
5. Черный список. Если в вашем контракте есть "push" функция, которая рассылает адресатам токены, и один из этих адресатов в черном списке, то возникнет dos.
#usdt #security
Post #557
307