Shai-Hulud

By GAYINT Staff

Hello my lovelies! Today we are covering the npm drama, caused by a certain strain of wormy being called "Shai-Hulud" after the big wormy in Dune. Apparently beggars can be choosers because this wormy only targets Linux and macOS environments, but it is okay to have standards.

The worm not-so-fren initially was detected on September 8th, caused by a successful targeted phishing campaign against the package maintainer “qix” with a classic “your MFA credentials need to be updated”. The threat actors then used qix’s access that they yoinked to insert their wormy into 18 npm popular packages managed by the maintainer that happened to be used by millions and was live for two hours which was enough for the wormy to be like

catte dot jpg getting railed with the caption Oh fuck yeah spread it

At the time of this super gay blog post, the wormy has "spread it" to at least 195 separate packages (including at least 25 of CrowdStrike’s and Google Gemini CLI packages) as developers desperately tried to get GitHub’s attention but they were initially too busy making a shit ton of money off all our code to respond to pleas from all you peasant developers.

Meanwhile, the wormy got busy digging through developers dirty secrets and coin. Like, literally. The malicious code focused mainly on three aspects:

  1. Spreading to other repos accessible to the victim using GitHub actions to maintain persistence
  2. Looking for those juicy secrets (cloud creds, tokens, passwords etc.) using a legit scanning tool, Trufflehog and dumping them to a new public repo under the victims account called "Shai-Hulud"
  3. Hijacking Etherum, Bitcoin, Tron, Litecoin, Solana and Bitcoin transactions in the browser

Thankfully, the threat actor was only after that easy money and this could have been a lot worse and tbh if you were using crypto in your browser… maybe don’t do that.

So far this is the current list of 195 packages (including multiple versions which is why some lists show ≈500) that were impacted:

