Weaknesses of type CWE-591
77 resultsArmazenamento de dados sensíveis em memória sem proteção contra acesso
A aplicação mantém dados sensíveis (senhas, tokens, chaves criptográficas) em memória sem impedir que processos adversários ou ataques de hardware os acessem. Diferente de criptografia, aqui falta o próprio mecanismo de proteção da região de memória — seja bloqueio contra troca em disco (swap), isolamento de privilégios ou limpeza após uso.
Uma aplicação Java carrega uma chave privada RSA em uma String e a mantém na heap durante toda a sessão do usuário. Um atacante com acesso local, ou mediante vazamento de heap (dump de memória), consegue recuperar a chave íntegra. Pior: a String nunca é sobrescrita — mesmo após "liberada", o valor persiste na memória até coleta de lixo.
Use estruturas que zerem memória após uso (char[] em Java em vez de String, SecureString em .NET, ou mlock/madvise em C). Minimize o tempo de permanência: carregue segredos sob demanda, não em startup. Em ambientes críticos, integre Memory Tagging Extension (MTE) ou execute em enclaves (SGX, TrustZone). Audite e configure o sistema operacional para desabilitar dumps de memória e swap criptografado.