Zurück zu den Updates
New releaseSep 4, 2026

safe-chain v1.5.16

Schützen Sie sich mit Aikido Safe Chain vor Schadcode, der über npm, yarn, pnpm, npx, pnpx, pip, uv und poetry installiert wird. Kostenlos nutzbar, keine Tokens erforderlich.

Teilen

Aikido Safe Chain

Aikido Safe Chain

NPM Version NPM Downloads

  • Blockiert Malware auf Entwickler-Laptops und in CI/CD
  • Unterstützt npm und PyPI – weitere Paketmanager folgen
  • Blockiert Pakete, die jünger als 48 Stunden sind, ohne deinen Build zu unterbrechen
  • Tokenlos, kostenlos, keine Build-Daten werden geteilt

Brauchst du Schutz über npm & PyPI hinaus?

Aikido Device Protection baut auf Safe Chain auf und erweitert die Paket- und Erweiterungssicherheit auf weitere Ökosysteme: npm, PyPI, VS Code, Open VSX – (Cursor, Windsurf, Kiro, Vs Codium, ...), Maven, NuGet, Chrome-Erweiterungen, Go, Skills.sh AI-Skills, Ruby, Rust und mehr.

Erhalte zentralisierte Richtlinienverwaltung, Anfrage-und-Genehmigungs-Workflows und Transparenz über jede Entwickler-Workstation in deiner Organisation. Angetrieben von demselben Aikido-Intel-Feed. Stelle es manuell bereit oder verwalte es über dein MDM-Tool (Jamf, Fleet oder Iru).


Aikido Safe Chain unterstützt die folgenden Paketmanager:

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

Verwendung

Aikido Safe Chain Demo

Installation

Die Installation von Aikido Safe Chain ist mit dem Installationsskript einfach.

Unix/Linux/macOS```shell

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

### Windows (PowerShell)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1"
Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "6F46B5CFA42DDF9545616E169A567E764CE179E6321E6555D2C3A81768E2635D"
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

Die Installationsbefehle oben verweisen immer auf eine bestimmte Version. Um eine andere Version zu installieren, ersetzen Sie die Version durch die gewünschte Versionsnummer. Alle verfügbaren Versionen finden Sie auf der Releases-Seite.

Integrität des Downloads

Die Installationsskripte werden von einer versionierten Release-URL bereitgestellt (releases/download/1.5.16/...). GitHub-Releases sind unveränderlich — sobald ein Artefakt unter einer versionierten URL veröffentlicht wurde, kann es nicht mehr geändert oder ersetzt werden. Die heruntergeladene Datei ist daher garantiert exakt das, was veröffentlicht wurde.

Installation überprüfen

  1. ❗Starten Sie Ihr Terminal neu, um die Aikido Safe Chain zu verwenden.

    • Dieser Schritt ist entscheidend, da er sicherstellt, dass die Shell-Aliase für npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, poetry, uv, uvx, pipx und pdm korrekt geladen werden. Wenn Sie Ihr Terminal nicht neu starten, sind die Aliase nicht verfügbar.
  2. Überprüfen Sie die Installation, indem Sie den Verifizierungsbefehl ausführen: ```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

  • Die Ausgabe sollte „OK: Safe-chain works!“ anzeigen, was bestätigt, dass Aikido Safe Chain ordnungsgemäß installiert ist und ausgeführt wird.
  1. (Optional) Testen der Malware-Blockierung, indem Sie versuchen, ein Testpaket zu installieren:

    Für JavaScript/Node.js: ```shell npm install safe-chain-test

Für Python: ```shell pip3 install safe-chain-pi-test

- Die Ausgabe sollte zeigen, dass Aikido Safe Chain die Installation dieser Testpakete blockiert, da sie als Malware gekennzeichnet sind.

Wenn Sie `npm`, `npx`, `yarn`, `pnpm`, `pnpx`, `rush`, `rushx`, `bun`, `bunx`, `pip`, `pip3`, `uv`, `uvx`, `poetry`, `pipx` und `pdm`-Befehle ausführen, prüft die Aikido Safe Chain automatisch auf Malware in den Paketen, die Sie installieren möchten. Sie fängt auch Python-Modulaufrufe für pip ab, wenn verfügbar (z. B. `python -m pip install ...`, `python3 -m pip download ...`). Wenn Malware erkannt wird, werden Sie aufgefordert, den Befehl zu beenden.

