阅读: 5
网安圈最新高危风险:Ghost Bits(幽灵比特)编码绕过
安全检测环节判定为正常字符,后端执行却变为攻击 Payload。这样语义不一致问题,正成为 Web 防护致命缺口,对各类网络应用及核心资产构成严重威胁。
近期,业内披露了与 Ghost Bits相关的输入语义偏差风险。该风险的核心在于:安全检测链路与应用执行链路对同一输入的编码解释不一致,可能导致前置防护判定为无害,而后端执行阶段恢复为高风险语义。该问题本质属于“端到端语义不一致”而非单一组件缺陷。
什么是 Ghost Bits?
Ghost Bits(幽灵比特)可理解为:在字符到字节的收窄转换中,被静默丢弃但影响安全语义的高位比特。
以 Java 为例:
– char 是 16 位(UTF-16 code unit)
– byte 是 8 位
– 当代码出现 (byte) ch、ch & 0xFF、write(int) 仅写低 8 位等行为时,高 8 位会被丢弃
这意味着一个 Unicode 字符在某些链路里会“退化”为另一个字节值。攻击者可利用这种差异构造“前后语义不一致”的输入:前置检测看到A,后端执行却是B。
攻击者怎么绕过?
攻击者利用“高位静默丢弃”这一特性,将攻击的payload中关键ASCII字符经过精心构造的Unicode字符替换(低8位与payload保持一致),IPS看到的Unicode字符是无害的字符,而到后端Java服务器解码时高位截断只选取低位从而还原成攻击载荷,从而绕过IPS检测,并能真正执行命令。
能触发哪些高危漏洞?
绿盟 IPS 解决方案
绿盟IPS 引擎版本V5.6R11F08(支持编解码功能的设备)及以上支持Unicode类型的Ghost Bits编码绕过检测;默认配置下关闭,可按照下面配置后重启检测引擎生效(开启解码功能对性能有5-10%左右影响,与流量强相关):
以SQL注入检测为例
Unicode编码类型:
Payload: 1 or 1=1
Unicode编码后payload: %u0031%u0020%u006F%u0072%u0020%u0031%u003D%u0031
Ghost Bits编码后
payload: %u0131%u0120%u016F%u0172%u0120%u0131%u013D%u0131
pcap包:
产品侧告警:
业务 / 服务器必做加固
统一编码:全链路 UTF-8,禁止自动猜编码
输入规范化:Unicode 标准化,对高风险字段(用户名、文件名、SQL相关参数、路径)做 字符集白名单;明确拒绝“不可见控制字符”“异常混淆字符”“超预期字符集”。
数据库兜底:强制参数化查询,防注入最后防线
代码审计:删掉(byte)ch、ch & 0xFF、baos.write(ch)、DataOutputStream#writeBytes()等危险写法。应使用指定编码方式的写法处理文件。
收敛访问:公网服务限制访问源
Ghost Bits攻击的核心是检测与执行链路的端到端语义不一致,并非单一设备漏洞。绿盟科技建议各用户通过“设备升级+业务加固”双管齐下,彻底封堵安全缺口,保障企业网络与核心业务安全。绿盟科技也将持续跟进风险态势,优化防护方案,提供专业安全支撑。