![]()
Cast Attack
Java是当今程序开发中使用最广泛的编程语言之一。Java安全也普遍受到广大安全研究员的关注。当大多数人正在讨论反序列化、表达式注入等具体漏洞时,Black Hat Asia 2026所提出的《Cast Attack: A New Threat Posed by Ghost Bits in Java》则关注到了Java生态中一个长期被忽视的底层安全风险,由“Ghost Bits”所导致的针对IPS/WAF等安全产品的全面绕过,进而触发系统中所存在的诸如SQL注入、文件上传、远程代码执行等漏洞。
风险成因
该缺陷根源于Java类型转换时存在的高位截断现象。在Java中,char类型数据使用十六位进行表示,而byte类型仅使用8位。在将char类型数据转换为byte,默认会将高8位丢弃,仅保留低8位,被丢弃的部分,就是所谓的Ghost Bits。如中文字符“陪”,十六进制表示为0x966A,在丢弃高8位时,仅保留了0x6A,即英文字符“j”的ASCII编码。故在应用层看到的是“陪”,实际代码处理时会将输入当作“j”处理。面对WAF等基于文本匹配的安全设备时,这类攻击可轻松实现绕过。
攻击影响
此类攻击已经证明能够在Java生态中的关键组件中造成影响。以某些版本Spring框架所含有的路径穿越漏洞CVE-2025-41242为例,框架中处理器在遇到%xy字符时,会调用ByteArraryOutputStream.write(int),将char类型数据截断,仅保留低8位。如阮(U+962E)→0x2E='.'、严(U+4E25)→0x25='%'、灵(U+7075)→0x75='u'、丰(U+4E30)→0x30='0'、甲(U+7532)→0x32='2'、来(U+6765)→0x65='e'。因此攻击者所构造的字符串“阮严灵丰丰甲来”,被应用层理解为“.%u002e”。该ASCII字符串能够绕过应用内置的所有安全检查。
攻击复现
![]()
修复方案
1.临时缓解措施:
排查Java代码中(byte) ch,ch & 0xFF,DataOutputStream.writeBytes()等写法,避免隐式char -> byte截断。
在输入校验阶段前对输入进行统一的规范化,保证输入的语义与最终执行的语义一致。
若非必要,需在完成修复工作前避免在互联网上暴露脆弱的Java应用服务。
将受已知漏洞影响的Java组件按照官方建议,升级至已修复版本。
2.山石产品解决方案:
山石网科Web应用防火墙支持对相关攻击手法的有效防护,检测ID:1070310268。
山石网科是中国网络安全行业的技术创新领导厂商,由一批知名网络安全技术骨干于2007年创立,并以首批网络安全企业的身份,于2019年9月登陆科创板(股票简称:山石网科,股票代码:688030)。
现阶段,山石网科掌握30项自主研发核心技术,申请560多项国内外专利。山石网科于2019年起,积极布局信创领域,致力于推动国内信息技术创新,并于2021年正式启动安全芯片战略。2023年进行自研ASIC安全芯片的技术研发,旨在通过自主创新,为用户提供更高效、更安全的网络安全保障。目前,山石网科已形成了具备“全息、量化、智能、协同”四大技术特点的涉及基础设施安全、云安全、数据安全、应用安全、安全运营、工业互联网安全、信息技术应用创新、AI安全、安全服务、安全教育等10大类产品及服务,50余个行业和场景的完整解决方案。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.