Our analysis confirmed the behaviour described in the threat library entry. Do not install it. Read the analysis and indicators →
Also reported by malext.io, reddit.com
EnZap
Confirmed member of a tracked malicious supply-chain campaign.
Analysis record
- Analysed
- 6 days ago
- Version
- v7.4.3.87
- Artifact
- SHA256 EDB…421
- Source
- Findings (non-IoC)
Is EnZap safe?
EnZap is a customer relationship manager that lives inside WhatsApp Web, adding labels, saved replies and contact lists to the chat window. The manifest asks Chrome for no browser permissions and no host permissions at all. The extension gets its reach from the page it runs on: background.js and a stack of content scripts under content/assets/js/ make fetch and socket.io connections while you have web.whatsapp.com open, which is how your saved contacts stay in step across machines. Two endpoints that show up in that code, app.wascript.com and api.statsigcdn.com, point at the vendor's own backend and at Statsig, a feature-flag service used by thousands of apps.
The scanner's louder hits are the obfuscation ones. OBFUSCATION-LARGE_BASE64 fires on funnil/assets/js/9cf42769-2ad5-4714-8614-9a2b4c455349.CgnacD38.js, and OBFUSCATION-FUNCTION_INDIRECT fires on content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289260.js. Both files are minified build output; the hash in the filename and the version string in the path mark them as generated artifacts. A hidden payload would need code nearby that decodes and runs it. Nothing in these bundles does that.
The twenty-two network hits are ordinary calls, NET-FETCH-background.js-137 among them. Socket.io inside a WhatsApp page is what real-time sync looks like. The endpoint list also carries entries like border.radius.circle and calls.function.arguments.delta, which are field names and CSS fragments lifted out of minified JavaScript. No registrar sells those. That is a pattern-matcher reading strings, and it is the same reason 432 IoCs and 754 code-smell hits landed on the pile.
None of that makes the extension harmless in an absolute sense. It reads your WhatsApp chats, and that is real access. What the scan did not turn up is any malware signature, any hidden executable, or any connection to a domain outside the vendor's own infrastructure and standard analytics. A chat CRM that works needs exactly the plumbing this one has.
Evidence ledger
Ranked by severity · findings with a source location link to the code viewer
YARA Rule Matches
16 rules| Severity | Rule | Hits | Files | Metadata |
|---|---|---|---|---|
| LOW | ServerHostnameNotVerified | 1 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289.js | - |
| LOW | LocalStorageShouldNotBeUsed | 15 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28925.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28924.jsfunnil/assets/js/68038811-0075-484f-8b19-297df42f51e1.CVYXH02z.js +12 more | - |
| LOW | credential env files | 30 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289114.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289260.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289106.js +27 more | - |
| LOW | postinstall persistence mechanism | 19 | funnil/assets/js/68038811-0075-484f-8b19-297df42f51e1.CVYXH02z.jscrm/assets/js/22224ae4-c9a0-456b-97d3-6f47a43e6f69.cO50aLre.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289128.js +16 more | - |
| LOW | postinstall file download | 55 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28921.jswhatsapp/wpp/index.jsfunnil/assets/js/770d23cd-9021-4aef-887e-d47811b5c322.B8_nURbH.js +52 more | - |
| LOW | NoUseEval | 1 | whatsapp/wpp/index.js | - |
| LOW | NoUseWeakRandom | 38 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289175.jscrm/assets/js/9dad81b5-b157-4788-80f8-467ec81980f7.Da0m4lTf.jsfunnil/assets/js/2e0cf7f6-e9bc-41e0-84b5-f570a0e461c8.B8VBrnTG.js +35 more | - |
| LOW | SQLInjection | 1 | fluxo/index.js | - |
| LOW | postinstall environment access | 111 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28948.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289185.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28983.js +108 more | - |
| LOW | postinstall network communication | 94 | fluxo/assets/js/createAudio.CLFqrCFJ.jsfluxo/assets/js/aacac57f-f9a2-4a7d-9569-51c193124758.BUttUo7e.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28944.js +91 more | - |
| LOW | OriginsNotVerified | 5 | fluxo/index.jsfunnil/assets/js/770d23cd-9021-4aef-887e-d47811b5c322.B8_nURbH.jsfluxo/assets/js/b89d7b82-41f7-4061-9bc0-ae95ae5cd0a2.BLiJgZ4E.js +2 more | - |
| LOW | postinstall crypto operations | 44 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d2895.jscrm/assets/js/modal.CMbmE-rI.jscrm/assets/js/index.DCTZnrKF.js +41 more | - |
| LOW | postinstall system command | 77 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28992.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289221.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28944.js +74 more | - |
| LOW | postinstall obfuscation | 83 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289237.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289262.jscrm/assets/js/index.D_abRHre.js +80 more | - |
| LOW | postinstall registry modification | 8 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289175.jsfunnil/assets/js/68038811-0075-484f-8b19-297df42f51e1.CVYXH02z.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d2895.js +5 more | - |
| LOW | postinstall file manipulation | 172 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28921.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28925.jsfluxo/assets/js/index.DWsmud50.js +169 more | - |
Publisher Evidence
Limited evidencePublisher identity, store signals, distribution reach, and warning signals used for context. Treat this as supporting evidence, not a clean bill of health.
Chrome does not expose the same publisher verification data as IDE stores, so this score is deliberately conservative.
11 evidence rows available.
Finding Categories
YARA Rules Matched
16 rules(754 hits)Requested Permissions
5 permissionsAI Security Report
AI Security Review
Evidence context: threat category none; evidence quality moderate.
EnZap bills itself as a CRM for WhatsApp Web, and the file layout backs that up. The manifest declares no permissions and no host permissions, so the extension's reach comes from content scripts injected into the WhatsApp page. Those scripts sit under content/assets/js/ as versioned bundles named v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289*. A version string plus a build hash in every filename is what a bundler emits, and it explains why one directory produces so many separate findings.
The network findings describe what those bundles do. NET-SOCKET_IO fires in v_7_4_3_87_...28912.js and v_7_4_3_87_...289149.js, the realtime channel a shared inbox needs. NET-JQUERY_AJAX fires in v_7_4_3_87_...28923.js, a legacy XHR path. NET-FETCH fires in background.js:137 and across a dozen content bundles, the ordinary way an extension talks to its backend. None of these findings name a destination. They record that HTTP machinery exists, which a chat CRM cannot do without.
Two obfuscation findings deserve their own paragraph. OBFUSCATION-LARGE_BASE64 fires on funnil/assets/js/9cf42769-2ad5-4714-8614-9a2b4c455349.CgnacD38.js, and OBFUSCATION-FUNCTION_INDIRECT fires on content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289260.js. A large base64 block inside a bundled asset is usually an inlined image, font or locale table. Indirect function calls are what every minifier produces when it rewrites direct references. Location is the part that matters: obfuscation is worth acting on when it shares a file with a malware match, and this scan recorded zero malware signatures. The CgnacD38.js blob would need a nearby decoder and an eval-style sink to be worth a second look. The file shows neither.
The remaining 432 IoCs and 754 code-smell hits are volume, and the endpoint list shows why. Alongside genuine hosts like app.wascript.com, api.statsigcdn.com and api.dev.atlassian.com, the extractor produced border.radius.circle, calls.function.arguments.delta, btn.glass, above.sm, below.sm and be.audio. Those are CSS fragments, object property chains and short strings lifted out of minified JavaScript. No registrar sells calls.function.arguments.delta. An extractor that turns property access into domains will also turn every fetch wrapper into a network finding, and this extension contains a lot of fetch wrappers.
A skeptic's case is straightforward: a tool that reads your WhatsApp conversations holds exactly the access a data thief wants, and an unreadable base64 blob is the obvious hiding place. That case is reasonable, and it is why this is not a clean bill of health. It is still not evidence. Nothing here targets a login domain, harvests cookies, or contacts a host outside the vendor's own stack and standard analytics. Closing the question would take one concrete step: decode the base64 region in funnil/assets/js/9cf42769-2ad5-4714-8614-9a2b4c455349.CgnacD38.js and read what comes out. Until then, the findings describe a chat tool doing chat-tool work, and the alarming totals come from a scanner counting minified libraries.
Key Reasons
- Zero malware signatures and zero malware findings across 1,211 total findings; the entire medium-severity tier is network plumbing (NET-FETCH, NET-SOCKET_IO, NET-JQUERY_AJAX) in versioned build output under content/assets/js/.
- OBFUSCATION-LARGE_BASE64 on funnil/assets/js/9cf42769-2ad5-4714-8614-9a2b4c455349.CgnacD38.js and OBFUSCATION-FUNCTION_INDIRECT on content/assets/js/v_7_4_3_87_...289260.js sit in minified bundles with no co-located malware match, decoder or eval sink.
- The endpoint list mixes real hosts (app.wascript.com, api.statsigcdn.com, api.dev.atlassian.com) with extractor artifacts that are not registrable domains: border.radius.circle, calls.function.arguments.delta, btn.glass, above.sm, below.sm, be.audio.
- 754 code-smell findings are generator noise on bundled JavaScript, and 432 IoCs follow from the same minified content.
- The extension's declared purpose (a WhatsApp Web CRM) accounts for reading the WhatsApp page and holding a realtime socket; the manifest requests no permissions or host permissions.
False Positive Considerations
- Minified/bundled JavaScript under content/assets/js/ producing multiplicative network and code-smell matches
- IoC extractor emitting property chains and CSS fragments (calls.function.arguments.delta, border.radius.circle, btn.glass) as domains
- Two obfuscation rules firing on build artifacts with no accompanying malware signature
- Code-smell rule volume (754) on a large dependency-heavy bundle
Reviewed 2026-10-12; recommended action: suppress false positive; model confidence 72%.
Chrome version history
Risk trend by version
15 analyzed versions. Each point is the latest successful scan for that version; failed zero-score scans are hidden. Dates are based on first seen by risky plugins.
Pick any point on the chart to explore that version's code below.
Source Code Not Available
Source code is not available for this version of the extension.
About This Extension
Frequently Asked Questions
Similar Extensions
Related extensions from the same publisher or marketplace
waSuper
[email protected]
Wa Elo IA
[email protected]
Whapro – Automação, CRM e Vendas no WhatsApp Web
[email protected]
Vende+
[email protected]
WaListall | O Melhor CRM para WhatsApp Web – Teste Grátis
[email protected]
InfiChat
[email protected]