Weaknesses of type CWE-415
310 resultsUso após liberação de memória
Ocorre quando o código tenta acessar ou manipular um bloco de memória após ele ter sido liberado (freed). O programa perde o controle sobre esse espaço, que pode ser reatribuído a outra estrutura de dados, causando corrupção de memória, travamentos ou execução arbitrária de código.
Um buffer é alocado com malloc(), um ponteiro guarda seu endereço, o buffer é liberado com free(), mas o código continua usando o ponteiro para ler ou escrever dados. Um atacante pode alocar uma estrutura crítica no mesmo endereço e fazer o programa sobrescrever dados sensíveis ou ganhar controle de execução.
Após liberar memória (free, delete), sempre anule o ponteiro (ptr = NULL) ou use linguagens com gerenciamento automático. Em C/C++, implemente verificações de validade ou use ferramentas como AddressSanitizer durante testes. Prefira smart pointers (unique_ptr, shared_ptr) em C++ moderno.