CODE SECURITY
Sep 17, 2025

Inside the Shai‑Hulud NPM Supply Chain Attack

Amartya | CodeAnt AI Code Review Platform

Amartya Jha

Founder & CEO, CodeAnt AI

Inside the Shai‑Hulud NPM Supply Chain Attack
Inside the Shai‑Hulud NPM Supply Chain Attack
Inside the Shai‑Hulud NPM Supply Chain Attack

Table of Contents

On September 14, the JavaScript ecosystem was rocked by a massive npm 2.0 supply-chain attack. Security researchers are calling it one of the largest malware incidents ever to hit the npm registry.

Shai-Hulud npm Supply Chain Attack

Source: https://x.com/ReversingLabs/status/1967576545838694497 

TL;DR: What made “Shai-Hulud Attack” different

  • Self-spreading worm: The malware (nicknamed after the Dune sandworm) compromised 180+ open-source packages across multiple maintainers and kept spreading using stolen credentials.

  • Automatic propagation: Once inside a developer machine or CI, it harvested secrets and used them to publish more trojanized packages, turning the registry into a “trojan factory.”

  • High-profile impact: Popular public libraries (e.g., a color utility with ~8M+ monthly downloads) and internal packages from reputable companies were affected.

  • Credential theft at scale: NPM/GitHub tokens, API keys, and cloud creds were exfiltrated, enabling further compromise.

  • Ecosystem-level risk: A single tainted dependency rippled across projects with unusual speed and reach.

In this deep dive, we’ll break down:

  • How the Shai-Hulud npm supply-chain attack unfolded step by step.

  • Who was impacted and what was exposed.

  • Immediate and long-term actions engineering and security teams should take to mitigate damage.

  • Practical steps to fortify your software supply chain against future “npm 2.0”-style threats.

How the Shai-Hulud npm 2.0 Attack Unfolded

Researchers traced “patient zero” to an npm user named techsupportrxnt, whose package rxnt-authentication was published with a malicious payload on September 14, 2025. The worm began with the compromise of a single maintainer’s npm account (likely through stolen credentials) and used that access to push a trojanized update.

Shai-Hulud npm Supply Chain Attack timeline

Figure 1: Shai-Hulud npm Worm Timeline

Automatic execution: Once any infected package was installed by a developer or CI server, the malware executed immediately via a post-install script (a 3MB+ bundle.js) embedded in the package.

Aggressive secret harvesting: This script searched local machines and CI environments for secrets, npm authentication tokens, GitHub personal access tokens, API keys, and cloud credentials (AWS, GCP, etc.). To accelerate scanning, it even repurposed a legitimate secret-scanning tool, TruffleHog, to comb file systems and environments for sensitive keys.

Exfiltration & persistence: Stolen credentials were sent to an attacker-controlled server and a public GitHub repository named “Shai-Hulud,” which contained encoded data.json files of stolen secrets. It also implanted a malicious GitHub Actions workflow into victims’ repositories to persist beyond the initial infection, triggering on future CI runs to exfiltrate new secrets.

Exposure of private code: The malware attempted to make public copies of private repositories by appending “-migration” to repo names, likely to expose hardcoded secrets hidden in private codebases.

Self-propagation. With stolen npm publish tokens, the worm automatically:

  • downloaded the next package tarball,

  • injected the payload,

  • bumped version, and

  • Republished, compromising additional packages under affected scopes/orgs.

High-profile packages quickly became victims: the popular color library @ctrl/tinycolor, packages under the @nativescript-community namespace, multiple Angular/Ngx libraries, and even plugins under the @crowdstrike scope. By exploiting developer trust and automated publishing, Shai-Hulud turned the npm supply chain into a “trojan factory,” its code would download the next package tarball, inject malware, bump the version, and republish, compromising new projects in a loop.

Why this was new? This wasn’t a one-off backdoor. It was a worm that used the ecosystem’s automation to spread.

Shai-Hulud npm Supply Chain Attack compromised accounts

Figure 2: Worm Propagation

Now let’s look at the impact, which developers, packages, and organizations were caught in its net, and what security teams must do next.

Scope and Impact

Within ~24 hours of discovery, 187+ packages were flagged; subsequent analysis points to hundreds affected.

Who/what was hit (examples)

impact of Shai-Hulud npm Supply Chain Attack

Figure 3: Hundreds of Packages, Millions at Risk

1. High-profile victims: These weren’t obscure libraries. Popular tools across frontend and backend were hit. For example:

  • ngx-bootstrap (Angular UI library, ~300,000 weekly downloads)

  • ng2-file-upload (100,000 weekly downloads)

  • @ctrl/tinycolor (2+ million weekly downloads)

  • Other packages in the @ctrl scope (Angular utilities, torrent clients, etc.)
    Any one of these could have silently introduced malicious code into countless projects.

