- Всегда спрашивайте: полностью ли я аннулировал эту подпись после использования? Nonce должен быть использован независимо от того, удалась ли транзакция или нет.
- Проверяйте контекст подписи: где эта подпись действительна? Если ваш протокол работает или может работать в нескольких сетях, каждая внесетевая подпись должна быть привязана к конкретной сети через block.chainid или разделитель домена EIP-712.
- Проверяйте каждое предположение: предполагает ли мой код, что транзакция будет успешной? Предполагает ли он, что подпись предназначена только для одной сети? Проактивное выявление и устранение этих неявных предположений является ключом к предотвращению атак повторного воспроизведения.
Строго применяя эти принципы и используя такие инструменты, как чек-лист Solodit, вы можете создавать системы, устойчивые к этим тонким, но опасным уязвимостям.
#replay
Post #1486
954
- 👍 3
- 🔥 1