面对越来越狡猾的 Web 攻击,传统 WAF(Web 应用防火墙,就是拦截恶意 HTTP 请求的那层过滤系统)往往在规则匹配和性能之间左右为难:规则太少抓不住变种攻击,规则太多又拖慢响应。但今天要聊的这个项目 Aethel-Core 给出了一个完全不同思路 —— 用逻辑编程语言 SWI-Prolog(一种擅长推理和回溯的声明式语言,写程序就像在描述事实和规则,而不是一步步命令计算机)来构建一个超轻量级的神经符号 WAF。它最大的卖点不是堆规则,而是把规则变成可推理的符号系统,让机器在内存里直接做逻辑演绎。
先说它怎么处理威胁特征。传统 WAF 通常把攻击签名存成字符串,匹配时做字符串比对;但攻击者可以用各种编码和嵌套来伪装,比如双重夹心混淆(把恶意 payload 拆开再藏进多层编码里)。Aethel-Core 的做法是把每条长签名拆成 3~4 个字符的 N-gram 原语(就是按步长滑动切出的短片段,类似于把一句话切成很多小碎块),再把这些碎片变成 Prolog 的事实和规则。当请求进来时,它通过动态回溯检查——就是在内存里做关系型查询,回溯到所有可能匹配的路径——而不是线性扫描。这样即使攻击者把 payload 拆得七零八落,系统也能通过拼碎片识别出恶意模式。
更绝的是它的归一化流水线。攻击者常用 URL 编码(%XX)、十六进制转义(\xXX 或 0xXX)以及 HTML 实体(< 变成 <)来绕过检查,Aethel-Core 内置了一个递归归一化器:先把深层解码全部展开,转成统一大小写,再用 N-gram 重新切分。这个递归过程会把多层嵌套的编码一层层剥开,直到露出原始攻击意图。这个过程本身也是 Prolog 的推理步骤,所以每条请求都会触发一串逻辑推断。
为了验证极限,作者用 30000 波“超混沌变异攻击”(v7.0 God Mode)去压测——你可以理解为一种疯狂变形的攻击洪流,每一波都随机改编码方式、插入干扰字符。结果相当惊人:系统在内存里动态激活了 276,717 条 N-gram 规则(这些规则是从 15,000 条原始威胁向量泛化出来的,相当于一个种子长出近 20 倍变体),安全完整性达到 100%,没有一条漏网。最让人意外的是性能:总推理执行次数 74,209,589 步,峰值推理速度达到 6,833,889 LIPS(每秒逻辑推理次数,就是 Prolog 引擎每秒能完成多少步逻辑推导),而它的内存占用只有约 2.718 MB——这比很多图片还要小。垃圾回收折腾了 20 次,却只用了 0.000 秒;JIT 哈希自动扩展到 4,096 个桶,获得 2,538.4 倍加速。在如此重负载下还能保持这么小的内存,完全颠覆了我对 Prolog 性能差的刻板印象。
更值得玩味的是它的定位:不只是防传统 Web 攻击,还覆盖了 Web3 领域的“三明治经济攻击”(一种在去中心化交易所里抢跑交易的操纵手法,通过夹在别人交易前后获利)、云基础设施漏洞(比如 kubelet CRI 劫持,即入侵 Kubernetes 节点上的容器运行时接口)、甚至针对大模型的对抗性攻击,如 LLM RAG 投毒(往检索增强生成的知识库里塞恶意内容,让 AI 回答被带偏)和模型权重投毒(比如 DeepSeek 权重被篡改)。这些场景都是近年来新出现的攻击面。同时系统支持把推理过程导出为 JSONL 格式,用于 LLM 指令微调——也就是说,这个 WAF 产生的攻击判定数据可以直接变成训练样本,喂给另一个 AI 模型。
说句实话,我第一眼看到这套方案觉得是炫技:用逻辑编程写安全产品,听起来就像用钢琴锯木头。但仔细想,它其实抓住了安全对抗的本质——攻击特征往往不是精确字符串,而是一种结构模式。Prolog 的规则表达式天然适合描述“A 出现在 B 附近,且 C 编码被解码”这类关系型特征,回溯机制又能应对多种组合。这种方式让规则不再是一张静态黑名单,而是一套可以推理、可以泛化的知识库。对于我们的启发有三点:如果你做安全工具,可以尝试用符号推理代替纯字符串匹配,尤其在对编码混淆敏感的场景;如果你做高性能服务,别被编程语言的固有印象束缚,Prolog 这类 DSL 在特定领域可能比 C++ 更省资源;如果你做 AI 安全,把防御系统产生的结构化日志变成训练语料,是构建自适应防线的一条捷径。当然,这个项目也不是没有坑:它目前公开的代码只是接口展示(activator.pl、decoder.pl),核心引擎和归纳规则是私有的,意味着你没法直接部署成完整产品;而且 SWI-Prolog 的生态和调试工具远不如主流语言丰富,团队要上手需要额外的学习成本。但作为概念验证,它已经证明了轻量级神经符号 WAF 的可行性——在几十 MB 的内存里,用一个逻辑引擎挡住几十万条变异攻击,这件事本身就挺让人兴奋。如果你正在做 API 网关或者边缘防护,不妨研究一下它的归一化递归思路,也许能帮你把误报率再压一个量级。
内容与图片版权归原作者所有 · 原文: https://github.com/lokinpendawa/aethel_core