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
WAPIN
Confirmed member of a tracked malicious supply-chain campaign.
Analysis record
- Analysed
- Yesterday
- Version
- v7.4.3.87
- Artifact
- SHA256 CE9…346
- Source
- Findings (non-IoC)
Is WAPIN safe?
WAPIN is a customer-management add-on for WhatsApp Web. Its code opens a live connection with Socket.IO and talks to the developer's own host, app.wascript.com, which is what a chat CRM needs to sync contacts and replies. The scan recorded no special browser permissions and no host permissions for the extension.
Most of the matches come from the libraries WAPIN ships. A finding called NET-JQUERY_AJAX points at ordinary jQuery request code, and NET-SOCKET_IO points at the live-connection library, in files like content/assets/js/v_7_4_3_86_085ff17f-7684-4a41-bfdd-8bd9d5293bb212.js. Every chat client contains both. If that code were stealing anything, it would be sending data to a specific address, and nothing in the scan points anywhere except the developer's own service. Two obfuscation flags, including OBFUSCATION-LARGE_BASE64 in funnil/assets/js/ed6113f2-bc09-4421-a453-bbbd66fe9488.DCssQ7AT.js, mark an inlined asset blob and the indirection a minifier leaves behind.
The scanner also reported hundreds of indicators that turn out to be CSS values and code fragments. Border.radius.circle, btn.glass and calls.function.arguments.delta were read as web addresses when they are design tokens and a field name from an API response. That kind of mismatch is why the total looks alarming while the substance is thin, and across more than a thousand matches there were no malware signatures at all.
What matters for you is simpler. WAPIN can see whatever chats you have open, so the company behind app.wascript.com is what you are trusting. The code shows no sign of taking that data anywhere you did not ask it to.
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 | postinstall environment access | 111 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289167.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289142.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289122.js +108 more | - |
| LOW | postinstall network communication | 94 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28930.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289238.jsbackground.js +91 more | - |
| LOW | OriginsNotVerified | 5 | fluxo/assets/js/b89d7b82-41f7-4061-9bc0-ae95ae5cd0a2.BLiJgZ4E.jsfluxo/index.jscrm/assets/js/b3c3d2a2-f432-4ecd-a3f4-0b4582cc4a6c.B8_nURbH.js +2 more | - |
| LOW | postinstall crypto operations | 44 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28944.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28922.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28958.js +41 more | - |
| LOW | postinstall system command | 77 | fluxo/assets/js/createAudio.CLFqrCFJ.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28910.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28937.js +74 more | - |
| LOW | postinstall obfuscation | 83 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28927.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289231.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289138.js +80 more | - |
| LOW | postinstall registry modification | 8 | crm/assets/js/5e35787c-36b2-4a56-8ea4-4e0a75aa6943.D2Np3EBj.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289149.jsfunnil/assets/js/68038811-0075-484f-8b19-297df42f51e1.CVYXH02z.js +5 more | - |
| LOW | postinstall file manipulation | 172 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28968.jscrm/assets/js/index.2_CAfuE5.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28935.js +169 more | - |
| LOW | postinstall file download | 55 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289195.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289235.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d28912.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-3a9d8748d289260.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d2899.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289.js +35 more | - |
| LOW | SQLInjection | 1 | fluxo/index.js | - |
| LOW | credential env files | 30 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d2899.jscontent/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289106.jscrm/assets/js/b15575b9-e8eb-4d64-83b8-37d47f2b0b0a.BbRllemT.js +27 more | - |
| LOW | postinstall persistence mechanism | 19 | content/assets/js/v_7_4_3_87_0a650f0a-57a6-4989-860e-3a9d8748d289200.jscrm/assets/js/22224ae4-c9a0-456b-97d3-6f47a43e6f69.cO50aLre.jscrm/assets/css/style.css +16 more | - |
| 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-3a9d8748d28927.jsfunnil/assets/js/68038811-0075-484f-8b19-297df42f51e1.CVYXH02z.jsfluxo/assets/js/emoji-picker-react.esm.LrTXoimj.js +12 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.
WAPIN describes itself as a CRM for WhatsApp Web, and its files match that description. The extension ships a background.js plus two content script trees, content/assets/js/ and funnil/assets/js/, and the network findings inside them are the ordinary plumbing of a chat client: NET-SOCKET_IO at content/assets/js/v_7_4_3_86_085ff17f-7684-4a41-bfdd-8bd9d5293bb212.js:15, NET-JQUERY_AJAX at content/assets/js/v_7_4_3_86_085ff17f-7684-4a41-bfdd-8bd9d5293bb223.js:13, and a dozen NET-FETCH hits across the same directory plus background.js:137. Socket.IO and jQuery are the libraries a chat CRM uses to hold a live connection and poll a backend. None of these findings names a destination host, so they describe capability, the ability to talk to a server, rather than any specific data path out.
The endpoint list is where the noise becomes plain. Alongside app.wascript.com, which reads as the vendor's own service, the scanner reports border.radius.circle, color.border.accent.orange, btn.glass, artboard.phone, above.sm, calls.function.arguments.delta and avatar.online. Those are CSS design tokens, utility class names and a streaming API field name lifted out of minified JavaScript, and the extractor matched dot-separated identifier chains as if they were hostnames. api.statsigcdn.com and the Atlassian API hosts carry the same problem one step removed: they arrive from bundled third-party code and embedded strings, not from code that posts chats anywhere.
Obfuscation accounts for two findings. OBFUSCATION-LARGE_BASE64 in funnil/assets/js/ed6113f2-bc09-4421-a453-bbbd66fe9488.DCssQ7AT.js:1 is a base64 blob, which in a webpack-style asset build is usually an inlined font, image or JSON payload. OBFUSCATION-FUNCTION_INDIRECT in content/assets/js/v_7_4_3_86_085ff17f-7684-4a41-bfdd-8bd9d5293bb2259.js:1 matches the call indirection any minifier produces. Neither sits beside a malware match. The scan returned zero malware family signatures of any kind across 1,201 findings, and zero critical or high severity items. What remains is 754 code-smell hits and 422 indicator matches, the documented noise floor of bundled JavaScript.
A skeptic would push back hard here, and reasonably. WAPIN reads WhatsApp Web, so every message, contact and group name a user has open sits within its reach, and it opens a socket to a third-party domain. That is a genuine capability. It is also why we treat this as a powerful extension that asks for trust rather than as a harmless one, and why the destination of that Socket.IO channel sits outside what static reading can settle. What the code does show is the absence of harvesting behaviour: no login-domain indicators, no cookie reads paired with transmission, no file reading, and no malware signature anywhere in the tree. The count is high because 50-odd bundled libraries each trip their own generic rules, which multiplies one benign pattern into hundreds of rows. One limitation is worth stating plainly: the recorded permission and host_permission lists come back empty, so we cannot compare what WAPIN asks for in its manifest against what its scripts do. That gap, not the finding volume, is the thing to check on the next release.
Key Reasons
- Zero malware signatures and zero critical or high severity findings across 1,201 matches in a versioned, identifiable release
- Network findings are library-typical for a chat client: NET-SOCKET_IO, NET-JQUERY_AJAX and NET-FETCH in content/assets/js/ and background.js:137, none naming a destination host
- Reported endpoints include CSS design tokens and code fragments (border.radius.circle, btn.glass, calls.function.arguments.delta, above.sm), showing extractor false positives rather than real hosts
- Obfuscation flags are an inlined base64 asset in funnil/assets/js/ed6113f2-bc09-4421-a453-bbbd66fe9488.DCssQ7AT.js and minifier indirection in content/assets/js/v_7_4_3_86_085ff17f-7684-4a41-bfdd-8bd9d5293bb2259.js, with no malware family co-located
- Publisher is reachable at [email protected] and the extension has only 21 users, a poor hiding place for deliberate malware
False Positive Considerations
- 754 code-smell findings from generic rules matching bundled npm libraries (Node patterns, env vars, eval-style constructs)
- 422 IoC matches that include minified identifier chains and CSS token strings misread as domains
- Obfuscation rules firing on an inlined base64 asset blob and webpack-style function indirection
- High finding count amplified by many bundled libraries each tripping its own YARA and IoC rule
Reviewed 2026-10-10; recommended action: monitor; model confidence 75%.
Chrome version history
Risk trend by version
16 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]