Janus把红蓝对抗搬进反序列化防御:16个部署的留出攻击成功率降到6.2%
核心概要
不安全反序列化让攻击者能借应用依赖里的方法链执行任意代码,而网关、应用、系统三层各自只看得到攻击的一部分。Janus 在隔离副本上让黑盒攻击智能体不断寻找绕过变体,防御智能体把每个已验证变体归纳成安全相关效果,再用反事实重放区分互补覆盖与冗余规则,联合选择并限定各层控制。在六个 Java 与 PHP 应用的 16 个部署上,留出攻击成功率降到 6.2%,而网关、应用、系统与跨层基线为 18.8%–55.0%,同时通过 98.4% 的正常功能测试。
深度剖析
反序列化防御不再由专家逐层手工拼装,而是针对具体部署自动合成一套网关、应用、系统三层协同的策略。 此前的防御通常只在单一执行点生效,对完整攻击链的可见性有限;把多层控制组合起来虽能互补,但需要大量专家工作来协调,才能既挡住新变体又不破坏正常功能。 在六个 Java 与 PHP 应用的 16 个部署上,Janus 把留出攻击成功率压到 6.2%,而 ModSecurity 加 OWASP CRS、Datadog RASP、OpenRASP、Kintsugi 与 Tetragon 这些基线落在 18.8%–55.0% 区间。
这套流程从一个已知利用出发,在隔离的离线副本上反复迭代,直到策略同时满足安全与功能门槛。 黑盒攻击智能体只能看到响应、时延和自控带外信号,据此调整方法链选择与载荷表示;防御智能体则把每次验证过的变体压缩成带关键参数的能力摘要,并借助反事实重放判断某条规则是唯一拦截者还是冗余。 在 16 个部署中,Janus 完全缓解了 13 个,48 个未见攻击者与部署组合里只有 5 个被攻破,正常功能测试通过率 98.4%,目标端点 P95 时延增加 6.9%。
最终冻结的策略只改配置、不改应用源码,并且只有在挡住全部已归档攻击、同时通过正常业务流程回归时才被接受。 单条规则单独看可以接受,组合起来却可能破坏合法工作流,因此候选配置必须整体通过训练工作流与延迟阈值检验。 在 Jenkins 的 CVE-2026-84645 运行中,冻结后的 v2 挡住了全部四个留出攻击并通过全部四项功能测试,而 CRS 只挡住一个重编码变体,两个 RASP 一个攻击也没挡住。
启示与展望
演示范围是六个 Java 与 PHP 应用中的 16 个(应用,CVE)部署,每个部署有一个训练种子攻击、四个留出攻击、12 条训练工作流和 4 项功能测试,防御只改配置、不改应用源码。作者提出,这套循环只需要后果判定器、控制目录和正常业务流程,因此模板注入与请求伪造是自然的下一步目标。
保护是经验性的而非被证明的,公开利用可能已进入模型训练数据,独立留出路径与未见攻击者只能部分抵消这一点。影响限制类规则仍让脆弱路径可达,冻结配置只是根因修复前的临时措施;基准只覆盖六个应用且仅一个 PHP 应用,因此报告逐部署结果而不做统计检验。合成在预算耗尽、连续多轮无新绕过或目录穷尽时停止,这些都不证明不存在绕过。
