Fallos del tipo CWE-763

47 resultados

Liberação de ponteiro ou referência inválida

Ocorre quando o código tenta liberar (desalocar) um ponteiro que não aponta para memória válida alocada — pode ser nulo, já foi liberado, aponta para variável local, ou foi corrompido. Isso causa corrupção de heap, travamento da aplicação ou comportamento indefinido que pode ser explorado para execução de código.

Ejemplo

Uma função aloca memória, atribui o ponteiro a uma variável global, e depois a mesma função libera esse ponteiro. Se a função for chamada duas vezes sem reinicializar a variável global, a segunda chamada tentará liberar um ponteiro já liberado (use-after-free).

Cómo mitigar

Sempre inicialize ponteiros para nulo após liberar, valide se um ponteiro é válido antes de desalocar, use smart pointers (C++) ou garbage collection quando possível, e implemente testes de vazamento de memória e sanitizers (AddressSanitizer, Valgrind) no pipeline de build.