Aikido

Le « mini Shai-Hulud » est de retour : le ver npm touche plus de 160 paquets, dont Mistral et Tanstack

Écrit par
Raphael Silva

Le Mini Shai-Hulud est de retour. Comme je l'ai déjà dit, nous n'avions pas encore pris la mesure de l'ampleur de l'attaque.

La campagne npm dont nous avions parlé en avril, qui visait alors des paquets SAP, s'est aujourd'hui transformée en une attaque de bien plus grande ampleur. Notre équipe chargée des logiciels malveillants a détecté 373 entrées de versions de paquets malveillantes réparties sur 169 noms de paquets npm.

L'objectif principal reste le même : voler les identifiants des machines des développeurs et des serveurs CI/CD, puis les utiliser pour accéder à davantage de paquets.

Ce qui a changé, c'est l'ampleur du phénomène et le mode de diffusion. Cette vague ne semble pas simplement résulter de la publication manuelle de versions malveillantes par un individu. Le logiciel malveillant est conçu pour s'exécuter au sein des systèmes de compilation, voler les identifiants d'accès à npm et GitHub, et exploiter des canaux de publication fiables pour diffuser de nouveaux paquets compromis.

Si vous avez lu notre précédent article, intitulé « Mini Shai-Hulud cible les paquets npm de SAP avec un voleur de données confidentielles basé sur Bun », voici la suite : le même principe, mais avec une portée bien plus étendue.

Ce qui s'est passé

TanStack reste l'un des clusters les plus en vue, mais ce n'est plus le seul concerné. L'ensemble des paquets touchés comprend désormais des paquets issus de @squawk, @tanstack, @uipath, @tallyui, @beproduct, @mistralai, @draftlab, @draftauth, @taskflow-corp, @tolka, ainsi que plusieurs paquets sans portée.

Les plus grands groupes de cette campagne sont les suivants :

  • @squawk: 87 entrées de version de paquet
  • @tanstack: 83 entrées de version de paquet
  • @uipath: 66 entrées de version de paquet
  • Paquets sans portée : 39 entrées « paquet-version »
  • @tallyui: 30 entrées de version de paquet
  • @beproduct: 18 entrées de version de paquet

Cette liste est en constante évolution. Ce qui importe, ce n'est pas seulement le nombre de paquets, mais aussi l'endroit où ils sont exécutés. Ces paquets sont susceptibles d'être installés dans des environnements de développement locaux, des tâches d'intégration continue (CI), des workflows de publication et des systèmes de compilation internes.

C'est précisément là que se trouvent généralement les jetons npm, les jetons GitHub, cloud , les jetons de compte de service Kubernetes et les secrets de déploiement.

Paquets et versions concernés

