(Not So) Smart Contracts
This repository contains examples of common Cairo smart contract vulnerabilities, featuring code from real smart contracts. Utilize the Not So Smart Contracts to learn about Cairo vulnerabilities, refer to them during security reviews, and use them as a benchmark for security analysis tools.
Features
Each Not So Smart Contract consists of a standard set of information:
- Vulnerability type description
- Attack scenarios to exploit the vulnerability
- Recommendations to eliminate or mitigate the vulnerability
- Real-world contracts exhibiting the flaw
- References to third-party resources providing more information
Vulnerabilities
Not So Smart Contract | Description |
---|---|
Arithmetic overflow | Insecure arithmetic in Cairo for the felt252 type |
L1 to L2 Address Conversion | Essential L2 address checks for L1 to L2 messaging |
L1 to L2 message failure | Messages sent from L1 may not be processed by the sequencer |
Overconstrained L1 <-> L2 interaction | Asymmetrical checks on the L1 or L2 side can cause a DOS |
Signature replays | Necessary robust reuse protection due to account abstraction |
Unchecked from address in L1 Handler | Access control issue when sending messages from L1 to L2 |
Credits
These examples are developed and maintained by Trail of Bits.
If you have any questions, issues, or wish to learn more, join the #ethereum channel on the Empire Hacking Slack or contact us directly.