Weaknesses of type CWE-837
16 resultsFalta de garantia de execução única de uma ação
A aplicação não garante que uma ação crítica (como transferência bancária, criação de conta ou processamento de pagamento) seja executada apenas uma vez, mesmo quando solicitada múltiplas vezes. Um atacante pode explorar condições de corrida, resubmissão de requisições ou falta de tokens idempotentes para duplicar a ação, causando inconsistência de dados ou perdas financeiras.
Um e-commerce recebe uma requisição de compra sem nenhum mecanismo de idempotência. Se o usuário clicar no botão 'Confirmar Pedido' duas vezes rapidamente (ou se um proxy reverso reenviar a requisição), o sistema processa dois pedidos idênticos e cobra o cliente duas vezes pela mesma compra.
Implemente tokens idempotentes únicos por requisição (nonce ou UUID), valide-os no servidor e descarte requisições duplicadas. Use transações atômicas no banco de dados e, quando possível, adote padrões como 'check-then-act' dentro de uma seção crítica (lock/mutex) para garantir atomicidade da operação sensível.