Sie können die installierte Version überprüfen, indem Sie Folgendes ausführen:```shell
safe-chain --version

So funktioniert es

Malware-Blockierung

Die Aikido Safe Chain funktioniert, indem sie einen leichtgewichtigen Proxy-Server ausführt, der Paket-Downloads von der npm-Registry und PyPI abfängt. Wenn Sie npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, uv, uvx, poetry, pipx oder pdm-Befehle ausführen, werden alle Paket-Downloads über diesen lokalen Proxy geleitet, der Pakete in Echtzeit gegen Aikido Intel - Open Sources Threat Intelligence prüft. Wenn in einem Paket (einschließlich tiefer Abhängigkeiten) Malware erkannt wird, blockiert der Proxy den Download, bevor der schädliche Code Ihren Rechner erreicht.

Mindestalter für Pakete

Safe Chain wendet Prüfungen des Mindestalters für Pakete auf unterstützte Ökosysteme an.

Die aktuelle Durchsetzung unterscheidet sich je nach Ökosystem:

  • npm-basierte Paketmanager:
    • Während der normalen Paketauflösung unterdrückt Safe Chain Versionen, die neuer als das konfigurierte Mindestalter sind, aus den vom Registry zurückgegebenen Paketmetadaten
    • Bei direkten Paket-Download-Anfragen, die diesen Metadatenfluss umgehen, kann Safe Chain die Anfrage selbst mithilfe einer zwischengespeicherten Liste neu veröffentlichter Pakete blockieren
  • Python-Paketmanager:
    • Während der Paketauflösung unterdrückt Safe Chain zu junge Dateien und Releases aus PyPI-Metadatenantworten
    • Bei direkten Paket-Download-Anfragen, die diesen Metadatenfluss umgehen, kann Safe Chain die Anfrage selbst mithilfe einer zwischengespeicherten Liste neu veröffentlichter Pakete blockieren

Standardmäßig beträgt das Mindestalter für Pakete 48 Stunden. Dies bietet eine zusätzliche Sicherheitsebene während des kritischen Zeitraums, in dem neu veröffentlichte Pakete am anfälligsten dafür sind, unerkannte Bedrohungen zu enthalten. Sie können diesen Schwellenwert konfigurieren oder diesen Schutz vollständig umgehen – siehe Abschnitt Konfiguration des Mindestalters für Pakete unten.

Shell-Integration

Die Aikido Safe Chain integriert sich in Ihre Shell, um ein nahtloses Erlebnis bei der Verwendung von npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx und Python-Paketmanagern (pip, uv, uvx, poetry, pipx, pdm) zu bieten. Sie richtet Aliase für diese Befehle ein, sodass sie von den Aikido-Safe-Chain-Befehlen umschlossen werden, die den Proxy-Server verwalten, bevor die ursprünglichen Befehle ausgeführt werden. Wir unterstützen derzeit:

  • Bash
  • Zsh
  • Fish
  • PowerShell
  • PowerShell Core

Weitere Informationen zur Shell-Integration finden Sie in der Shell-Integrationsdokumentation.

Deinstallation

Um die Aikido Safe Chain zu deinstallieren, verwenden Sie unseren einzeiligen Deinstaller:

Unix/Linux/macOS```shell

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

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

❗Starten Sie Ihr Terminal neu, nachdem Sie die Deinstallation abgeschlossen haben, um sicherzustellen, dass alle Aliase entfernt wurden.

Konfiguration

Protokollierung

Sie können die Ausgabe von Aikido Safe Chain über das Flag --safe-chain-logging oder die Umgebungsvariable SAFE_CHAIN_LOGGING steuern.

Konfigurationsoptionen

