Fallos del tipo CWE-820
15 resultadosSincronização ausente entre threads
Ocorre quando múltiplas threads acessam e modificam dados compartilhados sem mecanismos de sincronização (locks, mutexes, semáforos). Isso causa condições de corrida, onde o resultado depende da ordem de execução impredizível, levando a corrupção de dados, comportamento indefinido ou crashes.
Um contador global incrementado simultaneamente por duas threads sem lock: Thread A lê valor 5, Thread B lê valor 5, ambas somam 1 e escrevem 6 — resultado esperado era 7. Em sistemas críticos, isso pode causar transações duplicadas, estados inconsistentes ou vulnerabilidades exploráveis.
Use primitivas de sincronização nativa da linguagem: mutexes, semáforos, ou operações atômicas. Em Java, use synchronized/ReentrantLock; em C/C++, use std::mutex ou pthreads; em Go, use sync.Mutex. Revise todo acesso a dados compartilhados e cubra com testes de concorrência (race detectors).