Reino: Code Quality

Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.

Undefined Behavior: File Pointer Dereference

Abstract
O aplicativo usa uma atribuição que desreferencia um objeto FILE do sistema.
Explanation
Dependendo do compilador C específico em uso, o endereço de um objeto FILE do sistema pode ser significativo para o uso do objeto FILE como um fluxo. Usar uma cópia do objeto FILE sem o endereço associado pode levar a um comportamento indefinido, resultando em um possível vazamento de informações do sistema, uma falha do sistema ou na capacidade de um agente mal-intencionado ler ou editar arquivos a seu critério.

Exemplo 1: O código a seguir mostra um objeto FILE do sistema que é desreferenciado e copiado por valor.


FILE *sysfile = fopen(test.file, "w+");
FILE insecureFile = *sysfile;


Como sysfile é desreferenciado na atribuição de insecureFile, o uso de insecureFile pode resultar em uma ampla variedade de problemas.
References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 706
[2] Standards Mapping - Motor Industry Software Reliability Association (MISRA) C Guidelines 2012 Rule 22.5
desc.structural.cpp.undefined_behavior_file_pointer_dereference