1@ahmedhfarag/ngx-perfect-scrollbar20.0.20
2@ahmedhfarag/ngx-virtual-scroller4.0.4
3@art-ws/common2.0.22,2.0.28
4@art-ws/config-eslint2.0.4,2.0.5
5@art-ws/config-ts2.0.7,2.0.8
6@art-ws/db-context2.0.24
7@art-ws/di2.0.28,2.0.32
8@art-ws/di-node2.0.13
9@art-ws/eslint1.0.5,1.0.6
10@art-ws/fastify-http-server2.0.24,2.0.27
11@art-ws/http-server2.0.21,2.0.25
12@art-ws/openapi0.1.9,0.1.12
13@art-ws/package-base1.0.5,1.0.6
14@art-ws/prettier1.0.5,1.0.6
15@art-ws/slf2.0.15,2.0.22
16@art-ws/ssl-info1.0.9,1.0.10
17@art-ws/web-app1.0.3,1.0.4
18@crowdstrike/commitlint8.1.1,8.1.2
19@crowdstrike/falcon-shoelace0.4.1,0.4.2
20@crowdstrike/foundry-js0.19.1,0.19.2
21@crowdstrike/glide-core0.34.2,0.34.3
22@crowdstrike/logscale-dashboard1.205.1,1.205.2
23@crowdstrike/logscale-file-editor1.205.1,1.205.2
24@crowdstrike/logscale-parser-edit1.205.1,1.205.2
25@crowdstrike/logscale-search1.205.1,1.205.2
26@crowdstrike/tailwind-toucan-base5.0.1,5.0.2
27@ctrl/deluge7.2.1,7.2.2
28@ctrl/golang-template1.4.2,1.4.3
29@ctrl/magnet-link4.0.3,4.0.4
30@ctrl/ngx-codemirror7.0.1,7.0.2
31@ctrl/ngx-csv6.0.1,6.0.2
32@ctrl/ngx-emoji-mart9.2.1,9.2.2
33@ctrl/ngx-rightclick4.0.1,4.0.2
34@ctrl/qbittorrent9.7.1,9.7.2
35@ctrl/react-adsense2.0.1,2.0.2
36@ctrl/shared-torrent6.3.1,6.3.2
37@ctrl/tinycolor4.1.1,4.1.2
38@ctrl/torrent-file4.1.1,4.1.2
39@ctrl/transmission7.3.1
40@ctrl/ts-base324.0.1,4.0.2
41@hestjs/core0.2.1
42@hestjs/cqrs0.1.6
43@hestjs/demo0.1.2
44@hestjs/eslint-config0.1.2
45@hestjs/logger0.1.6
46@hestjs/scalar0.1.7
47@hestjs/validation0.1.6
48@nativescript-community/arraybuffers1.1.6,1.1.7,1.1.8
49@nativescript-community/gesturehandler2.0.35
50@nativescript-community/perms3.0.5,3.0.6,3.0.7,3.0.8
51@nativescript-community/sentry4.6.43
52@nativescript-community/sqlite3.5.2,3.5.3,3.5.4,3.5.5
53@nativescript-community/text1.6.9,1.6.10,1.6.11,1.6.12,1.6.13
54@nativescript-community/typeorm0.2.30,0.2.31,0.2.32,0.2.33
55@nativescript-community/ui-collectionview6.0.6
56@nativescript-community/ui-document-picker1.1.27,1.1.28
57@nativescript-community/ui-drawer0.1.30
58@nativescript-community/ui-image4.5.6
59@nativescript-community/ui-label1.3.35,1.3.36,1.3.37
60@nativescript-community/ui-material-bottom-navigation7.2.72,7.2.73,7.2.74,7.2.75
61@nativescript-community/ui-material-bottomsheet7.2.72
62@nativescript-community/ui-material-core7.2.72,7.2.73,7.2.74,7.2.75,7.2.76
63@nativescript-community/ui-material-core-tabs7.2.72,7.2.73,7.2.74,7.2.75,7.2.76
64@nativescript-community/ui-material-ripple7.2.72,7.2.73,7.2.74,7.2.75
65@nativescript-community/ui-material-tabs7.2.72,7.2.73,7.2.74,7.2.75
66@nativescript-community/ui-pager14.1.36,14.1.37,14.1.38
67@nativescript-community/ui-pulltorefresh2.5.4,2.5.5,2.5.6,2.5.7
68@nexe/config-manager0.1.1
69@nexe/eslint-config0.1.1
70@nexe/logger0.1.3
71@nstudio/angular20.0.4,20.0.5,20.0.6
72@nstudio/focus20.0.4,20.0.5,20.0.6
73@nstudio/nativescript-checkbox2.0.6,2.0.7,2.0.8,2.0.9
74@nstudio/nativescript-loading-indicator5.0.1,5.0.2,5.0.3,5.0.4
75@nstudio/ui-collectionview5.1.11,5.1.12,5.1.13,5.1.14
76@nstudio/web20.0.4
77@nstudio/web-angular20.0.4
78@nstudio/xplat20.0.5,20.0.6,20.0.7
79@nstudio/xplat-utils20.0.5,20.0.6,20.0.7
80@operato/board9.0.36,9.0.37,9.0.38,9.0.39,9.0.40,9.0.41,9.0.42,9.0.43,9.0.44,9.0.45,9.0.46,9.0.47,9.0.48,9.0.49,9.0.50,9.0.51
81@operato/data-grist9.0.29,9.0.35,9.0.36,9.0.37
82@operato/graphql9.0.22,9.0.35,9.0.36,9.0.37,9.0.38,9.0.39,9.0.40,9.0.41,9.0.42,9.0.43,9.0.44,9.0.45,9.0.46
83@operato/headroom9.0.2,9.0.35,9.0.36,9.0.37
84@operato/help9.0.35,9.0.36,9.0.37,9.0.38,9.0.39,9.0.40,9.0.41,9.0.42,9.0.43,9.0.44,9.0.45,9.0.46
85@operato/i18n9.0.35,9.0.36,9.0.37
86@operato/input9.0.27,9.0.35,9.0.36,9.0.37,9.0.38,9.0.39,9.0.40,9.0.41,9.0.42,9.0.43,9.0.44,9.0.45,9.0.46,9.0.47,9.0.48
87@operato/layout9.0.35,9.0.36,9.0.37
88@operato/popup9.0.22,9.0.35,9.0.36,9.0.37,9.0.38,9.0.39,9.0.40,9.0.41,9.0.42,9.0.43,9.0.44,9.0.45,9.0.46,9.0.49
89@operato/pull-to-refresh9.0.36,9.0.37,9.0.38,9.0.39,9.0.40,9.0.41,9.0.42
90@operato/shell9.0.22,9.0.35,9.0.36,9.0.37,9.0.38,9.0.39
91@operato/styles9.0.2,9.0.35,9.0.36,9.0.37
92@operato/utils9.0.22,9.0.35,9.0.36,9.0.37,9.0.38,9.0.39,9.0.40,9.0.41,9.0.42,9.0.43,9.0.44,9.0.45,9.0.46,9.0.49
93@teselagen/bio-parsers0.4.30
94@teselagen/bounce-loader0.3.16,0.3.17
95@teselagen/file-utils0.3.22
96@teselagen/liquibase-tools0.4.1
97@teselagen/ove0.7.40
98@teselagen/range-utils0.3.14,0.3.15
99@teselagen/react-list0.8.19,0.8.20
100@teselagen/react-table6.10.19,6.10.20,6.10.22
101@teselagen/sequence-utils0.3.34
102@teselagen/ui0.9.10
103@thangved/callback-window1.1.4
104@things-factory/attachment-base9.0.43,9.0.44,9.0.45,9.0.46,9.0.47,9.0.48,9.0.49,9.0.50
105@things-factory/auth-base9.0.43,9.0.44,9.0.45
106@things-factory/email-base9.0.42,9.0.43,9.0.44,9.0.45,9.0.46,9.0.47,9.0.48,9.0.49,9.0.50,9.0.51,9.0.52,9.0.53,9.0.54
107@things-factory/env9.0.42,9.0.43,9.0.44,9.0.45
108@things-factory/integration-base9.0.43,9.0.44,9.0.45
109@things-factory/integration-marketplace9.0.43,9.0.44,9.0.45
110@things-factory/shell9.0.43,9.0.44,9.0.45
111@tnf-dev/api1.0.8
112@tnf-dev/core1.0.8
113@tnf-dev/js1.0.8
114@tnf-dev/mui1.0.8
115@tnf-dev/react1.0.8
116@ui-ux-gang/devextreme-angular-rpk24.1.7
117@yoobic/design-system6.5.17
118@yoobic/jpeg-camera-es61.0.13
119@yoobic/yobi8.7.53
120airchief0.3.1
121airpilot0.8.8
122angulartics214.1.1,14.1.2
123browser-webdriver-downloader3.0.8
124capacitor-notificationhandler0.0.2,0.0.3
125capacitor-plugin-healthapp0.0.2,0.0.3
126capacitor-plugin-ihealth1.1.8,1.1.9
127capacitor-plugin-vonage1.0.2,1.0.3
128capacitorandroidpermissions0.0.4,0.0.5
129config-cordova0.8.5
130cordova-plugin-voxeet21.0.24
131cordova-voxeet1.0.32
132create-hest-app0.1.9
133db-evo1.1.4,1.1.5
134devextreme-angular-rpk21.2.8
135ember-browser-services5.0.2,5.0.3
136ember-headless-form1.1.2,1.1.3
137ember-headless-form-yup1.0.1
138ember-headless-table2.1.5,2.1.6
139ember-url-hash-polyfill1.0.12,1.0.13
140ember-velcro2.2.1,2.2.2
141encounter-playground0.0.2,0.0.3,0.0.4,0.0.5
142eslint-config-crowdstrike11.0.2,11.0.3
143eslint-config-crowdstrike-node4.0.3,4.0.4
144eslint-config-teselagen6.1.7,6.1.8
145globalize-rpk1.7.4
146graphql-sequelize-teselagen5.3.8,5.3.9
147html-to-base64-image1.0.2
148json-rules-engine-simplified0.2.1,0.2.4
149jumpgate0.0.2
150koa2-swagger-ui5.11.1,5.11.2
151mcfly-semantic-release1.3.1
152mcp-knowledge-base0.0.2
153mcp-knowledge-graph1.2.1
154mobioffice-cli1.0.3
155monorepo-next13.0.1,13.0.2
156mstate-angular0.4.4
157mstate-cli0.4.7
158mstate-dev-react1.1.1
159mstate-react1.6.5
160ng2-file-upload7.0.2,7.0.3,8.0.1,8.0.2,8.0.3,9.0.1
161ngx-bootstrap18.1.4,19.0.3,19.0.4,20.0.3,20.0.4,20.0.5
162ngx-color10.0.1,10.0.2
163ngx-toastr19.0.1,19.0.2
164ngx-trend8.0.1
165ngx-ws1.1.5,1.1.6
166oradm-to-gql35.0.14,35.0.15
167oradm-to-sqlz1.1.2,1.1.5
168ove-auto-annotate0.0.9,0.0.10
169pm2-gelf-json1.0.4,1.0.5
170printjs-rpk1.6.1
171react-complaint-image0.0.32,0.0.35
172react-jsonschema-form-conditionals0.3.18,0.3.21
173react-jsonschema-form-extras1.0.4
174react-jsonschema-rxnt-extras0.4.9
175remark-preset-lint-crowdstrike4.0.1,4.0.2
176rxnt-authentication0.0.3,0.0.4,0.0.5,0.0.6
177rxnt-healthchecks-nestjs1.0.2,1.0.3,1.0.4,1.0.5
178rxnt-kue1.0.4,1.0.5,1.0.6,1.0.7
179swc-plugin-component-annotate1.9.1,1.9.2
180tbssnch1.0.2
181teselagen-interval-tree1.1.2
182tg-client-query-builder2.14.4,2.14.5
183tg-redbird1.3.1,1.3.2
184tg-seq-gen1.0.9,1.0.10
185thangved-react-grid1.0.3
186ts-gaussian3.0.5,3.0.6
187ts-imports1.0.1,1.0.2
188tvi-cli0.1.5
189ve-bamreader0.2.6,0.2.7
190ve-editor1.0.1,1.0.2
191verror-extra6.0.1
192voip-callkit1.0.2,1.0.3
193wdio-web-reporter0.1.3
194yargs-help-output5.0.3
195yoo-styles6.0.326

bundle.js:

Exfiltration endpoint: https[://]webhook[.]site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7

Searches you can run:

Malicious workflow file: .github/workflows/shai-hulud-workflow.yml

What do I do?

  1. Search for indicators of compromise
  2. If detected or vulnerable version found, uninstall, clean npm cache, update to latest uncompromised version, find the malcious bundle.js, rotate secrets, search for ‘shai-hulud’ branches or repos to clean and run an audit.
  3. Use tools like Socket’s safe npm, safedep’s pmg or Akido’s SafeChain for future protection


  4. Updated: 17 September 2025