2. Enterprise developer accounts targeted: Even security-savvy organizations weren’t immune. An npm account associated with CrowdStrike was used to push contaminated updates for a dozen @crowdstrike/* packages (mostly internal tools and config libraries). CrowdStrike confirmed it removed the packages and rotated keys immediately, and that these packages were not used in its flagship products. But it underscores a hard truth: if the supply chain is compromised, nobody is automatically safe.

Who was directly at risk? End-users were typically indirectly impacted. The primary targets were developers and CI systems during install/build. Any machine that ran npm install on malicious versions during the window may have had secrets stolen.

Why it matters: With stolen GitHub tokens, attackers could access private source code or plant malicious commits. With stolen cloud keys, they could probe infrastructure and data. With npm publish tokens, they could push trojanized updates under a maintainer’s name. This “cascading compromise” makes it nearly impossible to predict the full spread given npm’s dense web of interdependencies.

3. Security industry verdict:

  • ReversingLabs called Shai-Hulud the “first self-replicating worm” in the npm ecosystem.

  • Wiz labeled it “one of the most severe JavaScript supply-chain attacks observed to date.”

  • Analysts noted it appears to have evolved from earlier incidents, like the August 2025 “s1ngularity” breach and the early September compromise of chalk and debug (2+ billion weekly downloads combined), but at a much larger, automated scale.

In short, Shai-Hulud proved that one phished maintainer can instantly turn into an attack vector for thousands of downstream apps, and that automation can supercharge the spread.

Faced with such a fast-moving and invasive supply-chain worm, what should organizations do immediately if they suspect exposure? 

Immediate Steps for Affected Teams

If your organization uses Node.js or npm packages, now is the time to verify whether the Shai-Hulud supply-chain worm has touched your codebase. Even if you weren’t directly affected, treat this as a fire-drill for software supply-chain security. 

Here’s a prioritized checklist for engineering leaders and security teams:

Shai-Hulud npm Supply Chain Attack precautions

1. Identify and Remove Malicious Packages

  • Audit all dependencies, including transitive ones – to check if any compromised npm package versions slipped into your environments.

  • Use tools such as npm audit, software composition analysis (SCA) platforms, or your internal vulnerability scanners to detect tainted versions.

  • Pay special attention to builds or deployments between September 14–16, 2025 (the attack window).

  • If you find any bad versions, remove them from node_modules, clear the npm cache, and reinstall using known safe releases (pin to the last clean version before the malicious update).

  • Although many of the trojanized versions have been unpublished from npm, remain vigilant, attackers may have uploaded multiple bad versions in a row.

2. Isolate and Rebuild Potentially Compromised Systems

  • Treat any developer machine or CI runner that installed tainted packages as potentially compromised.

  • At minimum, disconnect those systems and avoid using any credentials stored on them until sanitized.

  • Ideally, perform a clean rebuild of CI containers or reimage developer workstations to eliminate lingering malware (remember, the worm may have created persistent GitHub Actions workflows or other implants).

3. Revoke and Rotate Credentials Immediately

  • Assume any tokens or keys present in a compromised environment were stolen.

  • Revoke npm tokens, GitHub personal access tokens, SSH keys, cloud provider keys, and CI secrets.

  • Generate fresh keys and update them in your secure stores.

  • This step cuts off attackers’ access and prevents them from publishing new malware using a stolen npm token. (CrowdStrike proactively rotated all keys even though its main products weren’t impacted.)

4. Check for Indicators of Compromise (IoCs)

  • Search your GitHub org and developers’ personal accounts for telltale signs of Shai-Hulud:

    • Any repository named “Shai-Hulud”

    • Any repo or branch with “-migration” in its name or description

  • Review GitHub audit logs for suspicious behavior, such as unexpected repo creation or OAuth token use.

  • Check your npm account logs for unauthorized package publications or login attempts around that time.

5. Analyze Logs for Exfiltration

  • If you have network monitoring, look for outgoing requests to the webhook.site domain (used by the attackers as a drop point).

  • The malware also triggered GitHub API calls to create new repos; watch for such traffic patterns.

  • If you discover a rogue data.json in any “Shai-Hulud” repo, decode it from base64 to see what credentials or data might have been leaked.

6. Inform Stakeholders Promptly

  • If your organization was impacted, loop in your security team and activate your incident response plan.

  • Notify customers or partners if there’s any chance your software releases were affected.

  • Transparency is key: if you maintain a library that others depend on, and your account was breached, disclose promptly so downstream users can respond.

  • NPM’s security team and the wider open-source community have been quick to act, coordinate with them for package status updates or assistance.

Once the immediate fire is contained, the crucial question for engineering leaders is how to prevent a Shai-Hulud-style incident from happening to you. Let’s outline strategies to build resilience against future supply-chain threats.

Secure Your Software Pipeline Against the Next Attack

“Hope is not a strategy” is especially true for npm supply-chain security. After witnessing both the September 8 phishing-based npm attack and the September 16 Shai-Hulud worm, it’s clear no team can assume their software pipeline is safe by default. Below are key measures, spanning people, process, and technology, to strengthen your defenses.

1. Harden Developer Accounts and Credentials

  • Enforce 2FA everywhere. Every npm maintainer account and GitHub account in your org should require strong two-factor authentication. Prefer hardware security keys or WebAuthn over SMS or authenticator apps. Phishing can steal one-time codes, but not a hardware key. 

  • Educate your team on phishing. Make sure no one enters credentials or 2FA codes into suspicious links. The “qix” maintainer was compromised by a look-alike domain (npmjs.help) that bypassed his OTP 2FA, hardware keys would have blocked it.

  • Use least-privilege tokens. Audit your automation tokens and API keys. Don’t use a broadly scoped npm token on a CI runner that only needs to install packages, use read-only or CIDR-restricted tokens where possible. Segment publishing credentials so compromise of one project doesn’t grant rights to all. Short-lived tokens further reduce risk.

  • Rotate secrets regularly. Implement time- or event-based rotation for CI secrets and access keys. Even if something was stolen silently, it may expire before attackers can use it. Moving toward “secretless CI/CD” (e.g., ephemeral OpenID Connect tokens for cloud deployments) also reduces exposure.

2. Tighten Software Composition Practices

  • Treat dependencies as untrusted code. Every npm package you install executes with your application’s privileges. Adopt a zero-trust stance for new packages or updates. Before pulling in a new open-source library, do a quick risk review: who maintains it, is the maintainer active, has it had malicious releases?

  • Add approval steps. Require a senior engineer’s review for PRs that add or bump dependencies, especially high-impact packages. An unexpected minor version release to a stable library could be a red flag.

  • Pin and lock dependencies. Use exact version pins or lockfiles to avoid auto-upgrading to compromised versions. Many teams use lockfiles and manual update processes for precisely this reason.

  • Disable post-install scripts where possible. In CI, consider running npm install --ignore-scripts to block postinstall scripts by default. This would have stopped Shai-Hulud’s payload from executing on build machines. Maintain an allow-list for packages that truly need install scripts.

  • Monitor dependency releases. Watch for unusual activity, e.g., a flurry of new releases or a maintainer change. Some organizations implement a “cool-down period” (24–48 hours) before adopting new versions so the community can flag malicious updates first.

3. Strengthen CI/CD Pipeline Security

  • Lock down build environments. CI/CD runners should operate with “minimal necessary access.” Don’t grant build jobs access to high-value secrets unless absolutely required. Segment roles for publishing, testing, and deploying. Consider running builds in isolated network sandboxes and block outgoing internet access except to known registries, this can stop malware from phoning home.

  • Add integrity checks. Enable npm’s built-in integrity verification (sha512 hashes in package-lock.json) and consider PGP signatures or Sigstore as they become available. In the long run, adopting frameworks like SLSA (Supply Chain Levels for Software Artifacts) helps ensure provenance and integrity.

  • Continuously monitor builds. Implement alerts for unusual behavior. For example, if a build process that normally runs tests suddenly creates outbound network connections or new workflow files, trigger an alarm. Some teams plant Canary tokens or dummy secrets in build environments, if a tool like TruffleHog tries to exfiltrate them, you know you’ve been breached.

4. Invest in Supply-Chain Security Tooling

  • Maintain an SBOM and use SCA. Keep an up-to-date Software Bill of Materials (SBOM) for your applications. Modern Software Composition Analysis (SCA) tools can flag known malicious packages or anomalous behavior in near real time. During Shai-Hulud, vendors like Socket and Semgrep updated their rules quickly; automated SCA in your CI/IDE could warn you “this version of tinycolor is potentially malicious” as soon as someone tries to install it.

  • Centralize dependency management. Funnel package installs through an internal proxy or artifact registry so you can yank a malicious version across the org instantly and enforce policies (e.g., no installs of unpublished versions, allow-lists/deny-lists). This is essentially a “package firewall” for npm.

  • Use automated code review and analysis. Pair human reviews with AI-powered platforms that analyze code and dependencies for quality, security, and compliance issues. For example, CodeAnt.ai acts as an intelligent second set of eyes on every pull request, flagging dangerous patterns or suspicious changes (like a 3 MB obfuscated script in a minor update) that human reviewers might miss. Because CodeAnt understands context, it reduces false alarms and can differentiate legitimate large changes from truly anomalous insertions. It also offers one-click fixes and engineering metrics (including DORA metrics, outdated dependencies, or bypassed policies) so leaders can see both code health and team trends at a glance. 

Hardening your pipeline isn’t a one-time exercise; it’s an ongoing process of people, process, and tooling. By combining basic hygiene (2FA, least privilege, dependency pins) with advanced supply-chain security and AI-powered code reviews, organizations can dramatically reduce the risk of the next Shai-Hulud. In the next section, we’ll show how to operationalize these practices into day-to-day development so they become habits, not exceptions.

From Reaction to Prevention, Securing Your npm Supply Chain

The recent npm supply chain attacks have made one thing crystal clear: software supply-chain security is no longer a niche concern; it’s a board-level issue. Trusted tools, registries, and workflows can be subverted overnight, whether by phishing a maintainer or infecting a build pipeline.

To protect your organization:

  • Implement the immediate steps first

  • Drive longer-term initiatives

  • Use automation defensively

One example is CodeAnt AI, that unifies code quality, security, and compliance intelligence. Instead of just scanning code, CodeAnt AI:

  • Contextually reviews pull requests and flags anomalies (like obfuscated scripts or suspicious new workflows) before they land.

  • Provides one-click fixes and detailed metrics so developers can act immediately without slowing velocity.

  • Gives engineering leaders visibility into outdated dependencies, security trends, and team performance, all from one dashboard.

By combining proven best practices with platforms like CodeAnt AI, you can:

  • Ship code at high velocity while ensuring every change is vetted against a knowledge base of security and compliance rules.

  • Gain continuous visibility into your engineering process and supply chain risk.

  • Make security improvements scalable and repeatable rather than one-off reactions.

Take action today:

  • Review your exposure to the Shai-Hulud attack window.

  • Implement the best practices above to harden your npm supply chain.

  • Evaluate CodeAnt AI or a similar AI-powered code review platform to institutionalize these defenses.

Your developers, and your customers, will thank you when your products stay both innovative and secure in the face of an evolving threat landscape. Try CodeAnt AI today!!!

The sandworms may be burrowing, but with robust guardrails and smart automation, your software factory can stay safe.

Appendix: Known Compromised Packages (IoCs)

The following IoCs were collected as part of RL’s investigation of this campaign.

package_name

version

SHA1

mcp-knowledge-base

0.0.2

5a87d68716cf9d99ec90835d623559bead2a76d3

html-to-base64-image

1.0.2

b65a8f02bcc425e9f43f44c4062e57a7ed0bb4ac

encounter-playground

0.0.4

a134cb5a9c3187c7e2419ce5981bc8365cfbb1d7

encounter-playground

0.0.3

edca8792f335b64b6929ef08b5d9bf812cc9ce77

encounter-playground

0.0.2

88a1b7b4dfe55bfcf33ee73520506596c3b11f05

eslint-config-teselagen

6.1.7

cefb886c65d58dec552d217bf2e6bbfff900a067

react-jsonschema-form-conditionals

0.3.20

ec85986413119e60684a99f3100c9d481cfdf08c

react-jsonschema-form-conditionals

0.3.19

287a71e7df97b6c1cc10d51a4c18f8a1ce23cba0

react-jsonschema-form-conditionals

0.3.18

48932e2c66fb9fd103cdd2a4c0bfb77483061511

tg-client-query-builder

2.14.4

5ce815ae8dfdb07fb5ebbc50643410e5f63daa2a

tg-redbird

1.3.1

caf629df8ec99ba641873e887a9d3e17bb2e040c

thangved-react-grid

1.0.3

7c1454a3907079182ce7441def94f21e7e3fb554

json-rules-engine-simplified

0.2.3

967bcd5cf05a814b9e14895183fe1e00fe06c8fd

json-rules-engine-simplified

0.2.2

c7d64660cd39ab9ae3a57cb2c9bbf7a89cf559c7

json-rules-engine-simplified

0.2.1

2ad5fdb982e406b6817225f0a4edf30262a8ed3a

rxnt-healthchecks-nestjs

1.0.4

cb81069ef7b290660f9f640a56cfab33bd5764df

rxnt-healthchecks-nestjs

1.0.3

4c65f7bf4974a2892e2867dad270777cc1b1f0e0

rxnt-healthchecks-nestjs

1.0.2

c5012da7a0588bf39f4666a83ce43e11f70eb655

rxnt-kue

1.0.6

8b5f31b22ac158f488179c49e718043e6bef25ef

rxnt-kue

1.0.5

8960070bcf368cb548f80756e22170836028897d

rxnt-kue

1.0.4

05307d8af5bea87f5ec60aaadcdd7be5a0f2e3fd

oradm-to-gql

35.0.14

dcea1fdaa6621072fed6962e3461e18c22f7261d

oradm-to-sqlz

1.1.2

1b6704faf237f65c83e1856c1c5f6efa9ec0e9ab

oradm-to-sqlz

1.1.3

9dd491b1b2faa10419198cadc25d0b30d46acba2

oradm-to-sqlz

1.1.4

8b9873af85a6f4a5ab24d76dd97dc3fa83a53dd6

ove-auto-annotate

0.0.9

b7ba4864a1aab4ba632c9c0fe1fcdc2fb0c268c8

ve-bamreader

0.2.6

a9bd726a1c567cbf8be371de175298c2ba10b19b

ve-editor

1.0.1

74de479293d9a47cce99c13f25e15103d40fbd0f

graphql-sequelize-teselagen

5.3.8

59e3b10efec96f31c90a15d0b3cdb3c3a3474ed4

@teselagen/bounce-loader

0.3.16

5cf876f82760193d2d068f3c5e1a24c7138002b1

@teselagen/file-utils

0.3.21

bb5d7c3f23e1b5218f7a718f0a627cd0e897f39a

@teselagen/liquibase-tools

0.4.1

9b9a438091a5647e4ceb336fea424a384756183e

@teselagen/react-list

0.8.19

40b9aa9f98dc6073e04a56fd9d3596e4abefc596

@teselagen/bio-parsers

0.4.29

eab6be69fbc87987a64474f67c237c728d792a70

@teselagen/ove

0.7.39

1a510a951e0fc186b99e313d94ab6ab72a6cd9d0

@teselagen/range-utils

0.3.14

d8c0d20a17951f0b8a85c7cf5400d98841e17de6

@teselagen/react-table

6.10.21

32547a2862896cb2f96ac23284fc5e979f0e2414

@teselagen/react-table

6.10.20

fd1dd0aee3ccb7fabd751e8a3d3ba99c493391bd

@teselagen/react-table

6.10.19

c8ae5c76dc5837e18736678e928357a575a28a9f

@teselagen/sequence-utils

0.3.33

a28500d7adbb44e9fb29cb64401077ccfa2725ea

@teselagen/ui

0.9.9

066b0294e11a90cfcb11dad16f3d5557712c7ebd

react-complaint-image

0.0.34

68e74c4250af9845f3c193b74e91124f2888de50

react-complaint-image

0.0.33

640376c96617c1845378137b7a1d9cb74928ba20

react-complaint-image

0.0.32

933d64001fc0459dae8a0449e08c662c734a6f0b

react-jsonschema-form-extras

1.0.3

a87cbf0a4cefbce50aa699641df2b61a833bca97

react-jsonschema-form-extras

1.0.2

a28a7b4cd232a7935fdf9495b439a8d54ececbc6

react-jsonschema-form-extras

1.0.1

e7d43606eb9fa18f4996db691f2086541b9bd3f4

react-jsonschema-rxnt-extras

0.4.6

9459764f29b525e068c890663c79ec7ef81e9496

react-jsonschema-rxnt-extras

0.4.7

602a9c12e35b78e0608a163495b5bddb5c2dc0fe

react-jsonschema-rxnt-extras

0.4.8

d36e5dd827d1b316e641a28bd4d1fb74b209d6f4

rxnt-authentication

0.0.5

711cfa0503a965e901a943798923bd5a181eda67

rxnt-authentication

0.0.4

4c6aaae6c2f7e6b34e72a35f19ba686a6df76660

rxnt-authentication

0.0.3

dc3c63c58f1f1fa2117b1657114b5d7e4c44c850

tg-seq-gen

1.0.9

d9f7f7f88fbc8094b721968d150af696913fa590

ng2-file-upload

7.0.2

953dc4903d8a08f21d0a7cf49f01a1fe9f219434

ng2-file-upload

7.0.3

18e323f15332a80e13037cf71fc632b4a7c79b27

ng2-file-upload

8.0.1

d3eaea409b77c9497adbf544563a2abb197f1d95

ng2-file-upload

8.0.2

ddbf3395f4d584e2a788b15061e85c2d17fb1509

ng2-file-upload

8.0.3

badf1b89443fc68e1369dd753eaeaac784e9df1b

ng2-file-upload

9.0.1

17b464cbf81e074aaed24eb87c02d567f56dcfce

ngx-bootstrap

18.1.4

d02f0f2ea5c9b1c29e5f6aae4fa0677f99b03cde

ngx-bootstrap

19.0.3

c68054201d511f2135750edaef49958b4587267f

ngx-bootstrap

19.0.4

317c491606e651a49db9873aed3a25fe2d7b9d6f

ngx-bootstrap

20.0.3

f1501a45e6ac7d1e95c8a6ef9f192583b6d91a56

ngx-bootstrap

20.0.4

897513887c92230ff0244cd51cd8f29664df28a5

ngx-bootstrap

20.0.5

f1a932205d020c521ea52de4159d5d340cdb7fcc

ngx-bootstrap

20.0.6

0f2d98464cdaa2211a27977596c0c0652862302a

angulartics2

14.1.2

784dac6eae8261e32152f667286dc38e53b1bbcd

@ctrl/deluge

7.2.2

cc7371ec3fc1ad9a62cb246e5885f13edf5fdeca

@ctrl/golang-template

1.4.3

b64401062ed84bacab8d6de8d6865d05978cd713

@ctrl/magnet-link

4.0.4

2eaf147ef0a371050f3f1cec559ab9d2862036ae

@ctrl/ngx-codemirror

7.0.2

a5e233a8801faec95d35a703c0ca701e95048b35

@ctrl/ngx-csv

6.0.2

48f74f6af4a5932945b41479c734560ace278999

@ctrl/ngx-emoji-mart

9.2.2

1f86a2dd3636c1b3f6754bc8ad760c1154a8eeee

@ctrl/ngx-rightclick

4.0.2

8820c2a858b73c91eb9567355dba4b6911bb2eed

@ctrl/qbittorrent

9.7.2

cd11335d66bed36e237b91ed2bc1b8ac0dc3c560

@ctrl/react-adsense

2.0.2

d7e800c37d67d878149fc7a6fb1569a654f928e5

@ctrl/shared-torrent

6.3.2

35187a7ee832909f901a713be277bb636692f422

@ctrl/tinycolor

4.1.1

31a8730a11fc6cbf1bbdd216d7053949e908c50f

@ctrl/tinycolor

4.1.2

ffd87620395edb43ae3f51bc7b5852e575627721

@ctrl/torrent-file

4.1.2

c9011fb8316e2cc639099643d42909aa32f5f85b

@ctrl/transmission

7.3.1

b6003fe43666d12f190d51f5279c44c480dd63e6

@ctrl/ts-base32

4.0.2

eb901ee6b02a6ce51786241e300a30f82eae6dc5

encounter-playground

0.0.5

4dc5ee4c3152541d892944c7599b81c8d6b1afd6

json-rules-engine-simplified

0.2.4

c86e40c248604f06e220675de5ea0af17711fc66

koa2-swagger-ui

5.11.2

62092c345d57fe75256d0e2d1d0b694c8bc51bbf

koa2-swagger-ui

5.11.1

3ab7860deb3bde7a324c12cbbeb5532442f56709

@nativescript-community/gesturehandler

2.0.35

74c548516d344a18949b85daa130f312e35bb6ce

@nativescript-community/sentry

4.6.43

e536300e48ce92cf82a153caccfdc5dc98f8a847

@nativescript-community/text

1.6.13

5d52b179e5fca147958aec81a2b9d321ce5fd60d

@nativescript-community/ui-collectionview

6.0.6

19fa34ce71349720cd9bda9ca3cb529bc31550c5

@nativescript-community/ui-drawer

0.1.30

7d6141ba73cefa92d86ea24cc8f6699b8035e29e

@nativescript-community/ui-image

4.5.6

567c818f028102701b31822817136b8af42f461b

@nativescript-community/ui-material-bottomsheet

7.2.72

67c50e318598acccef483929398d27fecbde3c76

@nativescript-community/ui-material-core

7.2.76

2c4f2019fc348539c97d75edcedd811e79bf1288

@nativescript-community/ui-material-core-tabs

7.2.76

120e92669585a501b7676b3d4ca6239dd08c4f85

ngx-color

10.0.2

30fc1482630d145d4bbd966ff1b8a61498694ca3

ngx-toastr

19.0.1

91255a47be4f1a3bdee2646d82ca412087708cab

ngx-toastr

19.0.2

f65a2f9c0276a4cce73cc0b95ebfebd05f2cc973

ngx-trend

8.0.1

dc9e84f92048b0aa78e0a17ae69708ee7aeee349

react-complaint-image

0.0.35

c2f0cc5734af74e244ff7ac34ea45387d813a22d

react-jsonschema-form-conditionals

0.3.21

f1c23c1e76acbd07591e4708bc2f2768a9f754f2

react-jsonschema-form-extras

1.0.4

0490214387616c1265447752310136352545831e

rxnt-authentication

0.0.6

3c5b060c1a124123a7480cd57d9db98b52a638c3

rxnt-healthchecks-nestjs

1.0.5

0c708c8b4d02903233ce1d3913353e4ab9e33ce9

rxnt-kue

1.0.7

cab67ca4f2051efb640e5b73b5faea6c2b7af4a1

swc-plugin-component-annotate

1.9.2

382b2e158f2f6a2efc70513bf8c7879715bf908a

ts-gaussian

3.0.6

932608d1ce4a27c9ee27ff94d68a0b511470eabb

@ahmedhfarag/ngx-perfect-scrollbar

20.0.20

5998c5fad96b4a1b91ae490ad4902680ca15a311

@ahmedhfarag/ngx-virtual-scroller

4.0.4

cfb5b91d5cd26eefa1bec6bf7f281d1f978d9b2f

@art-ws/common

2.0.22

36817c28b5af8368412e1a64d2f0152a433d2ac4

@art-ws/common

2.0.28

e2635f10661d8d085d803078a900d32f170ddf4b

@art-ws/config-eslint

2.0.4

576fa07c3562822a92f20954693ad5e10db2375c

@art-ws/config-eslint

2.0.5

0063c7524a71500459a9a66f906ab85146b440df

@art-ws/config-ts

2.0.7

6d934e3e5ba69ad11c985b7762a4d6c927fb3d98

@art-ws/config-ts

2.0.8

398bda76a8948d47b8bee4412bc5464cb08cd62a

@art-ws/db-context

2.0.21

7faed5f3f91d69c9e75b102e43d00cbbfcb2e794

@art-ws/db-context

2.0.24

345989a561fbde9bffe1bfbc5866f874fc9db923

@art-ws/di

2.0.28

9d7217be91c6da2de9ebac80aa7f7234071697d4

@art-ws/di

2.0.32

960aab3849afce2f6ab148cfdf8d37cb5e681f69

@art-ws/di-node

2.0.13

0096cf6dd7d10755c76f66189b882b56d2d3bc0b

@art-ws/eslint

1.0.5

7c96e8d4e0fbe8acedfc56cd08e2adb66afeeed8

@art-ws/eslint

1.0.6

73233bfb4ee82584594ae8388c2201d6ed16eee6

@art-ws/fastify-http-server

2.0.24

6f3726f245f371b35541eded21a1b0ee113311fb

@art-ws/fastify-http-server

2.0.27

f40fb715a308ccd0b38bafd3fdc537b4e0dbd404

@art-ws/http-server

2.0.21

885408eaba607eae0b325332e16597c95105a071

@art-ws/http-server

2.0.25

e3f5f625c96b78c65361d4ce9997eb8fe269c7ba

@art-ws/openapi

0.1.12

f0e85e8f6eae4967cad566908c6d5dacbbb41f2f

@art-ws/openapi

0.1.9

1d96e59c100997baa323f34b0584231bac7e5c6b

@art-ws/package-base

1.0.5

8df342eb91f9a325df8b6224af84019bf6cd1f6a

@art-ws/package-base

1.0.6

12a2badfe08b09efbbe86052b5938ba9965fad39

@art-ws/prettier

1.0.5

5694d8c0c8368ead7cece24e0ae37b754df467de

@art-ws/prettier

1.0.6

a9af7a973c11192c6656a9a175102beb497051f5

@art-ws/slf

2.0.15

676be89a74e3bebde560fded35dabd0f8e00cd3b

@art-ws/slf

2.0.22

daa020b17b23a7d9f83048a626ea8398bedad195

@art-ws/ssl-info

1.0.10

e210dab82f7709b9a01a2735ca88fdfd81f295d4

@art-ws/ssl-info

1.0.9

85538b42f006e31ce802b5cc5fdb5000ecaf9998

@art-ws/web-app

1.0.3

a33d081002d21fa5105203df68d82df5d1857977

@art-ws/web-app

1.0.4

4d07d9859fa20c5f287d699ddbe0ba1762ecf728

@basic-ui-components-stc/basic-ui-components

1.0.5

e1ebff1f43105fc3a3e3b005e16aecd5bf4f67be

@ctrl/deluge

7.2.1

087e06ddade4a3a91292f550173f8470c49b5c36

@ctrl/golang-template

1.4.2

61a401e669a33cbd38ca717fda0e6bb86665e9bf

@ctrl/magnet-link

4.0.3

aea3cb5108e29c7869890012d06a7396a8b29ec3

@ctrl/ngx-codemirror

7.0.1

3563ab863a9df12638c628b00c36ca2acee6e547

@ctrl/ngx-csv

6.0.1

c4a7f650aa3281fbb8c518eeb5254929e00a3651

@ctrl/ngx-emoji-mart

9.2.1

d93c8c3688745239be212f87df64edb7e2284910

@ctrl/ngx-rightclick

4.0.1

6f6b53f38e2e1880ed82810dc5fce39cdd942155

@ctrl/qbittorrent

9.7.1

4223c5eb6d4d8b757e8be054c56417611d47098e

@ctrl/react-adsense

2.0.1

cc289cc72e44d3863d4d099bc1a597fec17821c2

@ctrl/shared-torrent

6.3.1

ef42322bb763f24d44c9594c43812aa18c99dfe3

@ctrl/torrent-file

4.1.1

d64d6c775c37bf4c1a19c5ec9354f9caff435eaf

@ctrl/ts-base32

4.0.1

93fe3f8a095b4d4000b95c8eecb029293bf6912f

@hestjs/core

0.2.1

a4cf109edf9241d35ef736ee01b18b7490b6f52c

@hestjs/scalar

0.1.7

6ff5d0a39979ea1f20f10128cfda5db2efcf78fb

@hestjs/validation

0.1.6

311bd20dc28b1db74b26e9ee6fb0b99fe401ec5a

@nativescript-community/arraybuffers

1.1.6

9c06ae302b7fa55d679857b4f327abb63b4d48d9

@nativescript-community/arraybuffers

1.1.7

320facebe79fcee01094aec1727a0584dd19728c

@nativescript-community/arraybuffers

1.1.8

ecbdcb3eeb7185ab8ed904fc07bb77a3457b7b67

@nativescript-community/perms

3.0.5

7f82d532cc23945265391d54097f9f480142c161

@nativescript-community/perms

3.0.6

12fa3f0c96ca52b114448cc5caa73d37af104bff

@nativescript-community/perms

3.0.7

0072122333af7439c26a1667df5205d4d65af1b2

@nativescript-community/perms

3.0.8

7e65df9d8bc61cc9698c79d5879f4b193cc7dfb1

@nativescript-community/perms

3.0.9

e71913b97f95d0ea503479bb43cd1178b3e33f10

@nativescript-community/perms

3.0.9

e71913b97f95d0ea503479bb43cd1178b3e33f10

@nativescript-community/sqlite

3.5.2

8c9e509a486a243910491fa789ea8897a5b12c09

@nativescript-community/sqlite

3.5.3

13fc4426a084e0046cdea50d6fa46af1d532b570

@nativescript-community/sqlite

3.5.4

cb45e25a49b4cd39f6d769d5c381701619707276

@nativescript-community/sqlite

3.5.5

c6a544ed98b9a84cd45e115248b1ae3af79f075d

@nativescript-community/text

1.6.10

b624a8aa11fb92008a5d2833090735311b969877

@nativescript-community/text

1.6.11

64ee393bc818f70708524859bc19401ee21b0013

@nativescript-community/text

1.6.12

f8e63b6947d2032e75964bac2e7072c6da8f72db

@nativescript-community/text

1.6.9

240bf4209c195b352661376736eb37c1848fc866

@nativescript-community/typeorm

0.2.30

87e624c96b4e113bbeddb7c251687d614f70e8c3

@nativescript-community/typeorm

0.2.31

7d7f924bc9eeafea04c11d49a2903ecf84eaebbb

@nativescript-community/typeorm

0.2.32

f563abf96e6839d229feee7fe3f7505e8671252b

@nativescript-community/typeorm

0.2.33

bd839fe0b70def1c8ac7b6f3c9d6e8be16d6ddc0

@nativescript-community/ui-document-picker

1.1.27

647c831e11d264b78028e422e40d86bd8ce780de

@nativescript-community/ui-document-picker

1.1.28

f131a88cdfc93b2cd3e0731b0b6583a7326f1e19

@nativescript-community/ui-label

1.3.35

a92eafa302c3b910196fabc7387ac1bf01df1ad7

@nativescript-community/ui-label

1.3.36

22d7593d921a31bb662a81a99dab6dcb97af2c57

@nativescript-community/ui-label

1.3.37

64a415ff23f6388ab9c3b9487841303c6bf38ede

@nativescript-community/ui-material-bottom-navigation

7.2.72

b146a5c835f456b85f4c4b05003bee82deb2d4b5

@nativescript-community/ui-material-bottom-navigation

7.2.73

026e4b7da1f1cee9ad99cb0fd6a1d255fe2b17a3

@nativescript-community/ui-material-bottom-navigation

7.2.74

d1ebfcb06fbab215f80a7689b99d880270f88cf5

@nativescript-community/ui-material-bottom-navigation

7.2.75

f1c163880151c3999cf23c2e39ad228ac71d503f

@nativescript-community/ui-material-core

7.2.72

1751fe471fe83e2ea704f227077ca0fd4b339858

@nativescript-community/ui-material-core

7.2.73

71438f3f4e66f8a8e63a4009b39dfd62ceb1ee99

@nativescript-community/ui-material-core

7.2.74

a76e27340d18fa060f0ad2fb6356cdb33c0a517e

@nativescript-community/ui-material-core

7.2.75

90a6096f7c835adcaa6fd55a46d86a39c2d23e04

@nativescript-community/ui-material-core-tabs

7.2.72

4df5a8002dc1f264f5403f4ae8846f5a9de3fa03

@nativescript-community/ui-material-core-tabs

7.2.73

389ecdcdc731e939261a597f11026b7ee216c77f

@nativescript-community/ui-material-core-tabs

7.2.74

e39aa69f9fb9a072988e045c8b8e69f3adcb8bd2

@nativescript-community/ui-material-core-tabs

7.2.75

fc9809b849ac8827de7268186c125203b48eaabf

@nativescript-community/ui-material-ripple

7.2.72

1abffe88070892b714cbd9b52903ede4b7f51301

@nativescript-community/ui-material-ripple

7.2.73

d42991857e0d782ce3b8cdc43ee2482e96b5884c

@nativescript-community/ui-material-ripple

7.2.74

db10e35377f42be2016c15ed6caf95295f34aed0

@nativescript-community/ui-material-ripple

7.2.75

90b442685ac930390102205534b9b15cc25f2d06

@nativescript-community/ui-material-tabs

7.2.72

e21082f89587b00ade4af8eaf248989f25b1ddfc

@nativescript-community/ui-material-tabs

7.2.73

996e65e1b433acace71844e61707068cad2e48dd

@nativescript-community/ui-material-tabs

7.2.74

fa3d04c908bf3bf1e36485a8e9d4e901d9e5a57e

@nativescript-community/ui-material-tabs

7.2.75

ccb7989988f61539928bc49637ec5aa76d350cb3

@nativescript-community/ui-pager

14.1.35

177bee8c32779d3df154f52aa60ae32c65abfa53

@nativescript-community/ui-pager

14.1.36

34523ccc99f97688db11eac7ede7f998c5998d5b

@nativescript-community/ui-pager

14.1.37




FAQs

What is the Shai-Hulud NPM worm and how does it spread?

What is the Shai-Hulud NPM worm and how does it spread?

What is the Shai-Hulud NPM worm and how does it spread?

Which npm packages were affected and when?

Which npm packages were affected and when?

Which npm packages were affected and when?

How do I check if my project is affected (IOCs)?

How do I check if my project is affected (IOCs)?

How do I check if my project is affected (IOCs)?

What are the immediate mitigation steps for the Shai-Hulud npm attack?

What are the immediate mitigation steps for the Shai-Hulud npm attack?

What are the immediate mitigation steps for the Shai-Hulud npm attack?

Why is Shai-Hulud different from past npm supply chain attacks?

Why is Shai-Hulud different from past npm supply chain attacks?

Why is Shai-Hulud different from past npm supply chain attacks?

Unlock 14 Days of AI Code Health

Put AI code reviews, security, and quality dashboards to work, no credit card required.

Share blog:

Ship clean & secure code faster

Avoid 5 different tools. Get one unified AI platform for code reviews, quality, and security.

Ship clean & secure code faster

Avoid 5 different tools. Get one unified AI platform for code reviews, quality, and security.

Ship clean & secure code faster

Avoid 5 different tools. Get one unified AI platform for code reviews, quality, and security.