Falhas do tipo CWE-567

5 resultados

Acesso não sincronizado a dados compartilhados em contexto multithreaded

Ocorre quando múltiplas threads acessam e modificam o mesmo dado sem mecanismos de sincronização (locks, mutexes ou primitivas atômicas). Isso causa race conditions onde o resultado final depende da ordem de execução das threads, levando a corrupção de dados, estados inconsistentes ou comportamento imprevisível.

Exemplo

Uma aplicação Java com um contador compartilhado entre threads sem sincronização: duas threads incrementam a mesma variável quase simultaneamente, mas apenas um incremento é registrado porque uma leitura aconteceu antes da escrita da outra thread completar. O resultado final fica incorreto e imprevisível.

Como mitigar

Use mecanismos de sincronização apropriados: locks (synchronized em Java, mutex em C), operações atômicas (AtomicInteger, AtomicReference), ou estruturas thread-safe (Collections.synchronizedMap, ConcurrentHashMap). Valide e teste com ferramentas de detecção de race conditions (ThreadSanitizer, FindBugs) em todos os acessos a dados compartilhados.