Sie können die Protokollierungsebene über mehrere Quellen festlegen (in der Reihenfolge der Priorität):

  1. CLI-Argument (höchste Priorität):

    • --safe-chain-logging=silent – Unterdrückt die gesamte Aikido-Safe-Chain-Ausgabe, außer wenn Malware blockiert wird. Die Ausgabe des Paketmanagers wird wie gewohnt auf stdout geschrieben, und Safe Chain schreibt nur eine kurze Nachricht, wenn es Malware blockiert hat und den Prozess beendet.

      npm install express --safe-chain-logging=silent
      
    • --safe-chain-logging=verbose – Aktiviert detaillierte Diagnoseausgaben von Aikido Safe Chain. Nützlich zur Fehlerbehebung oder um zu verstehen, was Safe Chain im Hintergrund tut.

      npm install express --safe-chain-logging=verbose
      
  2. Umgebungsvariable: ```shell export SAFE_CHAIN_LOGGING=verbose npm install express

Gültige Werte: silent, normal, verbose

Dies ist nützlich, um eine Standard-Protokollierungsebene für alle Paketmanager-Befehle in Ihrer Terminalsitzung oder CI/CD-Umgebung festzulegen.

Dateiprotokollierung

Sie können die Aikido Safe Chain-Ausgabe mithilfe des Flags --safe-chain-log-file oder der Umgebungsvariable SAFE_CHAIN_LOG_FILE in eine Protokolldatei spiegeln. Die Dateiprotokollierung ist standardmäßig deaktiviert und wird aktiviert, wenn ein Pfad festgelegt ist. Das Dateiformat (--safe-chain-log-file-format) und die Ausführlichkeit (--safe-chain-log-file-verbosity) werden unabhängig von der Terminalausgabe gesteuert.

Konfigurationsoptionen

Festlegbar über eine der folgenden Optionen (in Prioritätsreihenfolge):

  1. CLI-Argument (höchste Priorität): ```shell npm install express
    --safe-chain-log-file=~/safe-chain.log
    --safe-chain-log-file-format=plain
    --safe-chain-log-file-verbosity=normal
  2. Umgebungsvariable: ```shell export SAFE_CHAIN_LOG_FILE=~/safe-chain.log export SAFE_CHAIN_LOG_FILE_FORMAT=plain export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal
  3. Konfigurationsdatei (~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }

logFileFormatjson (Standard) oder plain.

logFileVerbositysilent, normal oder verbose (Standard). Unabhängig von --safe-chain-logging.

Mindestalter für Pakete

Sie können konfigurieren, wie lange Pakete existieren müssen, bevor Safe Chain deren Installation zulässt. Standardmäßig müssen Pakete mindestens 48 Stunden alt sein, bevor sie installiert werden können.

Für npm-basierte Paketmanager hat diese Prüfung derzeit zwei Durchsetzungsmodi:

  • Safe Chain unterdrückt zu junge Versionen aus den Paketmetadaten während der normalen Abhängigkeitsauflösung.
  • Safe Chain blockiert direkte Paketdownload-Anfragen, wenn diese mit der zwischengespeicherten Liste neu veröffentlichter Pakete abgeglichen werden.

Für Python-Paketmanager hat diese Prüfung derzeit zwei Durchsetzungsmodi:

  • Safe Chain unterdrückt zu junge Dateien und Releases aus den PyPI-Metadaten während der Abhängigkeitsauflösung.
  • Safe Chain blockiert direkte Paketdownload-Anfragen, wenn diese mit der zwischengespeicherten Liste neu veröffentlichter Pakete abgeglichen werden.

Konfigurationsoptionen

Sie können das Mindestalter für Pakete über mehrere Quellen festlegen (in der Reihenfolge ihrer Priorität):

  1. CLI-Argument (höchste Priorität): ```shell npm install express --safe-chain-minimum-package-age-hours=48
  2. Umgebungsvariable: ```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48 npm install express
  3. Konfigurationsdatei (~/.safe-chain/config.json): ```json { "minimumPackageAgeHours": 48 }

Pakete ausschließen

