# 1. Bandit(Python)、Brakeman(Ruby)、gosec(Go)的多语言 SAST A 三者都是适用于所有语言的通用工具 B 它们分别针对 Python、Ruby、Go 生态,能深入框架语义给出精准检测 ✓ 正确答案 C gosec 用于检测 Python 代码 D 多语言仓库只需运行一个工具即可
# 2. CodeQL(GitHub)的语义查询语言(QL)与 GitHub Security Advisories 的协同 A CodeQL 基于正则匹配漏洞 B QL 是字节码语言 C CodeQL 将代码编译为数据库,用声明式 QL 查询做语义分析,并与 Security Advisories 联动 ✓ 正确答案 D CodeQL 只能检测单一语言
# 3. OWASP Top 10 的 SAST 检测覆盖中 A01(Broken Access Control)、A03(Injection)、A07(Identification) A 注入类最适合污点分析,访问控制与认证缺陷静态覆盖有限,需配合 DAST 与人工测试 ✓ 正确答案 B SAST 能完全覆盖所有 OWASP Top 10 问题 C SAST 无法检测任何注入 D 访问控制缺陷完全无法由 SAST 检测
# 4. SAST(Static Application Security Testing)的三大支柱中 taint analysis、control flow、data flow A 污点分析只针对跨站脚本 B 三大支柱彼此独立,互不依赖 C 控制流分析完全取代数据流分析 D 污点分析跟踪不可信输入是否传播到危险 sink,依赖控制流与数据流支撑 ✓ 正确答案
# 5. Semgrep 的自定义规则(YAML DSL)与社区规则的工程价值 A Semgrep 规则只能使用内置规则,无法自定义 B Semgrep 规则必须用 C 语言编写 C 用 YAML DSL 可自定义匹配模式,配合社区规则实现可定制、可维护的检查 ✓ 正确答案 D 社区规则无法裁剪
# 6. SonarQube 的污点分析(taint analysis)引擎与 OWASP/SANS 规则 A SonarQube 无法做污点分析 B 污点分析结果不能用于质量门禁 C SonarQube 只有代码风格规则 D SonarQube 污点分析检测 source 到 sink 的路径,规则按 OWASP/SANS 分类并可进入质量门禁 ✓ 正确答案
# 7. 污点分析的 source/sink 扩展中如何为自研框架定义污点源(用户输入、反序列化)与污点汇聚点(SQL、命令执行),提升 SAST 对业务代码的检出率? A 为自研框架声明 source 与 sink 可让 SAST 识别框架输入到危险操作的完整路径 ✓ 正确答案 B 自研框架无需建模,通用 SAST 天然覆盖 C source 只指 HTTP 参数 D sink 无法自定义
# 8. SAST 的"基线"(baseline)中遗留代码的渐进修复 A 基线要求一次性修复所有历史问题 B 基线机制无法区分新旧代码 C 基线把存量问题记录为基线,只对新问题报警,支持渐进修复 ✓ 正确答案 D 设定基线后新问题也不报警
# 9. SAST 的"误报率"(false positive)治理中标记、抑制、例外 A 误报无需处理,忽略即可 B 抑制应永久生效无需清理 C 通过标记、抑制、例外机制治理,且抑制应可追溯、有原因、有时限 ✓ 正确答案 D 误报率与规则调优无关
# 10. SAST 的"门禁"(gate)中高危漏洞阻断合并 A 门禁应把一切问题都阻断合并 B 高危漏洞设为阻断条件,低危问题设为告警,并配合基线豁免避免误伤 ✓ 正确答案 C 门禁只用于发布环节 D 门禁结果无法自动阻断合并
# 11. Coverity(Synopsys)的跨过程(interprocedural)路径敏感分析,及其在 C/C++ 空指针、资源泄漏检测上的定位 A Coverity 沿调用链进行路径敏感分析,擅长 C/C++ 空指针与资源泄漏检测 ✓ 正确答案 B Coverity 只做单函数匹配 C Coverity 无法分析指针问题 D Coverity 只适用于 JavaScript
# 12. SAST 工具按分析深度分层中模式匹配(Semgrep)→ 数据流(SpotBugs)→ 跨过程符号执行(Coverity/CodeQL)的精度与成本权衡 A 模式匹配→数据流→跨过程符号执行,精度与成本逐步上升 ✓ 正确答案 B 分析越深,成本越低 C 所有层次精度相同 D 深度分析比模式匹配更快
# 13. 多工具编排(orchestration)中 ESLint 本地即时反馈、Semgrep PR 门禁、Coverity 夜间深度扫描的分层职责划分 A ESLint 即时反馈、Semgrep PR 门禁、Coverity 夜间深度扫描,成本与时效分层匹配 ✓ 正确答案 B 所有工具都应在 PR 阶段运行最深的扫描 C 工具越多功能越冗余,应只用一种 D 本地无需使用任何 lint 工具
# 14. SonarQube 与 SpotBugs 在 Java 项目的互补中源码级规则 + 字节码级缺陷检测的叠加价值 A SonarQube 分析源码结构与规范,SpotBugs 分析字节码发现隐藏运行时缺陷,互补叠加 ✓ 正确答案 B 两者分析对象完全相同,无需叠加 C SpotBugs 只能分析源码 D SonarQube 无法集成 SpotBugs
# 15. 将多工具结果聚合到统一格式(SARIF),以便在代码托管平台安全面板单点呈现与去重 A SARIF 是各工具私有格式,无法互通 B SARIF 是开放交换标准,可聚合多工具结果到统一面板并去重 ✓ 正确答案 C SARIF 只能由单一工具产生 D SARIF 与 JSON 无关
# 16. Coverity 的"缺陷密度"(defect density)基线建立与行业对比的使用方式 A 行业对比可直接作为绝对质量标准 B 缺陷密度与代码规模无关 C 缺陷密度 = 缺陷数 / 代码规模,可建立基线并与行业对比 ✓ 正确答案 D 缺陷密度只需计算一次,无需跟踪
# 17. 商业 SAST(Coverity、Checkmarx)与开源(Semgrep、SpotBugs)在规则可定制性、误报支持、成本上的取舍 A 商业工具总是优于开源工具 B 开源工具无法检测任何漏洞 C 商业工具深度分析与支持好但成本高,开源工具可定制且免费但需自行维护 ✓ 正确答案 D 商业工具无法定制规则
# 18. SAST 漏洞的修复闭环中从工单、修复、复扫到豁免的流程如何管理,如何防止同一漏洞在不同模块反复出现? A 修复完单点即可,无需管理流程 B 豁免应永久有效 C 闭环含工单、修复、复扫、豁免,并通过规则沉淀与根因治理防止复发 ✓ 正确答案 D 复扫无必要
# 19. ESLint 类型感知规则(type-aware,需 parserOptions.project)相较纯语法规则的增量价值与耗时代价 A 类型感知规则只做语法匹配 B 类型感知规则无需任何配置 C 类型感知规则基于跨文件类型信息发现语义问题,但需加载 tsconfig,耗时代价高 ✓ 正确答案 D 类型感知规则比纯语法规则更快
# 20. 工具链版本升级导致规则集变化、历史扫描结果不可比的治理(锁定版本、变更记录) A 升级后新旧结果必然可比 B 升级无需评估规则影响 C 应锁定版本、记录变更、灰度启用,保证结果可比且升级可控 ✓ 正确答案 D 新规则升级后应直接全量阻断
# 21. SAST 增量扫描(仅扫描 diff)与全量扫描在结果一致性上的差异与互补 A 增量扫描结果与全量完全一致 B 全量扫描只能在 PR 阶段运行 C 增量扫描快但可能漏掉跨文件影响,全量扫描完整但耗时,二者互补使用 ✓ 正确答案 D 增量扫描覆盖整个代码库
# 22. 多语言单仓库下用一条 pipeline 驱动多工具的 SAST 编排组织 A 按语言分派不同工具,统一 SARIF 输出并在单一面板聚合、去重 ✓ 正确答案 B 一个工具即可覆盖所有语言,无需编排 C 多语言仓库无法使用 SAST D 同一条 pipeline 只能运行一个工具