Armazenamento Transitório: A Armadilha de Segurança em Smart Contracts
Descubra os riscos de segurança no armazenamento

Armazenamento Transitório: A Armadilha de Segurança em Smart Contracts
19 de março de 2026
O armazenamento transitório, introduzido com o EIP-1153, prometia otimizar o uso de gás em contratos inteligentes. No entanto, essa otimização esconde armadilhas de segurança que podem ser exploradas. Recentemente, um protocolo perdeu US$355.000 devido a uma falha na gestão deste tipo de armazenamento, revelando a necessidade de uma compreensão profunda de suas nuances. Este artigo explora os riscos e as melhores práticas para mitigar vulnerabilidades associadas ao armazenamento transitório.
A Ilusão da Simplicidade
O armazenamento transitório foi concebido como um espaço de trabalho temporário e de baixo custo, que desaparece ao final de cada transação. A ideia era simples: reduzir os custos de gás ao evitar o uso constante do armazenamento persistente (SSTORE). Inicialmente, a adoção foi rápida, com projetos como a Uniswap V4 e a OpenZeppelin implementando soluções baseadas em armazenamento transitório. Contudo, a premissa de que esse armazenamento é automaticamente limpo no fim da transação é enganosa. Ele persiste durante chamadas internas, interações entre contratos, callbacks e, crucialmente, chamadas reentrantes dentro da mesma transação.
Ataque #1: Reentrância de Baixo Custo
Historicamente, a limitação de gás (2.300 unidades) em transferências de ETH protegia contra ataques de reentrância. Um contrato malicioso não conseguia executar operações complexas, como SSTORE, com essa quantidade limitada de gás. No entanto, o TSTORE tem um custo de apenas 100 unidades de gás. Isso significa que um atacante pode usar uma transferência de ETH para acionar uma reentrância e, dentro dessa reentrância, manipular o estado do contrato usando TSTORE, abrindo caminho para explorações.
Preocupado com a segurança dos seus contratos? Descubra como a Toolzz AI pode te ajudar a identificar e mitigar vulnerabilidades.
O Caso SIR.trading e a Falha na Limpeza
O protocolo SIR.trading foi vítima dessa vulnerabilidade. Ao usar TSTORE para armazenar temporariamente um valor durante o processamento de um saque, o protocolo falhou em limpar o armazenamento transitório antes de executar um callback. Um atacante explorou essa falha, manipulando o valor armazenado em TSTORE durante o callback e, consequentemente, desviando fundos.

Defesa: O Padrão CEI Consciente do TSTORE
Para mitigar esse risco, é crucial adotar um padrão “Check-Effects-Interactions” (CEI) consciente do armazenamento transitório. Isso significa garantir que os efeitos do estado sejam atualizados antes de qualquer interação externa. Além disso, é fundamental limpar explicitamente o armazenamento transitório após cada operação, mesmo que pareça redundante. Um exemplo de defesa seria o uso de um bloqueio transitório, como demonstrado no código abaixo. A limpeza explícita do TSTORE garante que o estado não seja comprometido por chamadas reentrantes.
solidity contract SecureVault { bytes32 constant REENTRANCY_LOCK = keccak256("reentrancy.lock");
modifier nonReentrantTransient() {
assembly {
if tload(REENTRANCY_LOCK) { revert(0, 0) }
tstore(REENTRANCY_LOCK, 1)
}
_;
assembly {
tstore(REENTRANCY_LOCK, 0) // EXPLICIT clear
}
}
function processWithdrawal(address user, uint256 amount) external nonReentrantTransient {
// ... lógica de retirada ...
}
}
Ataque #2: Conflitos em Carteiras de Contrato Inteligente
O design do armazenamento transitório presume um modelo de usuário único por transação (EOA). No entanto, carteiras de contrato inteligente (como as ERC-4337) permitem o agrupamento de múltiplas operações de usuário em uma única transação. Se uma operação dentro desse lote reverter após definir um valor em armazenamento transitório, mas antes de limpá-lo, essa informação persistirá e poderá afetar as operações subsequentes no mesmo lote, levando a comportamentos inesperados e vulnerabilidades.
Namespace para Armazenamento Transitório
Uma estratégia eficaz para mitigar esse risco é o uso de namespaces para o armazenamento transitório. Ao associar cada contrato ou função a um namespace exclusivo, você evita conflitos entre diferentes operações dentro do mesmo lote. Isso pode ser feito usando funções de hash para gerar chaves de armazenamento exclusivas para cada contexto.
Comece a proteger seus contratos agora!
Solicitar demo Toolzz AIConclusão
O armazenamento transitório oferece ganhos de eficiência, mas exige uma atenção redobrada à segurança. A compreensão dos riscos associados, incluindo vulnerabilidades de reentrância e conflitos em carteiras de contrato inteligente, é fundamental para o desenvolvimento de contratos robustos e seguros. A adoção de padrões de codificação seguros, como o CEI consciente do TSTORE e o uso de namespaces, pode ajudar a mitigar esses riscos. A segurança de seus smart contracts é primordial e requer uma abordagem proativa e informada. A Toolzz AI pode ser integrada ao seu fluxo de desenvolvimento para auxiliar na análise de vulnerabilidades e garantir a integridade de seus contratos, automatizando testes e identificando potenciais falhas de segurança antes que elas sejam exploradas.
Veja como é fácil criar sua IA
Clique na seta abaixo para começar uma demonstração interativa de como criar sua própria IA.













