Fuzz Testing 核心概念

共 18 题
#

1. 覆盖引导 Fuzzing(Coverage-Guided)与生成式 Fuzzing(Generation-Based)的原理差异与适用场景?请分别说明 AFL++ 和 libFuzzer 的工作机制。

A 生成式 Fuzzing 依赖覆盖反馈
B 覆盖引导 Fuzzing 依据新覆盖反馈引导变异,AFL++ 与 libFuzzer 均属此类 ✓ 正确答案
C AFL++ 是进程内链接的库函数 fuzzer
D 覆盖引导不适用于格式已知输入
#

2. Fuzzing 语料库(Corpus)的管理,种子选择策略、语料最小化(Corpus Minimization)与覆盖率增长曲线的分析方法?

A 语料最小化是剔除冗余输入,保留触发新覆盖的输入 ✓ 正确答案
B 种子越大越好
C 覆盖增长曲线无意义
D 语料库越庞大越好
#

3. Sanitizer(ASAN/MSAN/UBSAN/TSAN)在 Fuzzing 中的作用,如何配置编译选项以最大化 Bug 发现能力?各 Sanitizer 的检测范围?

A MSAN 检测整数溢出
B ASAN 检测数据竞争
C ASAN 检测内存错误,UBSAN 检测未定义行为,TSAN 检测数据竞争 ✓ 正确答案
D Sanitizer 只能发现崩溃
#

4. Crash Triage 工程,去重(Dedup)、可复现性验证、严重性分级与修复跟踪的完整流程?

A 去重、可复现验证、严重性分级与修复跟踪构成完整闭环 ✓ 正确答案
B 所有崩溃都需单独处理无需去重
C 崩溃无需复现验证
D 严重性分级不重要
#

5. Fuzzing 与 CI/CD 的集成,持续 Fuzzing(Continuous Fuzzing)的策略、资源分配与回归检测机制?

A Fuzzing 无法集成到 CI
B 持续 Fuzzing 只需运行一次
C 通过 CI 烟雾 fuzz + 独立深度 fuzz + 崩溃固化回归,实现持续发现与防回归 ✓ 正确答案
D 崩溃输入无需固化
#

6. Fuzzing 的覆盖率度量,Edge Coverage、Hit Count Coverage 各自的含义和分析方法?

A Edge Coverage 记录控制流边,Hit Count Coverage 还记录执行次数 ✓ 正确答案
B 行覆盖比边覆盖更精确
C Hit Count Coverage 不区分循环次数
D Edge Coverage 只记录函数入口
#

7. Fuzz 的输入生成策略,变异(mutation)与生成(generation)、覆盖率引导(coverage-guided)的原理?

A 覆盖率引导将变异/生成与覆盖反馈结合,保留触发新覆盖的输入 ✓ 正确答案
B 生成策略适合格式未知的输入
C 变异策略需要语法知识
D 覆盖率引导与变异无关
#

8. Fuzz 与安全测试的结合,如何用 libFuzzer/AFL 发现内存安全漏洞,语料库与种子如何积累?

A 种子积累无助于漏洞发现
B sanitizer 只能发现逻辑错误
C Fuzzer 配合 sanitizer 发现内存漏洞,种子与语料库持续积累提升效率 ✓ 正确答案
D libFuzzer 无法发现内存漏洞
#

9. OpenAPI/Schema 驱动的 API Fuzzing,如何基于接口定义自动生成合法与非法请求?

A 无需接口定义
B 只能生成合法请求
C 基于接口定义自动生成合法与非法请求,验证校验与容错 ✓ 正确答案
D 只能测无参接口
#

10. Fuzzing 的目标选择与收益评估,如何从攻击面、历史漏洞与复杂度选择模糊测试目标,投入产出如何评估?

A 历史漏洞与 fuzz 无关
B 所有模块 fuzz 价值相同
C 攻击面不重要
D 应优先 fuzz 攻击面大、历史漏洞多、复杂度高的目标 ✓ 正确答案
#

11. 非内存安全语言环境中的 Fuzzing,Python/JS/Java 应用中模糊测试的价值(逻辑错误、异常、资源耗尽)与限制如何应对?

A 价值在于发现逻辑错误、异常与资源耗尽,而非内存越界 ✓ 正确答案
B 非内存安全语言无法 fuzz
C 只能发现内存漏洞
D 逻辑错误无法用 fuzz 发现
#

12. Fuzzing 在协议测试(Protocol Fuzzing)和 API 测试中的应用,与通用 Fuzzing 的差异和特殊配置?

A 与通用 Fuzzing 完全一致
B 需要语法/schema 描述格式,在合法结构内变异,以穿越格式校验 ✓ 正确答案
C 无需状态机处理
D 纯随机字节最有效
#

13. Fuzzing 的局限性,哪些类型的缺陷难以通过 Fuzzing 发现?需要配合哪些其他测试技术?

A Fuzz 无需配合其他测试
B Fuzz 能发现所有缺陷
C Fuzz 难以发现"结果错误但不崩溃"的逻辑缺陷,需配合属性测试 ✓ 正确答案
D Fuzz 擅长发现逻辑语义错误
#

14. Fuzz 的工程化,CI 中的持续 fuzz、崩溃去重(dedup)与回归用例固化流程?

A 崩溃无需去重
B CI 持续 fuzz + 崩溃去重 + 回归固化形成闭环 ✓ 正确答案
C 崩溃输入无需固化
D fuzz 无法与 CI 集成
#

15. Fuzzing 的字典与结构化模板,如何为协议/文件格式提供种子与语法,提升输入有效性?

A 模板让输入更随机
B 字典只用于内存 fuzz
C 字典提供有意义关键字,模板保证结构合法,提升输入有效性 ✓ 正确答案
D 字典与模板无作用
#

16. Fuzzing 崩溃的漏洞管理闭环,去重、复现、严重度评估与修复验证如何与安全团队协作?

A 去重、复现、分级、修复验证闭环,并与安全团队联动追踪 ✓ 正确答案
B 安全团队无需参与
C 漏洞无需分级
D 修复后无需验证
#

17. Web/API Fuzzing(wfuzz/ffuf/自动化 schema fuzz)与原生 Fuzzing 的差异与适用场景?

A 原生 fuzz 工作在 HTTP 层
B 两者完全一致
C Web fuzz 依赖编译插桩
D Web/API fuzz 工作在 HTTP 层以响应为信号,原生 fuzz 在代码层以崩溃为信号 ✓ 正确答案
#

18. Fuzzing 的停止条件与资源分配,覆盖率饱和、新增崩溃率下降时如何决定暂停持续模糊,避免无限消耗算力?

A 停止条件无意义
B Fuzz 应无限运行
C 覆盖率饱和说明仍需继续
D 覆盖率饱和与新增崩溃率下降时,应暂停或切换策略避免浪费算力 ✓ 正确答案