Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
safe-chain — Protégez-vous contre les codes malveillants installés via npm, yarn, pnpm, npx, pnpx, pip, uv et poetry avec Aikido Safe Chain. Gratuit à utiliser, aucun jeton requis. | Kitploit
Outils/GitHubGitHub/aikidosec/safe-chain
Outils DéfensifsScanners de VulnérabilitésAnalyse de MalwareDevSecOpsRenseignement sur les MenacesSécurité de la Chaîne Logistique
GitHubaikidosec/safe-chain

safe-chain

Protégez-vous contre les codes malveillants installés via npm, yarn, pnpm, npx, pnpx, pip, uv et poetry avec Aikido Safe Chain. Gratuit à utiliser, aucun jeton requis.

Voir le dépôt
1.7k106il y a 2 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

Aikido Safe Chain

Aikido Safe Chain

NPM Version NPM Downloads

  • ✅ Bloquer les malwares sur les laptops des développeurs et dans les CI/CD
  • ✅ Prend en charge npm et PyPI, d'autres gestionnaires de paquets à venir
  • ✅ Bloque les paquets de moins de 48 heures sans casser votre build
  • ✅ Sans jeton, gratuit, aucune donnée de build partagée

Besoin d'une protection au-delà de npm et PyPI ?

Aikido Device Protection s'appuie sur Safe Chain, étendant la sécurité des paquets et extensions à davantage d'écosystèmes : npm, PyPI, VS Code, Open VSX - (Cursor, Windsurf, Kiro, Vs Codium, ...), Maven, NuGet, extensions Chrome, Go, compétences IA Skills.sh, Ruby, Rust, et plus encore.

Bénéficiez d'une gestion centralisée des politiques, de flux de demande et approbation, et d'une visibilité sur chaque poste de travail de développeur dans votre organisation. Propulsé par le même flux d'intelligence Aikido. Déployez-le manuellement ou gérez-le via votre outil MDM (Jamf, Fleet, ou Iru).


Aikido Safe Chain prend en charge les gestionnaires de paquets suivants :

  • 📦 npm
  • 📦 npx
  • 📦 yarn
  • 📦 pnpm
  • 📦 pnpx
  • 📦 rush
  • 📦 rushx
  • 📦 bun
  • 📦 bunx
  • 📦 pip
  • 📦 pip3
  • 📦 uv
  • 📦 poetry
  • 📦 uvx
  • 📦 pipx
  • 📦 pdm

Utilisation

Démonstration d'Aikido Safe Chain

Installation

L'installation d'Aikido Safe Chain est simple grâce au script d'installation.

Unix/Linux/macOS```shell

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh
&& rm /tmp/install-safe-chain.sh

root@kitploit:~
### Windows (PowerShell)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1"
Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1"
if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {
    Remove-Item $installer -ErrorAction SilentlyContinue
    throw "Checksum verification failed for install-safe-chain.ps1"
}
& $installer
Remove-Item $installer

Les commandes d'installation ci-dessus référencent toujours une version spécifique. Pour installer une autre version, remplacez la version par le numéro de version souhaité. Toutes les versions disponibles sont sur la page des versions.

Intégrité du téléchargement

Les scripts d'installation sont servis depuis une URL de version publiée (releases/download/1.5.15/...). Les versions GitHub sont immuables — une fois qu'un artefact est publié à une URL versionnée, il ne peut pas être modifié ni remplacé, donc le fichier que vous téléchargez est garanti d'être exactement celui qui a été publié.

Vérifier l'installation

  1. ❗Redémarrez votre terminal pour commencer à utiliser Aikido Safe Chain.

    • Cette étape est cruciale car elle garantit que les alias de shell pour npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, poetry, uv, uvx, pipx et pdm sont chargés correctement. Si vous ne redémarrez pas votre terminal, les alias ne seront pas disponibles.
  2. Vérifiez l'installation en exécutant la commande de vérification : ```shell npm safe-chain-verify pnpm safe-chain-verify pip safe-chain-verify uv safe-chain-verify

    Any other supported package manager: {packagemanager} safe-chain-verify

    root@kitploit:~
  • La sortie doit afficher "OK: Safe-chain works!" confirmant qu'Aikido Safe Chain est correctement installé et en cours d'exécution.
  1. (Facultatif) Testez le blocage des malwares en tentant d'installer un paquet de test :

    Pour JavaScript/Node.js : ```shell npm install safe-chain-test

    root@kitploit:~

Pour Python : ```shell pip3 install safe-chain-pi-test

