Reino: Code Quality

Una mala calidad del código lleva a un comportamiento no predecible. Desde la perspectiva de un usuario, muchas veces también supone una usabilidad limitada. Pero para un atacante es una oportunidad para atacar al sistema de formas insospechadas.

Undefined Behavior: File Pointer Dereference

Abstract
La aplicación utiliza una asignación que elimina la referencia a un objeto ARCHIVO del sistema.
Explanation
En función del compilador de C específico que se utilice, la dirección de un objeto ARCHIVO del sistema puede ser importante para el uso del objeto ARCHIVO como una secuencia. El uso de una copia del objeto ARCHIVO sin la dirección asociada puede generar un comportamiento indefinido que resulte en una posible fuga de información del sistema, un fallo del sistema o la capacidad de un actor malintencionado de leer o editar archivos a su discreción.

Ejemplo 1: El siguiente código muestra un objeto ARCHIVO del sistema al que se le desreferencia y se copia por valor.


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


Como sysfile se desreferencia en la asignación de insecureFile, el uso deinsecureFile puede resultar en una amplia variedad 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