계: Code Quality

코드 품질이 낮으면 예측할 수 없는 동작이 발생합니다. 사용자 입장에서는 사용 편의성이 떨어지는 것으로 나타나는 경우가 많습니다. 공격자에게는 예상치 못한 방법으로 시스템에 부담을 줄 수 있는 기회가 됩니다.

Undefined Behavior: File Pointer Dereference

Abstract
이 응용 프로그램은 시스템 FILE 개체를 역참조하는 할당을 사용합니다.
Explanation
사용 중인 특정 C 컴파일러에 따라, FILE 개체를 스트림으로 사용하는 데 시스템 FILE 개체의 주소가 중요할 수 있습니다. 연결된 주소 없이 FILE 개체의 복사본을 사용하면 정의되지 않은 동작이 발생하여 잠재적인 시스템 정보 유출 또는 시스템 충돌이 발생하거나 악의적 작업자가 마음대로 파일을 읽거나 편집할 수 있습니다.

예제 1: 다음 코드는 역참조되고 값으로 복사되는 시스템 FILE 개체를 보여줍니다.


FILE *sysfile = fopen(test.file, "w+");
FILE insecureFile = *sysfile;
sysfileinsecureFile의 할당에서 역참조되므로, insecureFile을 사용하면 다양한 문제가 발생할 수 있습니다.
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