Open Source ·

VeloraDEX SDK installed macOS backdoor

@velora-dex/sdk 9.4.1 was published directly to npm with no matching source commit. Importing it fetched a macOS backdoor and registered launchctl persistence.

On April 7, 2026, an attacker pushed a malicious release of @velora-dex/sdk, the JavaScript toolkit used to integrate with the VeloraDEX decentralized exchange, directly to npm without ever touching the corresponding GitHub repository. The compromised version, 9.4.1, was a registry-only attack: developers reviewing the project's default branch would have seen nothing wrong.

Aikido researcher Charlie Eriksen reported the package on the project's GitHub tracker, and StepSecurity published a teardown. The diff in the tarball was small. package.json carried the version bump, and dist/index.js gained three prepended lines that base64-decoded a shell command and ran it through child_process.exec() as soon as application code imported the SDK. The command used curl to pull install.sh from 89.36.224.5, suppressing all output.

On macOS, the script created ~/Library/Application Support/com.apple.Terminal/, fetched either an ARM64 or Intel build of a binary named profiler from the same host, made it executable, and registered it as a persistent user service through launchctl submit -l zsh.profiler. The naming borrowed from Apple's own bundle conventions to blend into a developer laptop.

The trigger here was not an npm lifecycle hook. Passing --ignore-scripts, a common defense against malicious postinstall payloads, did nothing, because the malicious code ran at require('@velora-dex/sdk') time. StepSecurity told downstream operators to pin to 9.4.0 or earlier, remove the launchctl service and the dropped binary, and rotate any secret reachable from an affected machine.

Appendix · Affected releases

@velora-dex/sdk npm fixed 9.4.2
9.4.1 sha256 4f12d5cc…8fab89e5 download unavailable
  • StepSecurity identified 9.4.0 and earlier as safe versions; 9.4.1 was the compromised registry-only release.
  • npm's retained chronology shows 9.4.2 was published at 2026-04-07T22:25:50.515Z, about three hours after 9.4.1; its dist/index.js is byte-identical to the safe 9.4.0 file.

References

  1. @velora-dex/sdk Compromised on npm: Malicious Version Drops macOS Backdoor via launchctl Persistencestepsecurity.io
  2. SDK 9.4.1 compromised on npmgithub.com
  3. @velora-dex/sdk 9.4.1 loaded a macOS MINIRAT backdoor on import - Corgeacorgea.com
  4. Malicious VeloraDEX SDK Compromises Developer Machines via npm - Security Onlinesecurityonline.info
  5. StepSecurity analysis workflow run metadata for @velora-dex/sdk 9.4.1api.github.com
  6. Expired velora-dex-sdk-tarballs artifact metadataapi.github.com
  7. Exact workflow that packed and archived @velora-dex/sdk 9.4.1 and 9.4.0raw.githubusercontent.com

Source record: oss/attacks/velora-dex-sdk/meta.yaml