误报
TL;DR
在安全领域,误报是指工具报告了一个实际上并不存在的问题。
什么是误报?
误报是指安全工具报告了一个实际上并不存在的问题。
简单例子:
- 实际问题:烟雾报警器因为有火灾而响起。
- 误报:烟雾报警器因为烹饪时的蒸汽而响起。
警报是真实的,但实际上并没有危险。
为什么误报是个问题
误报不仅仅是浪费时间。随着时间的推移,它们可能导致真正的问题。
它们导致:
- 浪费时间修复不存在的问题
- 安全团队和开发团队之间的挫败感
- 因为忽视了真正的问题而导致的更高风险
为什么会发生误报
安全工具被设计得很谨慎。它们宁愿发出过多的警告,也不愿错过真正的攻击。
常见原因:
-
缺乏上下文
工具发现了一个硬编码的密码,但它只在测试文件中。
-
复杂代码
工具认为用户输入不安全,但代码已经对其进行了清理。
-
旧规则
新的安全软件看起来像是旧的威胁。
-
规则过于宽泛
例如,标记每次使用 eval(),即使它是安全的。
误报的真正成本
真正的问题在于过多的警报积累起来时。
- 团队不再关注警报。
- 构建和发布速度减慢。
- 技术娴熟的工程师浪费时间审查虚假的问题。
误报与漏报
| 术语 | 含义 |
|---|---|
| 真阳性 | 正确发现了一个真实的问题 |
| 误报 | 报告了一个问题,但实际上并不存在 |
| 真阴性 | 正确忽略了安全的代码 |
| 漏报 | 漏掉了一个真实的问题(这很危险) |
相关术语
常见问题
我如何知道警报是否为误报?
您应该审查代码以确定是否有真实用户可能触发该问题。
工具可以做到零误报吗?
不能。目标是减少误报,而不是完全消除它们。
我是否应该停止使用误报较多的工具?
不应立即停止。大多数工具需要调整以适应您的代码库。