界: Code Quality
代码质量不佳会导致不可预测的行为。对于用户来说,通常表现为可用性差。对于攻击者来说,提供了以意外方式对系统施加压力的机会。
Undefined Behavior: File Pointer Dereference
Abstract
应用程序使用取消引用系统 FILE 对象的赋值。
Explanation
根据所使用的特定 C 编译器,系统 FILE 对象的地址对于将 FILE 对象用作流可能很重要。使用没有关联地址的 FILE 对象的副本可能会导致未定义的行为,从而造成潜在的系统信息泄露、系统崩溃或者使恶意操作者能够随意读取或编辑文件。
示例 1:以下代码显示了取消引用并通过值复制的系统 FILE 对象。
由于
示例 1:以下代码显示了取消引用并通过值复制的系统 FILE 对象。
FILE *sysfile = fopen(test.file, "w+");
FILE insecureFile = *sysfile;
由于
sysfile
在 insecureFile
的赋值中被取消引用,使用 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
[3] Standards Mapping - Motor Industry Software Reliability Association (MISRA) C Guidelines 2023 Rule 22.5
desc.structural.cpp.undefined_behavior_file_pointer_dereference