Liste actuelle des paquets et des versions identifiés par notre équipe :

  • @tanstack/historique: 1.161.9, 1.161.12
  • @tanstack/react-router: 1.169.5, 1.169.8
  • @tanstack/router-core: 1.169.5, 1.169.8
  • @tanstack/router-utils: 1.161.11, 1.161.14
  • @tanstack/router-plugin: 1.167.38, 1.167.41
  • @tanstack/routes-de-fichiers-virtuels: 1.161.10, 1.161.13
  • @tanstack/router-generator: 1.166.45, 1.166.48
  • @tanstack/démarrer-le-serveur-principal: 1.167.33, 1.167.36
  • @tanstack/start-client-core: 1.168.5, 1.168.8
  • @tanstack/start-storage-context: 1.166.38, 1.166.41
  • @tanstack/start-plugin-core: 1.169.23, 1.169.26
  • @tanstack/react-start-server: 1.166.55, 1.166.58
  • @tanstack/react-start-client: 1.166.51, 1.166.54
  • @tanstack/start-fn-stubs: 1.161.9, 1.161.12
  • @tanstack/react-start: 1.167.68, 1.167.71
  • @tanstack/react-start-rsc: 0.0.47, 0.0.50
  • @mistralai/mistralai: 2.2.2, 2.2.3, 2.2.4
  • @tanstack/react-router-devtools: 1.166.16, 1.166.19
  • @tanstack/router-devtools-core: 1.167.6, 1.167.9
  • @tanstack/router-devtools: 1.166.16, 1.166.19
  • @tanstack/router-ssr-query-core: 1.168.3, 1.168.6
  • @tanstack/react-router-ssr-query: 1.166.15, 1.166.18
  • @tanstack/router-cli: 1.166.46, 1.166.49
  • @tanstack/zod-adapter: 1.166.12, 1.166.15
  • @tanstack/eslint-plugin-router: 1.161.9
  • @tanstack/router-vite-plugin: 1.166.53, 1.166.56
  • @tanstack/nitro-v2-vite-plugin: 1.154.12, 1.154.15
  • @mistralai/mistralai-gcp: 1.7.1, 1.7.2, 1.7.3
  • @tanstack/solid-router: 1.169.5, 1.169.8
  • @tanstack/solid-start: 1.167.65, 1.167.68
  • @tanstack/solid-start-client: 1.166.50, 1.166.53
  • @tanstack/solid-start-server: 1.166.54, 1.166.57
  • @tanstack/solid-router-devtools: 1.166.16, 1.166.19
  • @tanstack/fonctions-de-démarrage-du-serveur-statique: 1.166.44, 1.166.47
  • @tanstack/vue-router: 1.169.5, 1.169.8
  • @uipath/apollo-react: 4.24.5
  • @tanstack/solid-router-ssr-query: 1.166.15, 1.166.18
  • safe-action: 0.8.3, 0.8.4
  • @tanstack/valibot-adapter: 1.166.12, 1.166.15
  • @tanstack/vue-start: 1.167.61, 1.167.64
  • @uipath/apollo-wind: 2.16.2
  • @uipath/cli: 1.0.1
  • @tanstack/vue-start-server: 1.166.50, 1.166.53
  • @squawk/types: 0.8.2, 0.8.3, 0.8.4
  • @uipath/rpa-tool: 0.9.5
  • @squawk/mcp: 0.9.1, 0.9.2, 0.9.3, 0.9.4
  • @tanstack/vue-start-client: 1.166.46, 1.166.49
  • @squawk/météo: 0.5.6, 0.5.7, 0.5.8, 0.5.9
  • @squawk/espace aérien: 0.8.1, 0.8.2, 0.8.3, 0.8.4
  • @squawk/données-du-registre-de-l'OACI: 0.8.4, 0.8.5, 0.8.6, 0.8.7
  • @tanstack/arktype-adapter: 1.166.12, 1.166.15
  • @squawk/plan de vol: 0.5.2, 0.5.3, 0.5.4, 0.5.5
  • @squawk/aéroports: 0.6.2, 0.6.3, 0.6.4, 0.6.5
  • @mesadev/sdk: 0.28.3
  • @squawk/geo: 0.4.4, 0.4.5, 0.4.6, 0.4.7
  • @mesadev/rest: 0.28.3
  • @squawk/données-de-procédure: 0.7.3, 0.7.4, 0.7.5, 0.7.6
  • @squawk/données-d'aide-à-la-navigation: 0.6.4, 0.6.5, 0.6.6, 0.6.7
  • @squawk/correction-des-données: 0.6.4, 0.6.5, 0.6.6, 0.6.7
  • @squawk/aides à la navigation: 0.4.2, 0.4.3, 0.4.4, 0.4.5
  • @squawk/corrections: 0.3.2, 0.3.3, 0.3.4, 0.3.5
  • @squawk/données-aéroports: 0.7.4, 0.7.5, 0.7.6, 0.7.7
  • @squawk/données-de-voie-aérienne: 0.5.4, 0.5.5, 0.5.6, 0.5.7
  • @squawk/unités: 0.4.3, 0.4.4, 0.4.5, 0.4.6
  • @squawk/procédures: 0.5.2, 0.5.3, 0.5.4, 0.5.5
  • @squawk/airways: 0.4.2, 0.4.3, 0.4.4, 0.4.5
  • @squawk/registre-icao: 0.5.2, 0.5.3, 0.5.4, 0.5.5
  • @uipath/apollo-core: 5.9.2
  • @squawk/notams: 0.3.6, 0.3.7, 0.3.8, 0.3.9
  • @uipath/système de fichiers: 1.0.1
  • @uipath/solutionpackager-tool-core: 0.0.34
  • @squawk/calculs-de-vol: 0.5.4, 0.5.5, 0.5.6, 0.5.7
  • @squawk/données-sur-l'espace-aérien: 0.5.3, 0.5.4, 0.5.5, 0.5.6
  • @mistralai/mistralai-azure: 1.7.1, 1.7.2, 1.7.3
  • @uipath/solution-tool: 1.0.1
  • @tanstack/eslint-plugin-start: 0.0.4, 0.0.7
  • @uipath/maestro-tool: 1.0.1
  • @uipath/codedapp-tool: 1.0.1
  • @uipath/agent-tool: 1.0.1
  • @draftlab/auth: 0.24.1, 0.24.2
  • @uipath/orchestrator-tool: 1.0.1
  • @uipath/integrationservice-tool: 1.0.2
  • @taskflow-corp/cli: 0.1.24, 0.1.25, 0.1.26, 0.1.27, 0.1.28, 0.1.29
  • @tanstack/vue-router-ssr-query: 1.166.15, 1.166.18
  • @uipath/rpa-legacy-tool: 1.0.1
  • @uipath/outil-de-solutions-verticales: 1.0.1
  • @uipath/flow-tool: 1.0.2
  • @uipath/codedagent-tool: 1.0.1
  • @uipath/common: 1.0.1
  • @uipath/resource-tool: 1.0.1
  • @uipath/auth: 1.0.1
  • @uipath/docsai-tool: 1.0.1
  • @uipath/case-tool: 1.0.1
  • @uipath/api-workflow-tool: 1.0.1
  • @tanstack/vue-router-devtools: 1.166.16, 1.166.19
  • @uipath/test-manager-tool: 1.0.2
  • @uipath/robot: 1.3.4
  • @uipath/traces-tool: 1.0.1
  • @uipath/agent-sdk: 1.0.2
  • @uipath/integrationservice-sdk: 1.0.2
  • @uipath/maestro-sdk: 1.0.1
  • @uipath/data-fabric-tool: 1.0.2
  • @mesadev/saguaro: 0.4.22
  • @uipath/tasks-tool: 1.0.1
  • @uipath/insights-tool: 1.0.1
  • @uipath/insights-sdk: 1.0.1
  • @uipath/uipath-python-bridge: 1.0.1
  • @draftlab/db: 0.16.1
  • @uipath/ap-chat: 1.5.7
  • @uipath/project-packager: 1.1.16
  • @uipath/packager-tool-case: 0.0.9
  • @uipath/packager-tool-workflowcompiler-browser: 0.0.34
  • @uipath/packager-tool-connector: 0.0.19
  • @uipath/packager-tool-workflowcompiler: 0.0.16
  • @uipath/packager-tool-webapp: 1.0.6
  • @uipath/packager-tool-apiworkflow: 0.0.19
  • @uipath/packager-tool-functions: 0.1.1
  • ADN-ts: 3.0.1, 3.0.2, 3.0.3, 3.0.4
  • @uipath/widget.sdk: 1.2.3
  • @uipath/resources-tool: 0.1.11
  • @uipath/agent.sdk: 0.0.18
  • point de croix: 1.1.3, 1.1.4, 1.1.5, 1.1.6
  • @uipath/codedagents-tool: 0.1.12
  • @uipath/aops-policy-tool: 0.3.1
  • @uipath/solution-packager: 0.0.35
  • @draftlab/auth-router: 0.5.1, 0.5.2
  • cmux-agent-mcp: 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8
  • agentwork-cli: 0.1.4, 0.1.5
  • @uipath/packager-tool-bpmn: 0.0.9
  • @draftauth/core: 0.13.1, 0.13.2
  • @dirigible-ai/sdk: 0.6.2, 0.6.3
  • @uipath/packager-tool-flow: 0.0.19
  • Sélecteur de branche Git: 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7
  • wot-api: 0.8.1, 0.8.2, 0.8.3, 0.8.4
  • git-git-git: 1.0.8, 1.0.9, 1.0.10, 1.0.11, 1.0.12
  • @beproduct/nestjs-auth: 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.1.10, 0.1.11, 0.1.12, 0.1.13, 0.1.14, 0.1.15, 0.1.16, 0.1.17, 0.1.18, 0.1.19
  • @ml-toolkit-ts/xgboost: 1.0.3, 1.0.4
  • nextmove-mcp: 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7
  • ml-toolkit-ts: 1.0.4, 1.0.5
  • @uipath/télémétrie: 0.0.7
  • @draftauth/client: 0.2.1, 0.2.2
  • @ml-toolkit-ts/prétraitement: 1.0.2, 1.0.3
  • @tallyui/connecteur-medusa: 1.0.1, 1.0.2, 1.0.3
  • @uipath/tool-workflowcompiler: 0.0.12
  • @uipath/vss: 0.1.6
  • @tallyui/thème: 0.2.1, 0.2.2, 0.2.3
  • @tallyui/stockage-sqlite: 0.2.1, 0.2.2, 0.2.3
  • @uipath/solutionpackager-sdk: 1.0.11
  • @tallyui/connecteur-vendure: 1.0.1, 1.0.2, 1.0.3
  • @tallyui/core: 0.2.1, 0.2.2, 0.2.3
  • @tallyui/connecteur-woocommerce: 1.0.1, 1.0.2, 1.0.3
  • @tallyui/composants: 1.0.1, 1.0.2, 1.0.3
  • @uipath/ui-widgets-multi-file-upload: 1.0.1
  • @tallyui/pos: 0.1.1, 0.1.2, 0.1.3
  • @tallyui/base de données: 1.0.1, 1.0.2, 1.0.3
  • @supersurkhet/cli: 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.0.7
  • @tallyui/connecteur-shopify: 1.0.1, 1.0.2, 1.0.3
  • @tolka/cli: 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6
  • @supersurkhet/sdk: 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.0.7
  • @uipath/access-policy-tool: 0.3.1
  • @uipath/outil-de-contextualisation: 0.1.1
  • @uipath/gov-tool: 0.3.1
  • @uipath/admin-tool: 0.1.1
  • @uipath/identity-tool: 0.1.1
  • @uipath/llmgw-tool: 1.0.1
  • @uipath/resourcecatalog-tool: 0.1.1
  • @uipath/outils-de-fonctions: 1.0.1
  • @uipath/access-policy-sdk: 0.3.1
  • @uipath/platform-tool: 1.0.1

