Weaknesses of type CWE-663

1 result

Uso de função não-reentrante em contexto concorrente

Ocorre quando código chama uma função que não é segura para reentrância (não pode ser interrompida e chamada novamente antes de completar) dentro de um ambiente com múltiplas threads ou processos. Isso causa corrupção de estado, race conditions e comportamento imprevisível, já que a função compartilha dados globais ou estáticos entre chamadas simultâneas.

Example

Um serviço web que usa getenv() ou strtok() em múltiplas threads sem sincronização. Essas funções modificam buffers estáticos internos; quando thread A interrompe thread B no meio da execução, ambas leem/escrevem no mesmo buffer, corrompendo o resultado. Em produção, credenciais, tokens ou dados sensíveis podem vazar ou ficar incoerentes.

How to mitigate

Prefira funções seguras para reentrância (getenv_r, strtok_r, ou versões thread-safe da biblioteca). Se obrigatório usar função não-reentrante, proteça com mutex/lock durante toda a chamada. Documente claramente quais funções exigem sincronização e audite o código concorrente regularmente.