root@kitploit:~
- La sortie doit montrer qu'Aikido Safe Chain bloque l'installation de ces paquets de test, car ils sont signalés comme malveillants.

Lors de l'exécution de commandes `npm`, `npx`, `yarn`, `pnpm`, `pnpx`, `rush`, `rushx`, `bun`, `bunx`, `pip`, `pip3`, `uv`, `uvx`, `poetry`, `pipx` et `pdm`, Aikido Safe Chain vérifie automatiquement la présence de logiciels malveillants dans les paquets que vous essayez d'installer. Il intercepte également les invocations de modules Python pour pip lorsque cela est disponible (par exemple, `python -m pip install ...`, `python3 -m pip download ...`). Si un logiciel malveillant est détecté, il vous invite à quitter la commande.

Vous pouvez vérifier la version installée en exécutant :```shell
safe-chain --version

Comment ça fonctionne

Blocage des malwares

Aikido Safe Chain fonctionne en exécutant un serveur proxy léger qui intercepte les téléchargements de paquets depuis le registre npm et PyPI. Lorsque vous exécutez des commandes npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, uv, uvx, poetry, pipx ou pdm, tous les téléchargements de paquets sont routés via ce proxy local, qui vérifie les paquets en temps réel contre Aikido Intel - Renseignements sur les menaces open source. Si un malware est détecté dans un paquet (y compris les dépendances profondes), le proxy bloque le téléchargement avant que le code malveillant n'atteigne votre machine.

Âge minimum des paquets

Safe Chain applique des contrôles d'âge minimum des paquets pour les écosystèmes pris en charge.

Les règles actuelles diffèrent selon l'écosystème :

  • gestionnaires de paquets basés sur npm :
    • lors de la résolution normale des paquets, Safe Chain supprime des métadonnées de paquet renvoyées par le registre les versions plus récentes que l'âge minimum configuré
    • pour les demandes de téléchargement direct de paquets qui contournent ce flux de métadonnées, Safe Chain peut bloquer la demande elle-même à l'aide d'une liste en cache des paquets récemment publiés
  • gestionnaires de paquets Python :
    • lors de la résolution des paquets, Safe Chain supprime des réponses de métadonnées PyPI les fichiers et les versions trop récents
    • pour les demandes de téléchargement direct de paquets qui contournent ce flux de métadonnées, Safe Chain peut bloquer la demande elle-même à l'aide d'une liste en cache des paquets récemment publiés

Par défaut, l'âge minimum des paquets est de 48 heures. Cela offre une couche de sécurité supplémentaire pendant la période critique où les paquets nouvellement publiés sont les plus susceptibles de contenir des menaces non détectées. Vous pouvez configurer ce seuil ou contourner entièrement cette protection — voir la section Configuration de l'âge minimum des paquets ci-dessous.

Intégration à l'interpréteur de commandes

Aikido Safe Chain s'intègre à votre interpréteur de commandes pour offrir une expérience fluide lors de l'utilisation de npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx et des gestionnaires de paquets Python (pip, uv, uvx, poetry, pipx, pdm). Il configure des alias pour ces commandes afin qu'elles soient enveloppées par les commandes Aikido Safe Chain, qui gèrent le serveur proxy avant d'exécuter les commandes d'origine. Nous prenons en charge actuellement :

  • ✅ Bash
  • ✅ Zsh
  • ✅ Fish
  • ✅ PowerShell
  • ✅ PowerShell Core

Plus d'informations sur l'intégration à l'interpréteur de commandes sont disponibles dans la documentation sur l'intégration à l'interpréteur de commandes.

Désinstallation

Pour désinstaller Aikido Safe Chain, utilisez notre désinstalleur en une ligne :

Unix/Linux/macOS```shell

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.sh | sh

