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

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

工作原理

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

针对不同环境的两个版本

代码库提供两个版本:

  • 版本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,虽然文件看似空白,但能正常输出结果。

版本特性对比

特性 版本1(eval) 版本2(import)
隐形效果 100% 100%
CommonJS支持 原生 有限
ESM支持 无 完整
顶层await 不支持 支持
执行方式 同步 异步
解码器长度 短 长

安全威胁分析

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

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

相关推荐
骇客野人4 分钟前
Java BIO / NIO / AIO 完整详解 + 编程技巧
java·开发语言·nio
霸道流氓气质7 分钟前
OpenTelemetry 入门与实战:Java Agent、Spring Boot Starter与LLM调用追踪示例
java·开发语言·spring boot
杨杰39811 分钟前
我给嵌入式设备写了个 6MB 的 JavaScript 运行时(xuan)
javascript
波力海苔夹心脆67512 分钟前
C# 机器视觉实战:单相机引导机械手精准贴合,从拍照、偏差计算(平移+旋转)到坐标补偿全解
开发语言·经验分享·数码相机·c#·视觉检测·.net
外收内放31 分钟前
Python基础语法练习题(62原始版本及其优化版本)
开发语言·python
马剑威(威哥爱编程)33 分钟前
【AI全栈后端12-12】Spring Boot 3.x 到 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·开发语言·spring boot·后端
三月微暖寻春笋43 分钟前
【和春笋一起学C++】(七十二)类模板
开发语言·c++·实例·类模板·使用类模板·数组模板
释厄6231 小时前
智能体释放度子集律——文本 ⊂ 音频 ⊂ 视频⊂ 游戏
开发语言·游戏·microsoft·音视频
Sarvartha1 小时前
Object 类
java·开发语言
j7~1 小时前
【C++ 标准项目】发布订阅消息队列 (篇七):项目创建与基础工具模块搭建
开发语言·c++·log4j·uuid·protobuf·helper工具·消息定义类型和交换机类型定义