Fallos del tipo CWE-372

9 resultados

Distinção incompleta de estados internos

A aplicação não consegue diferenciar adequadamente entre dois ou mais estados internos legítimos, causando comportamentos imprevistos quando transita entre eles. Isso ocorre porque a lógica não verifica ou não mantém controle suficiente sobre qual estado a aplicação está, permitindo operações que deveriam ser restritas a um estado específico.

Ejemplo

Um sistema de pagamento que não distingue corretamente entre 'pagamento processado' e 'pagamento aguardando confirmação'. Se um atacante conseguir desencadear uma ação de reembolso enquanto o estado interno está ambíguo, ele pode conseguir reembolso duas vezes pela mesma transação.

Cómo mitigar

Implemente máquinas de estado explícitas e bem definidas, validando transições legítimas em cada operação. Use flags ou enums para rastrear estado atual e sempre verifique o estado esperado antes de executar ações sensíveis.