Date and Discovery: On March 19th, 2025, a package
os-info-checker-es6was found and initially found not to do what it claimed.- Package Information on npm: The package lacked a
READMEfile and showed limited information. It seemed to fetch system information.
- Package Information on npm: The package lacked a
- Smelly Code: The
preinstall.jsfile 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.txtwasconsole.log('Check');, raising more questions. - Dependent Packages: Several published packages depended on
os-info-checker-es6, including copies of other packages. None called thedecodefunction. - 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 theevalcall 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) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。