Falhas do tipo CWE-910

2 resultados

Uso de descritor de arquivo expirado

O programa continua usando um descritor de arquivo (file descriptor) após ele ter sido fechado ou invalidado pelo sistema operacional. Isso permite operações em um recurso que não existe mais, causando comportamento indefinido, corrupção de dados ou falha de segurança se o descritor for reutilizado pelo SO para outro arquivo.

Exemplo

Um servidor web abre um arquivo, obtém seu FD, passa o FD para uma thread que eventualmente o fecha. A thread principal continua tentando escrever no FD já fechado, que pode ter sido reatribuído a um socket de rede ou outro arquivo crítico, causando vazamento de dados ou sobrescrita não intencional.

Como mitigar

Implemente sincronização clara entre threads/processos antes de fechar FDs, use variáveis sentinela (nullify o FD após fechar), valide o FD antes de cada operação, ou adopte abstrações de alto nível (smart pointers, gerenciadores de recursos) que garantem que o FD seja válido durante sua vida útil.