CyberGlossary

Vulnerabilidades

Fuga de memória

Também conhecido como: Fuga de recursos

Definição

Defeito em que memória já não necessária não é devolvida ao alocador, esgotando progressivamente a memória disponível e degradando ou fazendo cair o sistema.

Uma fuga de memória (CWE-401) ocorre quando um programa aloca memória e perde todas as referências para ela sem a libertar. Com o tempo, o working set do processo cresce, o desempenho cai, o swap fica saturado e o SO acaba por matar o processo ou rejeitar novo trabalho. A maioria das fugas é um problema de fiabilidade, mas pode tornar-se de segurança: serviços de longa duração expostos a gatilhos controlados pelo atacante tornam-se amplificadores de negação de serviço. Incluem-se objetos do kernel, descritores, sockets ou recursos GPU não libertados. Defesas: profiling (Valgrind, ASan/LSan, heaptrack), disciplina de propriedade (RAII, smart pointers), testes de carga contínuos e GC ao nível da linguagem. A "fuga de memória" em sentido criptográfico (revelar o conteúdo da memória) é mais corretamente chamada divulgação de informação.

Exemplos

  • Servidor web de longa duração cujas alocações por pedido nunca são libertadas.
  • Módulo do kernel que se esquece de libertar buffers skb e esgota a memória do sistema.

Termos relacionados