漏洞
空指针解引用
别称: 空解引用
定义
程序通过空(或无效)指针进行读写,通常导致进程崩溃,某些情况下还可被用于实际利用。
空指针解引用(CWE-476)发生在代码访问了从未初始化、释放后被置 NULL,或调用失败却未检查返回值的指针。在多数现代系统上会触发段错误使进程崩溃,从而形成拒绝服务问题。在某些受限环境中(早期 Linux 内核中零地址可被映射、嵌入式无 MMU 系统、部分 JIT 编译器)空指针解引用可以被转化为内存破坏原语。防御措施包括严格的空值检查、语言层面的特性(Optional/Maybe、不可空引用)、静态分析、基于 Sanitizer 的测试,以及操作系统控制(如 mmap_min_addr,禁止映射低地址)。
示例
- 因缺失可选请求头而崩溃的 Web 服务器。
- mmap_min_addr 为 0 时,Linux 内核中可被利用的历史空指针解引用漏洞。