Date and Discovery: On March 19th, 2025, a package
os-info-checker-es6
was found and initially found not to do what it claimed.- Package Information on npm: The package lacked a
README
file and showed limited information. It seemed to fetch system information.
- Package Information on npm: The package lacked a
- Smelly Code: The
preinstall.js
file of the package raised red flags with aneval()
call and base64-encoded input. The input was from adecode()
call on a native Node module, resulting in Unicode "Private Use Access" characters. - Reverse Engineering: The small Rust binary within the package didn't show expected OS information calls. The actual code found in
run.txt
wasconsole.log('Check');
, raising more questions. - Dependent Packages: Several published packages depended on
os-info-checker-es6
, including copies of other packages. None called thedecode
function. - Final Version: On May 7th, 2025, a new version of
os-info-checker-es6
(1.0.8) was released with a longer obfuscated string and theeval
call commented out. The decoded string contained malware code to fetch a Google Calendar link and a base64-encoded payload URL. - Indicators of Compromise: Compromised packages include
os-info-checker-es6
,skip-tot
,vue-dev-serverr
,vue-dummyy
, andvue-bit
. IP 140.82.54[.]223 and URL https://calendar.app[.]google/t56nfUUcugH9ZUkx9 are also associated. - Acknowledgement: Vector35 provided a trial license for their Binary Ninja tool to aid in the investigation.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。