Weaknesses of type CWE-821

13 results

Sincronização incorreta entre threads

Ocorre quando múltiplas threads acessam e modificam dados compartilhados sem mecanismos adequados de sincronização (locks, mutexes, semáforos). Isso causa race conditions: o resultado depende da ordem aleatória de execução das threads, levando a corrupção de dados, comportamento imprevisível ou falhas de segurança.

Example

Um contador global é incrementado por duas threads simultaneamente sem lock. Thread A lê o valor 5, Thread B lê 5, Thread A escreve 6, Thread B escreve 6 — resultado final é 6 em vez de 7. Em código de autenticação, isso pode permitir bypass de validações ou acesso não autorizado.

How to mitigate

Use primitivas de sincronização nativas da linguagem (Mutex em Rust, synchronized/volatile em Java, locks em Python) para proteger acesso a dados compartilhados. Evite compartilhamento desnecessário de estado mutável entre threads e prefira estruturas thread-safe quando possível.