Flagged in the threat library: WaSteal

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

Chrome Web Store Verified

EnZap

by [email protected] · 31 users · 5.0 rating
c64cc231-7cc1-5786-b292-2975a0382630 | v7.4.3.87
65/ 100
MEDIUM risk
No change since v7.4.3.85
Threat verdict
Do not install

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

779 detail rows

YARA Rule Matches

16 rules
SeverityRuleHitsFilesMetadata
LOWServerHostnameNotVerified 1
content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289.js
-
LOWLocalStorageShouldNotBeUsed 15
crm/assets/js/emoji-picker-react.esm.aMh8OwYb.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d2895.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28924.js +12 more
-
LOWpostinstall file download 55
funnil/assets/ttf/Segoeuibolditalic.chunk.ttfcontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d2899.jsfluxo/assets/js/b89d7b82-41f7-4061-9bc0-ae95ae5cd0a2.BLiJgZ4E.js +52 more
-
LOWNoUseEval 1
whatsapp/wpp/index.js
-
LOWNoUseWeakRandom 38
crm/assets/js/b15575b9-e8eb-4d64-83b8-37d47f2b0b0a.BbRllemT.jscrm/assets/js/9dad81b5-b157-4788-80f8-467ec81980f7.Da0m4lTf.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d2899.js +35 more
-
LOWSQLInjection 1
fluxo/index.js
-
LOWpostinstall environment access 111
funnil/assets/js/comp.DyHpIB2X.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28948.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289189.js +108 more
-
LOWpostinstall 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-3a9d8748d289139.js +91 more
-
LOWOriginsNotVerified 5
fluxo/index.jsfluxo/assets/js/b89d7b82-41f7-4061-9bc0-ae95ae5cd0a2.BLiJgZ4E.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d2896.js +2 more
-
LOWpostinstall 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/emoji-picker-react.esm.aMh8OwYb.js +41 more
-
LOWpostinstall system command 77
content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289125.jsfluxo/assets/js/emoji-picker-react.esm.LrTXoimj.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289149.js +74 more
-
LOWpostinstall obfuscation 83
content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289149.jscrm/assets/js/index.C3nosisq.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289200.js +80 more
-
LOWpostinstall 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
-
LOWpostinstall file manipulation 172
crm/assets/js/index.CJ3d7GJf.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28976.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289213.js +169 more
-
LOWcredential env files 30
content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289114.jscrm/assets/js/b3c3d2a2-f432-4ecd-a3f4-0b4582cc4a6c.B8_nURbH.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289209.js +27 more
-
LOWpostinstall persistence mechanism 19
crm/index.jswhatsapp/wpp/index.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289128.js +16 more
-

Network Indicators

Concrete URLs, domains, IPs, emails, and hashes extracted from the analyzed artifact.

431 total

Loading network indicators

IoC detail rows are loaded outside the initial page render.

Publisher Evidence

Limited evidence

[email protected]

Publisher 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.

51
Noisy-finding weight
x1.00
Publisher domain
extensao.store
Observed
Store verification signal
Limited signal
Limited
Extension portfolio
174
Portfolio

11 evidence rows available.

Finding Categories

2
Obfuscation
22
Network
431
IoC Indicators

YARA Rules Matched

16 rules(754 hits)
ServerHostnameNotVerified LocalStorageShouldNotBeUsed postinstall file download NoUseEval NoUseWeakRandom SQLInjection postinstall environment access postinstall network communication OriginsNotVerified postinstall crypto operations postinstall system command postinstall obfuscation postinstall registry modification postinstall file manipulation credential env files postinstall persistence mechanism

Requested Permissions

5 permissions
tabs
Medium
unlimitedStorage
Low
storage
Low
alarms
Low
https://web.whatsapp.com/*
Low

AI 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.

Selected
65
Change since first
+4
Change from previous
No change
Versions:
First analyzed version
7.4.3.54
Jun 19, 2026
Risk range
60 to 73
Across analyzed versions
Latest analyzed version
7.4.3.87
Oct 10, 2026
Selected version
medium
Version
v7.4.3.87
6 days ago
Risk score
65
Findings
1212
Change vs previous
No change

Pick any point on the chart to explore that version's code below.

About This Extension

Com novas funcionalidades para Whatsapp web, você pode ter mais controle sobre seus leads além de prospectar mais clientes com envios em massa e exportação de contatos na EnZap. Crie um verdadeiro funil de CRM para vender mais. Características: ✔ Envio em massa para seus contatos ou contatos importados por CSV ✔ Crie Abas personalizadas, encontre facilmente seus contatos importantes Visão Kanban dos contatos do WhatsApp organize seus leads ✔ Envie mensagens para um número que não esteja na sua agenda ✔ Crie notas para cada contato dentro do contato ✔ Você tem que ligar de volta? Crie lembretes para cada contato ✔ Agende Reuniões no google agenda direto do seu WhatsApp ✔ Crie lembretes de forma simples e seja notificado no seu próprio WhatsApp Web ✔ Crie um banco de respostas rápidas para enviar com um clique ✔ Exporte todos seus contatos do WhatsApp ou contatos de grupos de WhatsApp ✔ Use em seu idioma nativo (português, espanhol, inglês) ✔ Borre as mensagens do seu WhatsApp web para criar vídeos tutorias ✔ Assistente AI — Sua inteligência artificial pronta para ajudar! Otimize seu tempo com um assistente inteligente, rápido e sempre disponível. Responda dúvidas, automatize tarefas, gere textos, traduções e muito mais com o poder da IA. Ideal para profissionais, equipes e quem busca praticidade no dia a dia. Importante: ✔ Aprovado na auditoria de segurança do Google Chrome ✔ Não usa banco de dados, tudo acontece no seu computador. EnZap é uma extensão independente do Chrome que adiciona recursos extras ao seu WhatsApp web, não fazemos parte do WhatsApp Inc., não temos contrato de uso ou licenças exclusivas. WhatsApp é a marca registrada da WhatsApp Inc.

Frequently Asked Questions