Open Source 2019-03-23 · 74 days ·Backdoor, Credential Theft

electron-native-notify stole wallet seeds

electron-native-notify was published as useful npm code, then changed to steal Agama wallet seeds after the target adopted it.

Story

electron-native-notify was a staged dependency attack, not a random poisoned package. npm described the pattern plainly: publish a useful module, wait until the target adopts it, then update the same module with the payload.

The timing was the story. The package appeared on npm on March 6, 2019; on March 8, GitHub user sawlysawly added electron-native-notify@^1.1.5 to Komodo's EasyDEX-GUI application, which fed into the Agama wallet. Fifteen days later, version 1.1.6 introduced the first malicious payload.

The malicious code reached out to updatecheck.herokuapp.com, downloaded a second-stage script, and waited for wallet material. When a user entered an Agama seed or passphrase, the dependency sent that secret to the attacker's remote server. That made the npm package a wallet-key thief, not a general-purpose backdoor.

Agama 0.3.5 shipped after the malicious release, and later electron-native-notify versions stayed unsafe until npm removed the package. npm privately notified Komodo on June 4, 2019 and coordinated removal and user protection.

The package-level record matters because the same artifact explains the downstream Agama loss. The Agama record carries the fund movement and user impact; this record carries the poisoned npm object, the staged adoption, and the registry timeline.

Affected Artifacts

electron-native-notify

· repository · Source Archive
Observed
2019-03-23 to 2019-06-05
Compromised Versions
  • 1.1.6 - 1.2.2
Fixed
Not listed
Hashes
  • sha256:07f16d95f3c91dbd2ddf974d4b95d8dcec39b09b8906fa3b35e0a0da78fe8f76
  • npm's incident timeline identifies version 1.1.6 as the first malicious release; later package versions remained unsafe until the package was removed.
  • The package was introduced into EasyDEX-GUI before the malicious version was published, matching npm's useful-package-then-payload staging pattern.

Incident Context

Motive
Credential Theft
Attribution
Person
Cause
Malicious Package
Transitive
Yes
Actor
Individual Hacker

External References

Source record: oss/attacks/electron-native-notify/meta.yaml