Fallos del tipo CWE-1058

1 resultado

Elemento estático mutável acessado sem sincronização em contexto multi-thread

Ocorre quando um método ou função que pode ser chamado por múltiplas threads acessa ou modifica um atributo estático (ou membro compartilhado) que não é final e não possui proteção (como locks ou sincronização). Isso causa race conditions onde threads competem pelo acesso, levando a comportamentos impredizíveis, corrupção de dados ou bypass de controles de segurança.

Ejemplo

Uma classe com um campo estático `static String sessionToken` que é lido e atualizado por diferentes threads de requisições HTTP sem sincronização. Uma thread pode ler um token desatualizado enquanto outra está escrevendo, ou duas threads podem sobrescrever o token simultaneamente, comprometendo a autenticação.

Cómo mitigar

Use `synchronized`, `ReentrantLock`, ou `AtomicReference` para proteger acessos ao campo estático; ou simplifique o design evitando campos estáticos mutáveis em favor de variáveis locais ou thread-local storage. Se o campo não muda após inicialização, declare-o `final`.