Falhas do tipo CWE-188

2 resultados

Dependência de Layout de Dados em Memória

Fraqueza onde o código assume um layout específico de dados ou estruturas em memória (ordem, tamanho, alinhamento) sem validação explícita. Quando esse layout muda — por recompilação, otimizador diferente, arquitetura distinta ou versão de linguagem — o código quebra ou se comporta de forma insegura, acessando dados errados ou fora dos limites.

Exemplo

Um programa em C lê um arquivo binário com estrutura esperada e acessa campos direto por offset fixo (ex: char *ptr = buffer + 8 para 'userid'). Se a estrutura for recompilada com padding diferente ou em outra arquitetura, o offset aponta para dado errado, possibilitando bypass de validação ou corrupção de dados.

Como mitigar

Use serializadores robustos (protobuf, msgpack) em vez de layouts binários rígidos. Em C, force alinhamento explícito com `#pragma pack` ou `__attribute__((packed))` e valide tamanhos em tempo de compilação. Prefira APIs de leitura estruturada que abstraem layout físico.