Comment fonctionne la nouvelle vague

Dans la vague SAP, les paquets compromis ont ajouté un preinstall crochet qui s'est déplacé setup.mjs, qui a ensuite utilisé Bun pour exécuter une charge utile volumineuse et obscurcie nommée execution.js.

Cette vague suit un parcours légèrement différent.

Dans les paquets TanStack compromis, l'archive du paquet contient un nouveau fichier obfusqué à la racine du paquet :

router_init.js

Le paquet compromis ajoute également une dépendance facultative qui pointe vers un paquet hébergé sur GitHub

"optionalDependencies": {
  "@tanstack/setup": "github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c"
}

Cette dépendance Git contient un préparer script :

"scripts": {
  "prepare": "bun run tanstack_runner.js && exit 1"
}

Voici l'astuce. npm exécute les scripts de cycle de vie des dépendances Git lors de l'installation. Ainsi, un paquet qui ressemble à une dépendance normale peut discrètement accéder à une dépendance hébergée sur GitHub, exécuter son préparer se connecter, puis exécuter la charge utile.

Le && quitter 1 La fin est également intéressante. Comme la dépendance est facultative, le fait qu'elle échoue après l'exécution de la charge utile peut rendre l'installation moins suspecte. Le code malveillant s'est déjà exécuté au moment où npm considère que la dépendance facultative a échoué.

