Files
2025-09-25 04:04:35 +08:00

22 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 哪些漏洞可以用 fuzz 检测到
**内存安全漏洞**
这是 Fuzzing 最擅长的领域,也是 Fuzzing 历史上发现最多高价值漏洞的类型。这些漏洞通常会导致程序崩溃、数据损坏或信息泄露
- **缓冲区溢出(Buffer Overflows)**:当程序向一个固定大小的缓冲区写入的数据超出了其容量时,就会发生溢出。Fuzzer 可以通过生成超长字符串、大文件或超大数组等输入来触发这类漏洞
- **整数溢出(Integer Overflows)**:当一个整数运算的结果超出其数据类型的最大值时,会发生溢出。Fuzzer 可以提供接近最大值或负数的输入,试图触发不正确的内存分配或边界检查绕过
- **空指针解引用(Null Pointer Dereference**:当程序试图访问一个空指针指向的内存时,会发生崩溃。Fuzzer 可以提供导致函数返回空指针的输入,例如不完整的协议数据包或畸形的文件头
- **UAFUse-After-Free**:当程序在释放一块内存后,仍然使用指向这块内存的指针时,就会发生 UAF。Fuzzer 可以通过提供复杂的、有状态的输入序列来触发这种时序性漏洞
- **双重释放(Double Free)**:当程序两次释放同一块内存时,会引发严重后果。Fuzzer 可以提供导致程序进入异常逻辑的输入,从而触发重复的内存释放操作
- **格式化字符串漏洞(Format String Bugs**:当程序使用 `printf` 等函数,且格式化字符串可由用户控制时,攻击者可以利用它来读写内存。Fuzzer 可以尝试在输入中插入 `%s`, `%n`, `%x` 等格式符来检测这种漏洞
**逻辑漏洞和异常情况**
除了内存安全问题,Fuzzing 也可以用来发现更复杂的逻辑漏洞,尽管这通常需要更智能的 Fuzzer 或额外的检测机制
- **逻辑错误(Logical Bugs**:Fuzzer 可以通过提供畸形但不会导致崩溃的输入,来发现程序中不正确的逻辑。例如,一个输入可能导致数据库返回错误的结果,或者一个视频播放器无法正确解析视频帧
- **拒绝服务(Denial of Service, DoS**:当一个输入导致程序进入无限循环或消耗大量资源时,就会引发 DoS 攻击。Fuzzer 可以通过监控程序执行时间或资源消耗来检测这类问题
- **竞态条件(Race Conditions**:在多线程或多进程程序中,Fuzzer 可以通过随机化输入发送时间或使用多个线程来触发竞态条件,从而发现漏洞
- **权限绕过(Privilege Escalation**Fuzzing 可以用来寻找程序在处理特殊输入时,是否会错误地提升权限
- **信息泄露(Information Leakage**:Fuzzer 可以通过分析程序的输出或返回值,来检测程序是否泄露了不应被公开的敏感信息,比如内存地址或调试信息