Overflow / Underflow de Inteiro

Segurança · Profundo

Uma classe de vulnerabilidades aritméticas onde uma computação com inteiro produz um resultado fora dos limites de seu tipo de largura fixa, fazendo wrap silenciosamente em builds release do Rust (já que Rust só entra em panic em overflow no modo debug), produzindo um valor incorreto que pode corromper saldos de token, limites de empréstimo ou contadores de controle de acesso. Por exemplo, subtrair um u64 maior de um menor faz wrap para próximo de u64::MAX (~1,8 x 10^19), que poderia ser interpretado como um saldo enorme. Programas Solana devem usar os métodos checked_add, checked_sub, checked_mul e checked_div do Rust (ou as variantes saturating_*/wrapping_* com intenção deliberada) em toda aritmética financeira para eliminar essa classe de bugs.

Termos relacionados