2024-03-04 Cloudflare announces Firewall for AI
关注问题:
- 传统的WAF功能能够保护web和api安全,但是随着LLM等AI模型等出现,保护这些AI相关应用等安全是一个新出现的问题
- 虽然AI应用是新的场景,但是以往的攻击方法也能够直接用在AI应用上,如 Injection、data exfiltration
- 以往WAF的功能在新的AI应用场景上也能够使用,如 Rate Limiting、Sensitive Data Detection
AI应用与传统Web应用的区别:
- 传统web应用是行为预定义的,如交易接口定义清楚了交易账户与行为;AI应用是行为为定义的,每次调用都是用户自主的交互,返回的数据都是不同的,甚至相同的prompt给回的结果都不一样;
- 传统web应用对于后台数据的控制是隔离的,通过应用程序和database隔离开;AI应用中,数据本身也是AI模型的一部分,应用程序和数据并没有分离开;
Firewall for AI 能力
- 首先考虑模型训练与部署过程的攻击预防;训练数据的敏感数据检测与模型访问权限的控制应当做好,以预防训练期间的攻击;根据模型部署方式的不同(内部部署、公开访问、产品应用),主要区分在于对攻击流量的过滤或屏蔽行为;
- 模型部署后,考虑用户输入的攻击防护;如客户输入文本的敏感信息检测、用户访问的 Rate Limiting 限制;
- 模型部署后,考虑模型输出内容的防护;如训练数据中有内部敏感数据,则模型可能输出内部机密数据(或者是不符合预期的输出,如攻击性语言),对这些数据进行过滤或屏蔽;
具体能力实现方案
- 模型训练数据扫描器:允许客户定义敏感信息规则或固定扫描器
- 模型部署过程访问控制:AI应用权限控制(auth token)与攻击流量行为控制能力
- 用户输入:允许客户自定义规则进行输入扫描、限流访问等
- 模型输出:通过敏感词、重要信息(手机、账户等)规则检测、机器学习评分等,综合判定输出的攻击性,进行返回流量隔离
- Firewall 配置:允许从JSON输入、HTTP报文指定字段等进行输入检查,允许客户进行流量行为控制;
- 对于用户输入、用户输出的敏感信息的检测,有可用规则库、自定义规则信息、机器学习打分模型等多种路径,最终决定攻击检测;
2024-07-25 Making WAF ML models go brrr: saving decades of processing time
能力分享:
WAF Machine Learning models 5.5x faster, reducing execution time by approximately 82%, from 1519 to 275 microseconds.
WAF Attack Score System Design
WAF ML System 工作流程:
- 接收原生HTTP请求;
- 对报文解码,如空格等恢复回明文用作展示;将HTTP报文转为payload,即需要评估检测的键值对;
- 对 encoded(非明文)的 payload 进行特征化,即根据词典进行 text -> vector 转换
- 应用多个机器学习模型对特征向量进行分类,辨别多种攻击的可能性即得分;分别判别 sqli、XSS攻击等;
- 汇总多个模型的鉴别结果,得到一个总的攻击可能性得分,判别攻击,进行流量控制;
提升 WAF ML System 执行效率的方案:
Feature extraction optimizations
WAF ML System 的第三步的优化,即 payload text -> vector 优化
其过程可以视为:对 text 以固定 window-size 进行滑动编码,在 vocab 中查询 n-gram 文本的数据,转为一个 number ,最终将 text 变为一个向量 vector
因此,这个过程耗时最多的就在于 n-gram -> number 的查询操作,通常是将 vocab 存储在一个 HashMap<&[char; 3], i32> 的哈希表中,不断地进行查询;
文章提出一些对于这个哈希查询的优化方法,就算是用 rust match 的形式,让 rust 编译器帮助进行优化,都能提升50%的时间效率:
#[inline]
const fn norm_vocab_lookup(ngram: &[u8; 3]) -> usize {
match ngram {
b"abc" => 1,
b"def" => 2,
b"wuq" => 3,
...
_ => 0,
}
}``
Model inference optimizations
有了 feature vector 后,输入机器学习模型进行分类;这一过程有执行时间优化的可能;
注意:因为前面已经将 payload text 转为统一长度的 vector (padding 或 spliting),因此输入长度不再是影响这个过程的因素,只考虑单个 feature vector 执行分类的耗时;
feature vector -> classification result 各阶段耗时
此过程耗时最多的是 vector 的矩阵相乘的操作,即输入的 feature vector 经过特征矩阵相乘,到特征向量空间再分类的过程;
此矩阵相乘耗时的原因:
- 对于特征矩阵的获取与相乘操作,都是每次取特征矩阵的向量,完成相乘,保存结果,没有缓存特征矩阵;
- 对于一组数据,如十几个特征向量同时输入模型,是以一个 for 循环分别计算特征矩阵相乘,缺少并行计算;
针对以上问题,对机器学习 Inference 阶段引入 XNNPACK 包,以优化模型 Inference 阶段
Caching inference result
对于机器学习模型结果的缓存优化;
L-sharp 原则:短时间内,不同 HTTP 报文尽管 body 会有不同,但是 HTTP Header、User Agent、URL Path 等 payload 重现几率较大;
因此,如果重复对这些重现的 payload 进行检测判断,会影响系统效率;考虑根据 LRU 缓存算法,这些 payload 的内容与检测得分缓存起来,重现时直接读取得分结果进行评估,而不是重复输入到 ML 模型;
在 Nginx 处引入 lua-resty-mlcache 完成这个缓存的功能,以提升整个系统的效率;
2024-09-27 AI Everywhere with the WAF Rule Builder Assistant, Cloudflare Radar AI Insights, and updated AI bot protection
AI Assistant for WAF Rule Builder - AI 辅助 WAF 规则构建
通过 AI 助手,输入自然语言即可辅助生成 WAF 规则;
AI bot traffic insights on Cloudflare Radar - AI 爬虫检测雷达
检测 AI 爬虫,并进行流量行为控制;