每个IDS部署都有一个盲区。运行时间足够长的人最终都会发现它,通常是在最糟糕的时刻。这个盲区位于你编写规则覆盖的范围与攻击者实际选择的路径之间。
经典的Snort签名确实是令人印象深刻的工具。一条精心设计的规则可以以接近零的误报率捕获已知漏洞利用,开销在性能分析器上几乎不可见。但这种精确性来自特异性,而特异性本身就是问题所在。为CVE-2024-12345编写规则,你覆盖的是这个特定漏洞。如果攻击者修改载荷,通过略微不同的路径触发相同的脆弱代码?没有任何警报。
这不是对签名模式的批评。它完全按设计工作。签名编码了关于攻击在数据包层面具体外观的、可验证的知识,低误报率正是这种特异性的直接产物。真正的约束更难解决:暴露时间。从新漏洞在野外出现,到研究人员捕获、逆向工程、编写规则、在测试集上验证并通过更新通道发布,可能过去数天甚至数周。对于常见软件中被主动利用的漏洞,这个窗口并非假设。
2024年3月,Cisco Talos直接回应了这个问题,推出了SnortML——一个原生运行在Snort 3内部的机器学习检测引擎。几乎同时,安全运营领域更广泛的转型开始获得实质性牵引:代理型AI(agentic AI)进入网络防御。这两项发展作用于同一转变的不同层面,将它们放在一起审视,能看到单独观察任何一方都无法揭示的东西。
SnortML不是挂在Snort警报输出上的通用异常评分器,也不是每次请求都回传云端的服务。推理完全在本地设备上进行,与正常规则评估处于同一处理流水线, verdict在1毫秒内产生。
两个组件实现这一点。snort_ml_engine模块在启动时处理模型加载,将预训练的TensorFlow模型载入内存,使其在整个会话期间作为分类器可用。snort_ml inspector则通过Snort 3内部已有的发布/订阅接口,订阅来自现有服务检测器的数据流。当HTTP检测器完成请求解析,它会将URI查询字符串和POST body发布到事件总线。SnortML检测器接收后运行分类器,返回一个浮点数,表示内容包含漏洞利用尝试的概率。
神经网络无需见过特定攻击就能标记它。它已经在字节层面学会了SQL注入尝试的形态特征,而这种形态在不同变体间保持一致。
热门跟贴