root@kitploit:~
### Windows (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.ps1" -UseBasicParsing)

❗Redémarrez votre terminal après la désinstallation pour vous assurer que tous les alias sont supprimés.

Configuration

Journalisation

Vous pouvez contrôler la sortie d'Aikido Safe Chain à l'aide du drapeau --safe-chain-logging ou de la variable d'environnement SAFE_CHAIN_LOGGING.

Options de configuration

Vous pouvez définir le niveau de journalisation via plusieurs sources (par ordre de priorité) :

  1. Argument CLI (priorité la plus élevée) :

    • --safe-chain-logging=silent - Supprime toute la sortie d'Aikido Safe Chain, sauf lorsqu'un malware est bloqué. La sortie du gestionnaire de paquets est écrite sur stdout comme d'habitude, et Safe Chain écrit uniquement un court message s'il a bloqué un malware et provoque la sortie du processus.

      root@kitploit:~
      npm install express --safe-chain-logging=silent
      
    • --safe-chain-logging=verbose - Active la sortie de diagnostic détaillée d'Aikido Safe Chain. Utile pour résoudre les problèmes ou comprendre ce que Safe Chain fait en arrière-plan.

      root@kitploit:~
      npm install express --safe-chain-logging=verbose
      
  2. Variable d'environnement : ```shell export SAFE_CHAIN_LOGGING=verbose npm install express

    root@kitploit:~

Valeurs valides : silent, normal, verbose

Ceci est utile pour définir un niveau de journalisation par défaut pour toutes les commandes du gestionnaire de paquets dans votre session terminal ou votre environnement CI/CD.

Journalisation dans un fichier

Vous pouvez refléter la sortie d'Aikido Safe Chain vers un fichier journal à l'aide de l'indicateur --safe-chain-log-file ou de la variable d'environnement SAFE_CHAIN_LOG_FILE. La journalisation dans un fichier est désactivée par défaut et activée lorsqu'un chemin est défini. Le format du fichier (--safe-chain-log-file-format) et la verbosité (--safe-chain-log-file-verbosity) sont contrôlés indépendamment de la sortie du terminal.

Options de configuration

