Weaknesses of type CWE-244
20 resultsFalha na limpeza de memória heap antes da liberação
Quando um programa libera memória heap (desaloca) sem antes sobrescrever seu conteúdo, dados sensíveis (senhas, chaves criptográficas, tokens) podem permanecer legíveis naquela região. Um atacante com acesso ao processo ou à memória física consegue recuperar essas informações mesmo após a desalocação.
Uma aplicação que autentica usuários aloca um buffer para armazenar a senha, valida-a contra um hash e depois faz free(buffer). Os bytes da senha continuam na heap até ser reutilizada, e ferramentas forenses ou debuggers conseguem recuperá-los. O mesmo ocorre com chaves de criptografia descartadas sem zerar.
Antes de liberar memória com dados sensíveis, sobrescreva-a explicitamente com zeros ou valores aleatórios usando funções que não sejam otimizadas pelo compilador (como memset_s em C, ou equivalentes). Em linguagens de alto nível, use tipos que garantam limpeza automática (SecureString em .NET, ou bibliotecas especializadas) e evite reutilizar buffers com dados criptográficos.