Weaknesses of type CWE-368
6 resultsCondição de corrida em troca de contexto
Ocorre quando o software não sincroniza corretamente operações críticas durante mudanças de contexto (troca de threads, processos ou modo de execução). Entre o momento em que uma verificação de segurança é feita e a ação é executada, outro fluxo pode modificar o estado, invalidando a decisão anterior.
Um servidor verifica se um usuário tem permissão para acessar um arquivo (check), depois abre o arquivo (act). Se uma thread concorrente remove a permissão entre o check e o act, o código ainda executa a ação indevida. Ou em kernels: verificação de privilégios antes de syscall é feita, mas o processo muda de contexto e perde privilegios antes da syscall rodar.
Use locks (mutex, semáforos) para atomicidade entre verificação e ação. Ou reorganize o código para validar permissões imediatamente antes da operação crítica, sem lacunas onde outro contexto possa intervir. Em kernels, use mecanismos de sincronização apropriados (spinlocks, RCU) para proteger estruturas compartilhadas.