Java“幽灵比特位”(GhostBits)引发的waf通杀

admin 2026-04-30 04:58:04 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档揭示了Java生态中存在的’幽灵比特位’安全漏洞,即字符高8位被截断导致WAF可被全面绕过,影响Spring、Tomcat等主流组件并可能触发SQL注入、反序列化RCE等多种高危攻击。研究提出了升级受影响组件、优化WAF规则语义检测、代码层使用明确编码方式等修复方案。 综合评分: 85 文章分类: 漏洞分析,WEB安全,应用安全,解决方案,安全工具


cover_image

Java “幽灵比特位”(Ghost Bits)引发的waf通杀

迪哥讲事

2026年4月29日 10:09 四川

在小说阅读器读本章

去阅读

正文

Java 是目前企业级应用中最广泛使用的编程语言之一,其生态内的 Spring、Tomcat、Jackson、fastjson 等框架和组件被全球数以亿计的系统所依赖。2026 年 4 月,在 Black Hat Asia 2026 大会上,安全研究员 Zhihui Chen(1ue)与安全研究员 Xinyu Bai(浅蓝)发表了题为《Cast Attack: A New Threat Posed by Ghost Bits in Java》的研究成果。

该研究揭示了 Java 生态中一个系统性、长期被忽视的底层编码缺陷——”Ghost Bits(幽灵比特位)”,并证明攻击者可利用该缺陷对 WAF/IDS 等安全设备实现全面绕过,进而触发 SQL 注入、反序列化 RCE、文件上传、SMTP 注入、请求走私等多种高危攻击链。漏洞影响范围覆盖 Java 主流框架与中间件,利用门槛低,建议相关用户高度重视并尽快完成自查修复。

Ghost Bits/幽灵比特 成因:

Java 里的 char 是 16 位,但某些代码把它强行转成 8 位 byte 。

结果造成:高 8 位被悄悄丢掉,只剩低 8 位。 攻击者可以利用这个特性,让安全检查看到“奇怪中文/Unicode”,但底层真正执行时变成危险字符

比如:

陪 = U+966A
低 8 位 = 0x6A
0x6A = ASCII 字符 'j'

所以:

1.陪sp

在某些 Java 处理链里可能会变成:

1.jsp

WAF / 文件类型检查看到的是:

1.陪sp

服务器保存时却可能变成:

1.jsp

受影响组件

以下组件已被确认受 Ghost Bits 影响:

| 组件 | 漏洞类型 | | — | — | | Apache Commons BCEL | WAF 绕过 / 反序列化 RCE | | Jackson Databind | WAF 绕过 / SQL 注入 | | Fastjson | WAF 绕过 / 反序列化 RCE | | Apache Tomcat | 文件上传绕过(Webshell) | | Spring Framework | URL 解码绕过 / 路径穿越 | | Jetty | URL 解码绕过 / CRLF 注入 | | Undertow | URL 解码绕过 | | Vert.x | URL 解码绕过 | | Angus Mail | SMTP 注入 | | Apache HttpClient ≤ 4.5.9 | HTTP 请求走私(HTTPCLIENT-1974/1978) | | ActiveJ | HTTP CRLF 注入 | | Lettuce(Redis 客户端) | Redis 命令注入 | | Jodd | 路径穿越 | | XMLWriter | XML 标签注入 |

造成的影响

WAF/IDS 全面绕过: 攻击者通过 Ghost Bits 变形 Payload 可绕过绝大多数现有基于规则的 WAF 检测,使已有安全防护形同虚设。

触发多类高危漏洞:

  • SQL 注入:Jackson charToHex(ch & 255)截断,SQL 注入 Payload 隐写于 Unicode 字符中,WAF 无告警,后端还原并执行。
  • 反序列化 RCE:BCEL ClassLoader 解码、fastjson \u/ \x 转义均存在 Ghost Bits,可绕过 WAF 触发反序列化远程代码执行。
  • 文件上传绕过:Tomcat RFC2231Utility 处理文件名时截断高位,可将 .jsp 伪装为非敏感 Unicode 字符,绕过 WAF 上传 Webshell。
  • 路径穿越 / 认证绕过:Spring、Jetty、Undertow、Vert.x 等框架 URL 解码路径存在 Ghost Bits,可绕过 WAF 实现目录穿越;Openfire CVE-2023-32315 可借此绕过 WAF 防护直接利用。
  • 已知高危 CVE WAF 绕过:GeoServer CVE-2024-36401(CVSS 9.8)、Spring4Shell(CVE-2022-22965)等漏洞的现有 WAF 防护均可被 Ghost Bits 变体 Payload 绕过,直接触发 RCE。
  • SMTP 注入:Angus Mail 等邮件库存在 Ghost Bits,可将隐写 CRLF 序列还原为换行符,触发 SMTP 注入,实现邮件劫持或业务逻辑绕过(已在 Jira、Confluence 上复现)。
  • HTTP 请求走私 / XSS:Apache HttpClient(≤ 4.5.9)、JDK 原生 HttpServer 等组件同样受 Ghost Bits CRLF 影响。

解决修复方案

请关注上述各受影响组件的官方 Security Advisory,升级至已修复版本。

重点关注:

  • Apache Commons BCEL:升级至 6.12.0 及以上版本 Fastjson:升级至 2.x 系列最新版本
  • Apache HttpClient:升级至 4.5.10 及以上版本,或迁移至 HttpClient 5.x
  • GeoServer:升级至 2.28.3 及以上版本
  • Openfire:升级至 5.0.4 及以上版本

临时缓解方案:

  • WAF 规则:现有基于字符串特征的 WAF 规则对 Ghost Bits 变形 Payload 防护效果有限,建议在解码层面进行语义检测,或引入 Unicode 规范化预处理后再执行规则匹配。
  • 代码层面:排查自研代码中 (byte)ch、ch & 0xFF、baos.write(ch)、DataOutputStream#writeBytes() 等写法,改为使用 String.getBytes(StandardCharsets.UTF_8) 等明确指定编码的方式。
  • 输入验证:在输入校验阶段对关键字段(文件名、邮件地址、URL 参数、JSON 键名等)严格过滤非 ASCII 字符或进行 Unicode 归一化(NFC/NFKC)处理。
  • 网络层面:对暴露在公网的 Java 应用服务,在完成代码修复前限制访问来源,降低攻击面。
  • 如果你是一个长期主义者,欢迎加入我的知识星球,本星球日日更新,包含号主大量一线实战,全网独一无二,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款

往期回顾

#

如何利用ai辅助挖漏洞

#

如何在移动端抓包-下

#

如何绕过签名校验

#

一款bp神器

挖掘有回显ssrf的隐藏payload

ssrf绕过新思路

一个辅助测试ssrf的工具

dom-xss精选文章

年度精选文章

Nuclei权威指南-如何躺赚

漏洞赏金猎人系列-如何测试设置功能IV

漏洞赏金猎人系列-如何测试注册功能以及相关Tips‍

参考

1.Black Hat Asia 2026 议题:Cast Attack: A New Threat Posed by Ghost Bits in Java  作者:Xinyu Bai(@b1u3r / @iSafeBlue)、Zhihui Chen(@1ue1166323)、贡献者 Zongzheng Zheng(@chun_springX)

2.https://github.com/geoserver/geoserver/security/advisories/GHSA-6jj6-gm7p-fcvv

3.https://github.com/advisories/GHSA-gw42-f939-fhvm

4.https://spring.io/security/cve-2022-22965


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:迪哥讲事 《Java “幽灵比特位”(Ghost Bits)引发的waf通杀》

评论:0   参与:  0