Pourquoi la publication fiable est-elle si importante ici ?

L'un des aspects les plus délicats de cette vague est le recours à la publication de confiance.

La publication sécurisée vise à supprimer les jetons npm à longue durée de vie des workflows de publication. Un workflow GitHub Actions peut utiliser l'OIDC pour demander un jeton de publication npm à courte durée de vie, publier le paquet et associer une traçabilité à la version.

C'est une bonne chose quand le flux de travail est bien organisé.

La situation est bien pire lorsque du code contrôlé par un pirate s'exécute au sein du workflow. Dans ce cas, le pirate n'a peut-être même pas besoin de voler un jeton npm à longue durée de vie. Il peut utiliser les autorisations OIDC propres au workflow pour générer un jeton de publication pendant la compilation et publier à partir de là.

Cela signifie également que la provenance ne constitue pas un indicateur de sécurité fiable. Un paquet malveillant peut tout de même provenir du workflow GitHub Actions attendu si ce dernier a fait l'objet d'une utilisation abusive lors de la publication.

En clair : la provenance permet de savoir où le paquet a été compilé. Elle ne garantit pas pour autant que la compilation s'est déroulée en toute sécurité.

Ce que la charge utile tente de voler

La charge utile est conçue pour les environnements CI/CD et de développement.

