Falhas do tipo CWE-366
18 resultadosCondição de corrida entre threads
Fraqueza que ocorre quando múltiplas threads acessam e modificam o mesmo recurso compartilhado sem sincronização adequada, causando estados inconsistentes ou comportamentos impredizíveis. O resultado depende da ordem aleatória de execução das threads, criando uma janela onde dados podem ser lidos ou gravados em estados intermediários.
Duas threads incrementam simultaneamente um contador de banco de dados sem usar locks: Thread A lê valor 100, Thread B também lê 100, ambas incrementam para 101 e gravam — resultado esperado era 102. Ou em autenticação: uma thread verifica se usuário existe enquanto outra o deleta, causando acesso com credenciais inválidas.
Use mecanismos de sincronização (mutex, semáforo, RWLock) ao acessar dados compartilhados; prefira estruturas thread-safe da linguagem (ConcurrentHashMap em Java, threading.Lock em Python); minimize a extensão de seções críticas e teste com ferramentas de detecção de race conditions (ThreadSanitizer, Helgrind).