利用零宽度字符的隐形JavaScript混淆工具InvisibleJS浮出水面

admin 2026-01-14 23:53:01 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: InvisibleJS是一款利用零宽度Unicode字符隐藏JavaScript代码的开源混淆工具,通过隐写术将源码映射为不可见字符,使文件在编辑器中看似空白却能执行。该工具虽为实验性质,但可能被滥用于网络钓鱼以规避检测,建议安全团队加强支持Unicode的扫描及行为分析能力以应对此类隐形威胁。 综合评分: 85 文章分类: 安全工具,Web安全,威胁情报,恶意软件,免杀


cover_image

利用零宽度字符的隐形JavaScript混淆工具InvisibleJS浮出水面

FreeBuf

2026年1月13日 18:31 上海

InvisibleJS是一款利用不可见零宽度Unicode字符隐藏JavaScript代码的新型开源工具,其潜在恶意用途已引发安全警报。该工具由开发者oscarmine托管在GitHub上,采用隐写术技术将源代码嵌入看似空白的文件中。

Part01

工作原理

该工具将JavaScript转换为二进制字符串,其中0映射为零宽度空格(U+200B),1映射为零宽度非连接符(U+200C)。运行时,一个小型引导加载程序会解码并执行隐藏的有效载荷,使得代码在VS Code等编辑器中肉眼不可见。

Part02

针对不同环境的两个版本

代码库提供两个版本:

  • 版本1(经典eval版):专为CommonJS和传统Node.js环境设计,原生支持require和module.exports
  • 版本2(现代import版):面向ES模块,使用动态await import()实现顶层await和exports,但需要.mjs文件或”type”: module配置

通过CLI隐藏代码非常简单:

  • 版本1:node hideV1.mjs -i input.js -o hidden.js
  • 版本2:node hideV2.mjs -i input.js -o hidden.js

执行时只需运行node hidden.js,虽然文件看似空白,但能正常输出结果。

Part03

版本特性对比

Part04

安全威胁分析

这种技术呼应了2018年以来的零宽度JS概念验证,现已被武器化用于网络钓鱼攻击。攻击者曾滥用类似的Unicode混淆技术(如使用韩文字符表示二进制)来隐藏脚本中的有效载荷,并通过反调试检查规避扫描器。

InvisibleJS可能加剧此类威胁,使攻击者能够在Node.js环境或Web应用中部署隐形恶意软件加载器,大大增加威胁检测难度。随着混淆工具的激增,安全团队必须加强支持Unicode的扫描和行为分析能力。虽然InvisibleJS目前仅作为实验性项目发布,但它凸显了编码创新在网络安全领域的双重用途特性。

参考来源:

InvisibleJS Tool Hides Executable ES Modules in Empty Files Using Zero-Width Steganography

InvisibleJS Tool Hides Executable ES Modules in Empty Files Using Zero-Width Steganography


#

#

#

推荐阅读

#

电台讨论


免责声明:

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

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

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

本文转载自:FreeBuf 《利用零宽度字符的隐形JavaScript混淆工具InvisibleJS浮出水面》

评论:0   参与:  0