Il recherche :

  • Jeton GitHub
  • jetons npm
  • Jeton OIDC de GitHub Actions
  • Identifiants AWS et métadonnées d'instance
  • Fichiers de comptes de service Kubernetes
  • Jetons HashiCorp Vault et points de terminaison Vault locaux
  • variables d'environnement
  • secrets du système de fichiers local

La charge utile contient également une logique de propagation. Après avoir dérobé les jetons, elle tente de les utiliser pour identifier les paquets que la victime est susceptible de publier, modifier les archives de paquets, y injecter la dépendance malveillante, incrémenter les versions et publier de nouvelles versions compromises.

C'est ce qui distingue ce logiciel malveillant d'un simple voleur d'informations. Il ne se contente pas de voler les données de la victime actuelle ; il tente également d'utiliser l'accès dont il dispose chez cette victime pour en faire un vecteur d'infection vers d'autres cibles.

Quels changements depuis l'attaque contre SAP ?

La vague SAP a concerné un nombre moins important de modules, mais son impact a tout de même été considérable, car elle a touché les outils de développement d'entreprise.

Cette vague a une portée plus large. Les paquets TanStack sont largement utilisés dans les applications JavaScript modernes, notamment pour le routage et les outils React full-stack. Un paquet compromis à ce niveau de l'arborescence des dépendances peut se propager très rapidement à de nombreux endroits.

Il y a également quelques modifications techniques :

  • les modules SAP utilisés setup.mjs et execution.js
  • La nouvelle version de TanStack utilise router_init.js et un projet hébergé sur GitHub @tanstack/configuration dépendance
  • La nouvelle vague s'appuie davantage sur GitHub Actions, l'OIDC, la publication sur npm et le reconditionnement des paquets
  • la charge utile repose toujours sur Bun et vise toujours à dérober des informations confidentielles

Le schéma est toutefois toujours le même : obtenir l'exécution de code lors de l'installation, voler des identifiants, puis utiliser ces identifiants pour diffuser d'autres logiciels malveillants.

Détection et atténuation

Commencez par les fichiers de verrouillage et les caches de paquets.

Rechercher les espaces de noms et les paquets concernés :

  • @squawk/
  • @tanstack/
  • @uipath/
  • @tallyui/
  • @beproduct/nestjs-auth
  • @mistralai/
  • @draftauth/
  • @draftlab/
  • @taskflow-corp/cli
  • @tolka/cli
  • @ml-toolkit-ts/
  • @mesadev/
  • @dirigible-ai/sdk
  • @supersurkhet/
  • les paquets sans portée énumérés ci-dessus, notamment safe-action, ADN-ts, point de croix, cmux-agent-mcp, agentwork-cli, Sélecteur de branche Git, wot-api, git-git-git, nextmove-mcp, et ml-toolkit-ts

Recherchez les nouveaux fichiers de charge utile et les marqueurs de dépendance :

  • router_init.js
  • router_runtime.js
  • tanstack_runner.js
  • @tanstack/configuration
  • github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c
  • bun exécute tanstack_runner.js

Rechercher dans les journaux CI :

  • Exécution inattendue de Bun pendant npm install
  • échecs de dépendances facultatives impliquant @tanstack/configuration
  • connexions sortantes lors de l'installation des dépendances
  • Activité de publication npm issue de workflows qui n'auraient pas dû publier
  • Demandes de jetons OIDC dans GitHub Actions lors d'étapes imprévues

Si une version compromise d'un paquet a été exécutée sur une machine de développement ou un serveur d'intégration continue, procédez à la rotation des secrets de cet environnement. Ne vous limitez pas aux jetons npm.

Faire pivoter ou revoir :

  • Jeton npm et accès à la publication de paquets
  • Secrets des PAT GitHub et des GitHub Actions
  • cloud
  • Jeton de compte de service Kubernetes
  • Jetons de coffre-fort
  • secrets de déploiement

