Researchers Detail Malware Hidden in VS Code Dictionary Files

· Original article ↗

Summary

OpenSourceMalware describes a Contagious Interview campaign variant using VS Code tasks and an obfuscated dictionary file to install a persistent Node.js backdoor that retrieves code from ip-regions-check[.]vercel[.]app.

Key points

  • The report says a repository’s .vscode/tasks.json can trigger the initial infection when opened in VS Code; a disguised .vscode/spellright.dict file provides a backup delivery method.
  • The purported dictionary file contains obfuscated JavaScript rather than a normal word list.
  • The dropper writes a second-stage Node.js payload to ~/Programs_X64/main.js and installs packages including axios, request, and sqlite3.
  • The payload contacts ip-regions-check[.]vercel[.]app and evaluates the server’s response as JavaScript, enabling remote code execution.
  • The report describes hidden, persistent execution on Windows, Linux, and macOS.
  • OpenSourceMalware attributes the campaign to North Korean actors associated with Lazarus Group; the article does not provide independent confirmation of that attribution.

Article Details

Attack Vectors
  • A malicious repository includes a VS Code tasks.json file that runs when the folder is opened, delivering the initial payload.
  • The repository also contains heavily obfuscated JavaScript disguised as a SpellRight dictionary in .vscode/spellright.dict as a backup delivery method.
  • The campaign reportedly approaches developers with fake job offers or crypto-project coding assessments and sends malicious coding challenges or NPM packages.
Defensive Notes
  • Treat unusually large .vscode/spellright.dict files containing JavaScript as suspicious; legitimate custom dictionary files are normally plain text word lists.
  • Inspect repository .vscode/tasks.json files before opening a project in VS Code, especially for tasks configured to run on folderOpen.
  • Review unexpected hidden processes and files under ~/Programs_X64/, and investigate unexpected installations of axios, request, and sqlite3 in this context.
  • The article warns that the malicious task may run again when VS Code opens the directory; the dropper also reportedly establishes a background Node.js process.

Indicators of compromise

TypeIndicatorContext
DOMAINip-regions-check[.]vercel[.]appC2 domain used by the malware to retrieve JavaScript payloads.
IPV4146[.]70[.]41[.]188Listed by the article as an indicator of compromise for the campaign.
URLhxxps[:]//ip-regions-check[.]vercel[.]app/api/ip-check-encrypted/3aeb34a38Specific C2 payload endpoint identified in the article; the malware POSTs to it and executes the response.

MITRE ATT&CK

Threat Actors

Products

Tools

Countries

Industries

Related Articles