Vertrauenswürdige Pakete von der Mindestalter-Filterung ausschließen – über eine Umgebungsvariable oder eine Konfigurationsdatei (beide werden zusammengeführt). Verwenden Sie @scope/*, um allen Paketen einer Organisation zu vertrauen:```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="@aikidosec/*"

Hier ist die Übersetzung des Chunks 33 von 73:

---

**Hinweis:** Da der Eingabetext (INPUT) leer ist, gibt es keinen Inhalt zu übersetzen. Bitte stellen Sie den tatsächlichen Text des Chunks bereit, damit ich ihn gemäß den Regeln ins Deutsche übersetzen kann.```json
{
  "npm": {
    "minimumPackageAgeExclusions": ["@aikidosec/*"]
  },
  "pip": {
    "minimumPackageAgeExclusions": ["requests"]
  }
}

Benutzerdefinierte Registries

Konfigurieren Sie Safe Chain so, dass Pakete aus benutzerdefinierten oder privaten Registries gescannt werden.

Unterstützte Ökosysteme:

  • Node.js
  • Python

Konfigurationsoptionen

Sie können benutzerdefinierte Registries über eine Umgebungsvariable oder eine Konfigurationsdatei festlegen. Beide Quellen werden zusammengeführt.

  1. Umgebungsvariable (durch Kommas getrennt): ```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"
  2. Konfigurationsdatei (~/.safe-chain/config.json): ```json { "npm": { "customRegistries": ["npm.company.com", "registry.internal.net"] }, "pip": { "customRegistries": ["pip.company.com", "registry.internal.net"] } }

PYPI-Konfigurationsdatei

Wenn Sie für die pip-Konfiguration auf eine pip.conf-Datei angewiesen sind, müssen Sie pip explizit über die Umgebungsvariable PIP_CONFIG_FILE darauf verweisen, damit Safe Chain sie zusammenführen kann.

Safe Chain führt pip hinter seinem MITM-Proxy aus und schreibt eine temporäre pip-Konfigurationsdatei, um sein Zertifikat und seine Proxy-Einstellungen einzuschleusen. Wenn PIP_CONFIG_FILE gesetzt ist, führt Safe Chain seine Einstellungen in eine Kopie Ihrer Datei zusammen (Ihre Originaldatei wird niemals verändert), sodass Ihre index-url, Anmeldedaten und andere Optionen erhalten bleiben. Wenn PIP_CONFIG_FILE nicht gesetzt ist, könnte die Benutzerkonfiguration von pip (z. B. ~/.config/pip/pip.conf) durch die temporäre Datei von Safe Chain überschrieben werden und Ihre Einstellungen werden nicht übernommen.

Basis-URL der Malware-Liste

Konfigurieren Sie Safe Chain so, dass Malware-Datenbanken und Listen neuer Pakete von einer benutzerdefinierten Mirror-URL abgerufen werden. Dies ermöglicht es Ihnen, eine eigene Kopie der Aikido-Malware-Datenbank zu hosten.

Konfigurationsoptionen

Sie können die Basis-URL der Malware-Liste über mehrere Quellen festlegen (in der Reihenfolge der Priorität):

  1. CLI-Argument (höchste Priorität): ```shell npm install express --safe-chain-malware-list-base-url=https://your-mirror.com
  2. Umgebungsvariable: ```shell export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com npm install express
  3. Konfigurationsdatei (~/.safe-chain/config.json): ```json { "malwareListBaseUrl": "https://your-mirror.com" }

Die Basis-URL sollte auf einen Server zeigen, der die Struktur von https://malware-list.aikido.dev/ spiegelt, einschließlich der folgenden Pfade:

  • /malware_predictions.json (Malware-Datenbank des JavaScript-Ökosystems)
  • /malware_pypi.json (Malware-Datenbank des Python-Ökosystems)
  • /releases/npm.json (Liste neuer JavaScript-Pakete)
  • /releases/pypi.json (Liste neuer Python-Pakete)

Projektkonfigurationsdatei

Zusätzlich zur Konfigurationsdatei im Home-Verzeichnis (~/.safe-chain/config.json) unterstützt Safe Chain eine Projektkonfigurationsdatei, sodass Einstellungen in einem Repository eingecheckt und teamweit geteilt werden können, anstatt pro Maschine konfiguriert zu werden.

Fügen Sie einen Abschnitt safe-chain: zur .aikido-Datei im Stammverzeichnis Ihres Repositorys hinzu (dieselbe Datei, die auch von anderen Aikido-Tools verwendet wird; Safe Chain liest nur seinen eigenen Abschnitt safe-chain: und ignoriert den Rest). Wenn diese Datei gefunden wird, werden ihre Einstellungen über Ihre Konfigurationsdatei im Home-Verzeichnis gelegt: In der Projektkonfiguration festgelegte Werte haben Priorität, und Arrays (wie customRegistries) werden aus beiden Dateien kombiniert, anstatt dass eine die andere ersetzt.

Nur die folgenden Einstellungen können über eine Projektkonfigurationsdatei festgelegt werden:```yaml safe-chain: minimumPackageAgeHours: 48 npm: customRegistries: - npm.company.com minimumPackageAgeExclusions: - "@aikidosec/*" pip: customRegistries: - pip.company.com minimumPackageAgeExclusions: - requests

Einstellungen wie `scanTimeout`, `malwareListBaseUrl` und die `logFile*`-Optionen können nicht aus einer Projektkonfigurationsdatei festgelegt werden – sie können nur aus Ihrer Home-Verzeichnis-Konfiguration, CLI-Argumenten oder Umgebungsvariablen stammen.

## Benutzerdefiniertes Installationsverzeichnis

Standardmäßig installiert sich Safe Chain in `~/.safe-chain`. Sie können dies ändern, indem Sie dem Installationsprogramm ein explizites Installationsverzeichnis übergeben. Dies ist nützlich für systemweite Installationen (z. B. innerhalb eines Docker-Images) oder wenn Sie Konflikte mit anderen Tools vermeiden müssen.

Wenn festgelegt, werden alle Safe Chain-Daten (Binärdatei, Shims, Skripte, Konfiguration) unter dem benutzerdefinierten Verzeichnis statt unter `~/.safe-chain` abgelegt.

### Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839  /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.16/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "6F46B5CFA42DDF9545616E169A567E764CE179E6321E6555D2C3A81768E2635D" 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

# Verwendung in CI/CD

Sie können Ihre CI/CD-Pipelines vor bösartigen Paketen schützen, indem Sie Aikido Safe Chain in Ihren Build-Prozess integrieren. Dadurch wird sichergestellt, dass alle Pakete, die während Ihrer automatisierten Builds installiert werden, vor der Installation auf Malware überprüft werden.

## Installation für CI/CD

Verwenden Sie das Flag `--ci`, um Aikido Safe Chain automatisch für CI/CD-Umgebungen zu konfigurieren. Dies richtet ausführbare Shims im PATH ein, anstelle von Shell-Aliassen.

### Unix/Linux/macOS (GitHub Actions, Azure Pipelines usw.)```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839  /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.16/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "6F46B5CFA42DDF9545616E169A567E764CE179E6321E6555D2C3A81768E2635D" 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

## Unterstützte Plattformen

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

## GitHub Actions Beispiel```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.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839  /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

Azure DevOps-Beispiel```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.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /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"

## CircleCI-Beispiel```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.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839  /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

Jenkins-Beispiel

Hinweis: Dies setzt voraus, dass Node.js und npm auf dem Jenkins-Agenten installiert sind.```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

      # Install Safe Chain for CI
      curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
      echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839  /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
    '''
  }
}

} }

## Bitbucket Pipelines Beispiel```yaml
image: node:22

steps:
  - step:
      name: Install
      script:
        - |
          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839  /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

Nach der Einrichtung werden alle nachfolgenden Paketmanager-Befehle in Ihrer CI-Pipeline automatisch durch die Malware-Erkennung von Aikido Safe Chain geschützt.

GitLab-Pipelines-Beispiel

Um safe-chain in GitLab-Pipelines hinzuzufügen, müssen Sie es in dem Image installieren, das die Pipeline ausführt. Dies kann folgendermaßen erfolgen:

  1. Definieren Sie ein Dockerfile, um Ihren Build auszuführen ```dockerfile FROM node:lts

    Install safe-chain

    RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    && echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /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}"

  2. Erstelle das Docker-Image in deiner CI-Pipeline ```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

  3. Verwenden Sie das Image in Ihrer Pipeline: ```yaml npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci

Die vollständige Pipeline für dieses Beispiel sieht folgendermaßen aus:```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

# Fehlerbehebung

Probleme? Siehe den [Leitfaden zur Fehlerbehebung](https://github.com/aikidosec/safe-chain/blob/main/docs/troubleshooting.md) für Hilfe bei häufigen Problemen.

# Probleme melden

Wenn Sie auf Probleme stoßen:

1. Besuchen Sie [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues)
2. Geben Sie Folgendes an:
   * Betriebssystem und Version
   * Shell-Typ und Version
   * Ausgabe von `safe-chain --version`
   * Ausgabe der Verifizierungsbefehle
   * Ausführliche Protokolle des fehlgeschlagenen Befehls (fügen Sie das Argument `--safe-chain-logging=verbose` hinzu)

Kategorien