Summary
Togoder Security scanned the npm package @walletconnect/core@2.25.0 on Oct 4, 2026. An AI review of 2 source files produced 3 medium, 7 low severity findings. The overall verdict is medium: the findings flag risky but common patterns (dynamic code, unsafe defaults, broad file or network access) rather than confirmed malware.
Findings 10
Telemetry data exfiltration to external server
NPS-7DB234715C71
The EventClient class (Ge) collects telemetry data including client ID, user agent, and pairing traces, then sends it to https://pulse.walletconnect.org/batch. While this is documented behavior for WalletConnect, it represents automatic exfiltration of device/session metadata to an external server on init.
Automatic network requests at initialization
NPS-3341647B8F14
The EventClient.init() method automatically sends an 'INIT' event with the client ID, user agent, and app domain to the pulse.walletconnect.org telemetry endpoint when telemetryEnabled is true (default).
Cryptographic key handling
NPS-F1D295403492
The code manages cryptographic keys (client seed, symmetric keys) and stores them in keychain/storage. This is expected for WalletConnect but could be a concern if keys are exfiltrated. The code does not appear to send keys to external servers except as part of normal protocol operations.
Credential/identifier storage in global scope
NPS-A79A05712319
The Core class stores the client ID under WALLETCONNECT_CLIENT_ID key in storage and sets a global reference (_walletConnectCore_) on globalThis, which persists sensitive session identifiers globally. Also accesses process.env.DISABLE_GLOBAL_CORE but this is benign config reading.
Dynamic iframe creation and postMessage listener
NPS-E66EB7FBCB44
The Verify class creates hidden iframes loading from verify.walletconnect.com and listens for postMessage events, then parses and validates JWTs. This is legitimate attestation flow but involves dynamic DOM manipulation and message handling that warrants review.
Global window function injection
NPS-5462E583B1F5
The Core constructor conditionally assigns window.downloadLogsBlobInBrowser, exposing a global function that can dump logs including client ID. This modifies the global window object outside package scope.
External network requests
NPS-C9460621A347
The code sends telemetry and event data to external WalletConnect servers (pulse.walletconnect.org, echo.walletconnect.com, verify.walletconnect.com) including client ID, user agent, project ID, and app domain. This is expected behavior for the WalletConnect SDK but constitutes data exfiltration to third-party servers.
Global state manipulation
NPS-1648463902FC
The code reads and writes to globalThis to store/retrieve a singleton Core instance, which could allow state manipulation or leakage between modules.
Environment variable access
NPS-D61297DE60DE
The code checks process.env.DISABLE_GLOBAL_CORE to disable global core functionality. This is a benign configuration check.
Dynamic code execution
NPS-B10A1826FDFC
The code uses setTimeout with string arguments (e.g., setTimeout(()=>{...}, delay)) which is safe, but also uses new Function indirectly? No, no eval or new Function detected. However, it does use dynamic import? No dynamic imports with computed paths. The code is a standard bundled SDK.
Files reviewed
| File | Verdict | What the reviewer saw |
|---|---|---|
| dist/index.cjs | medium | This is the legitimate WalletConnect Core v2.25.0 library that includes intentional telemetry to pulse.walletconnect.org, global state mutation, and dynamic network/iframe interactions—expected for a wallet relay SDK but worth noting for privacy-conscious deployments. |
| dist/index.js | medium | This is the official WalletConnect Core SDK, which performs expected network communication and key management; no overt malicious patterns were found, but it does exfiltrate telemetry data to WalletConnect servers. |
Affected version ranges
None of the 3 scanned versions of @walletconnect/core are flagged high or critical. The latest scanned version, 2.25.0, is medium risk. Only versions we have scanned are listed; unscanned versions between them are not covered.
| Versions | Verdict | Count | Range | Top findings |
|---|---|---|---|---|
| 2.21.0 – 2.25.0 | Needs review | 3 | >=2.21.0 <=2.25.0 | Telemetry and data collection; Cryptographic key handling |
| 2.19.0 – 2.19.1 | Not scanned | 2 | >=2.19.0 <=2.19.1 |
Full list, including published versions not scanned yet: version ranges API.
Scanned versions of @walletconnect/core
Frequently asked questions
Is @walletconnect/core safe to use?
No confirmed malware was found in @walletconnect/core@2.25.0, but the review flagged 3 medium, 7 low severity findings for risky patterns worth checking before you rely on it.
Does @walletconnect/core contain malware?
No malware was identified in @walletconnect/core@2.25.0 when Togoder Security scanned it on Oct 4, 2026. A new version can still introduce malicious code, so scan the exact versions in your lockfile.
How was @walletconnect/core checked?
Togoder Security downloaded the published npm package and had an AI model read its 2 source files, looking for install scripts, credential access, network exfiltration, obfuscation, backdoors and crypto-wallet theft. The results are cached by file hash and shown here.
How do I scan @walletconnect/core together with the rest of my dependencies?
Upload your lockfile at https://security.togoder.click/scan or call the API documented at https://security.togoder.click/api-docs. Files that have already been scanned, like the ones in @walletconnect/core@2.25.0, cost nothing.