Il convient également de vérifier les publications npm récentes, les exécutions de GitHub Actions et les enregistrements de provenance. Un enregistrement de provenance valide ne doit pas être considéré comme une preuve que le paquet est exempt de problèmes.

Indicateurs de Compromission

Fichiers et données utiles :

  • router_init.js
  • router_runtime.js
  • tanstack_runner.js
  • router_init.js SHA-256: ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c
  • tanstack_runner.js SHA-256: 2ec78d556d696e208927cc503d48e4b5eb56b31abc2870c2ed2e98d6be27fc96

Indicateurs de colis :

  • @tanstack/configuration
  • github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c
  • préparer exécution du script bun exécute tanstack_runner.js
  • fichier de charge utile au niveau racine inclus en dehors du contenu normal du paquet

Indicateurs relatifs au réseau et aux services :

  • hxxp://filev2[.]getsession[.]org/file/
  • hxxp://169[.]254[.]169[.]254/latest/meta-data/iam/security-credentials/
  • hxxp://169[.]254[.]170[.]2
  • hxxps://registry[.]npmjs[.]org/-/npm/v1/tokens
  • vault[.]svc[.]cluster[.]local:8200

Indicateurs de campagne :

  • Un mini Shai-Hulud est apparu
  • Noms de référentiels inspirés de Dune utilisés pour la sortie des worms et la mise en place

Conclusion

Mini Shai-Hulud est passé d'un incident de moindre ampleur, centré sur SAP, à une attaque plus large visant la chaîne d'approvisionnement npm.

La leçon à retenir n'est pas seulement que davantage de paquets ont été compromis. C'est surtout que ce logiciel malveillant est conçu pour exploiter le fonctionnement des systèmes de publication modernes. Il s'exécute pendant l'installation, recherche les identifiants de CI/CD, détourne les chemins de publication GitHub et npm, et tente de s'introduire dans le paquet suivant.

Si l'un des paquets concernés a été exécuté dans votre environnement, considérez la machine ou l'instance d'exécution comme exposée jusqu'à ce que les secrets aient été renouvelés et que les publications récentes aient été vérifiées.

Comment Aikido détecte cela

Si vous êtes un utilisateur Aikido, vérifiez votre flux central et filtrez les problèmes de logiciels malveillants. Cela apparaîtra comme un problème critique 100/100. Aikido effectue des rescans nocturnes, mais nous vous recommandons de déclencher un rescan manuel dès maintenant.

Si vous n'êtes pas encore un utilisateur Aikido, vous pouvez créer un compte et connecter vos dépôts. Notre couverture des logiciels malveillants est incluse dans le plan gratuit, aucune carte de crédit requise.

Pour une couverture plus large de toute votre équipe, l'Endpoint Protection d'Aikido vous offre une visibilité et un contrôle sur les packages logiciels installés sur les appareils de votre équipe. Elle couvre les extensions de navigateur, les bibliothèques de code, les plugins d'IDE et les dépendances de build, le tout en un seul endroit. Arrêtez les logiciels malveillants avant qu'ils ne soient installés.

Pour vous protéger à l'avenir, pensez à Aikido Chain (open source). Safe Chain s'intègre à votre flux de travail actuel : il intercepte les commandes npm, npx, yarn, pnpm et pnpx et vérifie la conformité des paquets par rapport Aikido avant leur installation.

Partager :

https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised

Abonnez-vous à notre newsletter

4,7/5
Fatigué des faux positifs ?
Essayez Aikido, comme 100 000 autres.
Commencez maintenant
Obtenez une démonstration personnalisée

Approuvé par plus de 100 000 équipes

Réserver maintenant
Analysez votre application à la recherche d'IDORs et de chemins d'attaque réels

Approuvé par plus de 100 000 équipes

Démarrer l'analyse
Découvrez comment le pentest IA teste votre application

Approuvé par plus de 100 000 équipes

Démarrer les tests

Sécurisez votre environnement dès maintenant.

Sécurisez votre code, votre cloud et votre environnement d’exécution dans un système centralisé unique.
Détectez et corrigez les vulnérabilités rapidement et automatiquement.

Aucune carte de crédit requise | Résultats en 32 secondes.