Définies via l'un des éléments suivants (par ordre de priorité) :

  1. Argument CLI (priorité la plus élevée) : ```shell npm install express
    --safe-chain-log-file=~/safe-chain.log
    --safe-chain-log-file-format=plain
    --safe-chain-log-file-verbosity=normal
    root@kitploit:~
  2. Variable d'environnement : ```shell export SAFE_CHAIN_LOG_FILE=~/safe-chain.log export SAFE_CHAIN_LOG_FILE_FORMAT=plain export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal
    root@kitploit:~
  3. Fichier de configuration (~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
    root@kitploit:~

logFileFormat — json (par défaut) ou plain.

logFileVerbosity — silent, normal ou verbose (par défaut). Indépendant de --safe-chain-logging.

Âge minimal des paquets

Vous pouvez configurer la durée minimale d'existence des paquets avant que Safe Chain n'autorise leur installation. Par défaut, les paquets doivent avoir au moins 48 heures avant de pouvoir être installés.

Pour les gestionnaires de paquets basés sur npm, ce contrôle dispose actuellement de deux modes d'application :

  • Safe Chain supprime les versions trop récentes des métadonnées de paquets lors de la résolution normale des dépendances.
  • Safe Chain bloque les demandes de téléchargement direct de paquets lorsqu'elles correspondent à la liste mise en cache des paquets nouvellement publiés.

Pour les gestionnaires de paquets Python, ce contrôle dispose actuellement de deux modes d'application :

  • Safe Chain supprime les fichiers et versions trop récents des métadonnées PyPI lors de la résolution des dépendances.
  • Safe Chain bloque les demandes de téléchargement direct de paquets lorsqu'elles correspondent à la liste mise en cache des paquets nouvellement publiés.

Options de configuration

Vous pouvez définir l'âge minimal des paquets via plusieurs sources (par ordre de priorité) :

  1. Argument CLI (priorité la plus élevée) : ```shell npm install express --safe-chain-minimum-package-age-hours=48
    root@kitploit:~
  2. Variable d'environnement : ```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48 npm install express
    root@kitploit:~
  3. Fichier de configuration (~/.safe-chain/config.json): ```json { "minimumPackageAgeHours": 48 }
    root@kitploit:~

Exclusion des paquets

Excluez les paquets de confiance du filtrage par âge minimum via une variable d'environnement ou un fichier de configuration (les deux sont fusionnés). Utilisez @scope/* pour faire confiance à tous les paquets d'une organisation :```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="@aikidosec/*"

root@kitploit:~
No input content was provided to translate.```json
{
  "npm": {
    "minimumPackageAgeExclusions": ["@aikidosec/*"]
  },
  "pip": {
    "minimumPackageAgeExclusions": ["requests"]
  }
}

Custom Registries

Configurez Safe Chain pour analyser les packages provenant de registres personnalisés ou privés.

Écosystèmes pris en charge :

  • Node.js
  • Python

Options de configuration

Vous pouvez définir des registres personnalisés via une variable d'environnement ou un fichier de configuration. Les deux sources sont fusionnées.

  1. Variable d'environnement (séparée par des virgules) : ```shell export SAFE_CHAIN_NPM_CUSTOM_REGISTRIES="npm.company.com,registry.internal.net" export SAFE_CHAIN_PIP_CUSTOM_REGISTRIES="pip.company.com,registry.internal.net"
    root@kitploit:~
  2. Fichier de configuration (~/.safe-chain/config.json): ```json { "npm": { "customRegistries": ["npm.company.com", "registry.internal.net"] }, "pip": { "customRegistries": ["pip.company.com", "registry.internal.net"] } }
    root@kitploit:~

Fichier de configuration PYPI

Si vous dépendez d'un fichier pip.conf pour la configuration de pip, vous devez y pointer explicitement pip via la variable d'environnement PIP_CONFIG_FILE afin que Safe Chain puisse le fusionner.

Safe Chain exécute pip derrière son proxy MITM et écrit un fichier de configuration pip temporaire pour injecter ses paramètres de certificat et de proxy. Lorsque PIP_CONFIG_FILE est défini, Safe Chain fusionne ses paramètres dans une copie de votre fichier (votre fichier d'origine n'est jamais modifié), préservant ainsi votre index-url, vos identifiants et autres options. Lorsque PIP_CONFIG_FILE n'est pas défini, la configuration au niveau utilisateur de pip (par ex. ~/.config/pip/pip.conf) peut être remplacée par le fichier temporaire de Safe Chain et vos paramètres ne seront pas pris en compte.

URL de base de la liste des malwares

Configurez Safe Chain pour récupérer les bases de données de malwares et les listes de nouveaux paquets depuis une URL miroir personnalisée. Cela vous permet d'héberger votre propre copie de la base de données de malwares Aikido.

Options de configuration

Vous pouvez définir l'URL de base de la liste des malwares via plusieurs sources (par ordre de priorité) :

  1. Argument CLI (priorité la plus élevée) : ```shell npm install express --safe-chain-malware-list-base-url=https://your-mirror.com
    root@kitploit:~
  2. Variable d'environnement : ```shell export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com npm install express
    root@kitploit:~
  3. Fichier de configuration (~/.safe-chain/config.json): ```json { "malwareListBaseUrl": "https://your-mirror.com" }
    root@kitploit:~

L'URL de base doit pointer vers un serveur qui reflète la structure de https://malware-list.aikido.dev/, incluant les chemins suivants :

  • /malware_predictions.json (base de données de logiciels malveillants de l'écosystème JavaScript)
  • /malware_pypi.json (base de données de logiciels malveillants de l'écosystème Python)
  • /releases/npm.json (liste des nouveaux packages JavaScript)
  • /releases/pypi.json (liste des nouveaux packages Python)

Fichier de configuration du projet

En plus du fichier de configuration du répertoire personnel (~/.safe-chain/config.json), Safe Chain prend en charge un fichier de configuration de projet afin que les paramètres puissent être commités dans un dépôt et partagés au sein d'une équipe, au lieu d'être configurés machine par machine.

Ajoutez une section safe-chain: au fichier .aikido à la racine de votre dépôt (le même fichier utilisé par les autres outils Aikido, Safe Chain ne lit que sa propre section safe-chain: et ignore le reste). Lorsqu'elle est trouvée, ses paramètres sont fusionnés par-dessus votre fichier de configuration du répertoire personnel : les valeurs définies dans la configuration du projet ont priorité, et les tableaux (comme customRegistries) sont combinés à partir des deux fichiers plutôt que l'un remplace l'autre.

Seuls les paramètres suivants peuvent être définis à partir d'un fichier de configuration de projet :```yaml safe-chain: minimumPackageAgeHours: 48 npm: customRegistries: - npm.company.com minimumPackageAgeExclusions: - "@aikidosec/*" pip: customRegistries: - pip.company.com minimumPackageAgeExclusions: - requests

root@kitploit:~
Settings like `scanTimeout`, `malwareListBaseUrl`, and the `logFile*` options cannot be set from a project config file - they can only come from your home-directory config, CLI arguments, or environment variables.

## Custom Install Directory

By default, Safe Chain installs itself into `~/.safe-chain`. You can change this by passing an explicit install directory to the installer. This is useful for system-wide installations (e.g. inside a Docker image) or when you need to avoid conflicts with other tools.

When set, all Safe Chain data (binary, shims, scripts, config) is placed under the custom directory instead of `~/.safe-chain`.

### Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c - \
  && sh /tmp/install-safe-chain.sh --install-dir /usr/local/.safe-chain \
  && rm /tmp/install-safe-chain.sh

Windows```powershell

$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -InstallDir 'C:\ProgramData\safe-chain' Remove-Item $installer

root@kitploit:~
# Utilisation dans CI/CD

Vous pouvez protéger vos pipelines CI/CD contre les paquets malveillants en intégrant Aikido Safe Chain à votre processus de build. Cela garantit que tous les paquets installés lors de vos builds automatisés sont vérifiés pour détecter les logiciels malveillants avant l'installation.

## Installation pour CI/CD

Utilisez l'option `--ci` pour configurer automatiquement Aikido Safe Chain pour les environnements CI/CD. Cela met en place des shims exécutables dans le PATH au lieu d'alias de shell.

### Unix/Linux/macOS (GitHub Actions, Azure Pipelines, etc.)```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c - \
  && sh /tmp/install-safe-chain.sh --ci \
  && rm /tmp/install-safe-chain.sh

Windows (Azure Pipelines, etc.)```powershell

$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -ci Remove-Item $installer

root@kitploit:~
## Plateformes prises en charge

- ✅ **GitHub Actions**
- ✅ **Azure Pipelines**
- ✅ **CircleCI**
- ✅ **Jenkins**
- ✅ **Bitbucket Pipelines**
- ✅ **GitLab Pipelines**

## Exemple GitHub Actions```yaml
- name: Setup Node.js
  uses: actions/setup-node@v4
  with:
    node-version: "22"
    cache: "npm"

- name: Install safe-chain
  run: |
    curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
    sh /tmp/install-safe-chain.sh --ci
    rm /tmp/install-safe-chain.sh

- name: Install dependencies
  run: npm ci

Exemple Azure DevOps```yaml

  • task: NodeTool@0 inputs: versionSpec: "22.x" displayName: "Install Node.js"

  • script: | curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c - sh /tmp/install-safe-chain.sh --ci rm /tmp/install-safe-chain.sh displayName: "Install safe-chain"

  • script: npm ci displayName: "Install dependencies"

root@kitploit:~
## Exemple CircleCI```yaml
version: 2.1
jobs:
  build:
    docker:
      - image: cimg/node:lts
    steps:
      - checkout
      - run: |
          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
          sh /tmp/install-safe-chain.sh --ci
          rm /tmp/install-safe-chain.sh
      - run: npm ci
workflows:
  build_and_test:
    jobs:
      - build

Exemple Jenkins

Remarque : Ceci suppose que Node.js et npm sont installés sur l'agent Jenkins.```groovy pipeline { agent any

environment { // Jenkins does not automatically persist PATH updates from setup-ci, // so add the shims + binary directory explicitly for all stages. // If you installed into a custom directory, replace ~/.safe-chain with that path here. PATH = "${env.HOME}/.safe-chain/shims:${env.HOME}/.safe-chain/bin:${env.PATH}" }

stages { stage('Install safe-chain') { steps { sh ''' set -euo pipefail

root@kitploit:~
      # Install Safe Chain for CI
      curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
      echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
      sh /tmp/install-safe-chain.sh --ci
      rm /tmp/install-safe-chain.sh
    '''
  }
}

stage('Install project dependencies etc...') {
  steps {
    sh '''
      set -euo pipefail
      npm ci
    '''
  }
}

} }

root@kitploit:~
## Exemple de Bitbucket Pipelines```yaml
image: node:22

steps:
  - step:
      name: Install
      script:
        - |
          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
          sh /tmp/install-safe-chain.sh --ci
          rm /tmp/install-safe-chain.sh
        - export PATH=~/.safe-chain/shims:~/.safe-chain/bin:$PATH
        - npm ci

Après la configuration, toutes les commandes de gestionnaire de paquets ultérieures dans votre pipeline CI seront automatiquement protégées par la détection de logiciels malveillants d'Aikido Safe Chain.

Exemple de pipelines GitLab

Pour ajouter safe-chain dans les pipelines GitLab, vous devez l'installer dans l'image exécutant le pipeline. Cela peut être fait en :

  1. Définissez un dockerfile pour exécuter votre build ```dockerfile FROM node:lts

    Install safe-chain

    RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
    && sh /tmp/install-safe-chain.sh --ci
    && rm /tmp/install-safe-chain.sh

    Add safe-chain to PATH (update paths if you used a custom install dir)

    ENV PATH="/root/.safe-chain/shims:/root/.safe-chain/bin:${PATH}"

    root@kitploit:~
  2. Construisez l'image Docker dans votre pipeline CI ```yaml build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest

    root@kitploit:~
  3. Utilisez l'image dans votre pipeline : ```yaml npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci

    root@kitploit:~

Le pipeline complet pour cet exemple ressemble à ceci :```yaml stages:

  • build-image
  • install

build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest

npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci

root@kitploit:~
# Dépannage

Vous rencontrez des problèmes ? Consultez le [Guide de dépannage](https://github.com/aikidosec/safe-chain/blob/HEAD/docs/troubleshooting.md) pour obtenir de l'aide sur les problèmes courants.

# Signaler des problèmes

Si vous rencontrez des problèmes :

1. Rendez-vous sur [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues)
2. Incluez :
   * Système d'exploitation et version
   * Type de shell et version
   * Sortie de `safe-chain --version`
   * Sortie des commandes de vérification
   * Journaux verbeux de la commande en échec (ajoutez l'argument `--safe-chain-logging=verbose`)
Télécharger l’outil