Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
safe-chain — 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. | Kitploit
Tools/GitHubGitHub/aikidosec/safe-chain
DefensivwerkzeugeSchwachstellenscannerMalware-AnalyseDevSecOpsBedrohungsanalyseLieferkettensicherheit
GitHubaikidosec/safe-chain

safe-chain

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.

Repository anzeigen
1.7k106vor 2 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

Aikido Safe Chain

Aikido Safe Chain

NPM Version NPM Downloads

  • ✅ Blockieren Sie 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 Ihren Build zu unterbrechen
  • ✅ Ohne Token, kostenlos, keine Build-Daten werden geteilt

Benötigen Sie 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-KI-Fähigkeiten, Ruby, Rust und mehr.

Erhalten Sie zentrales Richtlinienmanagement, Workflows für Anfrage und Genehmigung sowie Transparenz über jede Entwickler-Workstation in Ihrer Organisation. Angetrieben von demselben Aikido-Intel-Feed. Stellen Sie es manuell bereit oder verwalten Sie es über Ihr 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.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

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 über eine versionierte Release-URL bereitgestellt (releases/download/1.5.15/...). 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 verwenden zu können.

    • 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

    root@kitploit:~
  • Die Ausgabe sollte "OK: Safe-chain works!" anzeigen, was bestätigt, dass Aikido Safe Chain ordnungsgemäß installiert ist und läuft.
  1. (Optional) Test der Malware-Blockierung durch den Versuch, ein Testpaket zu installieren:

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

    root@kitploit:~

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

root@kitploit:~
- Die Ausgabe sollte zeigen, dass die Aikido Safe Chain die Installation dieser Testpakete blockiert, da sie als Schadsoftware eingestuft werden.

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 die Pakete, die Sie installieren möchten, auf Schadsoftware. Dabei werden auch Python-Modulaufrufe für pip abgefangen, sofern verfügbar (z. B. `python -m pip install ...`, `python3 -m pip download ...`). Wenn Schadsoftware 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 von Paketen

Die Safe Chain führt Mindestalter-Prüfungen für Pakete in unterstützten Ökosystemen durch.

Die aktuelle Durchsetzung unterscheidet sich je nach Ökosystem:

  • npm-basierte Paketmanager:
    • Bei der normalen Paketauflösung unterdrückt die Safe Chain Versionen, die neuer als das konfigurierte Mindestalter sind, aus den von der Registry zurückgegebenen Paketmetadaten.
    • Für direkte Paket-Download-Anfragen, die diesen Metadatenfluss umgehen, kann die Safe Chain die Anfrage selbst mithilfe einer zwischengespeicherten Liste neu veröffentlichter Pakete blockieren.
  • Python-Paketmanager:
    • Bei der Paketauflösung unterdrückt die Safe Chain zu junge Dateien und Releases aus PyPI-Metadatenantworten.
    • Für direkte Paket-Download-Anfragen, die diesen Metadatenfluss umgehen, kann die 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 weiter unten.

Shell-Integration

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

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

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

Deinstallation

Um die Aikido Safe Chain zu deinstallieren, verwenden Sie unseren Einzeilen-Deinstallierer:

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)

❗Starten Sie Ihr Terminal nach der Deinstallation neu, um sicherzustellen, dass alle Aliase entfernt werden.

Konfiguration

Protokollierung

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

Konfigurationsoptionen

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

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

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

      root@kitploit:~
      npm install express --safe-chain-logging=silent
      
    • --safe-chain-logging=verbose - Aktiviert die detaillierte Diagnoseausgabe von Aikido Safe Chain. Nützlich zur Fehlersuche oder um zu verstehen, was Safe Chain hinter den Kulissen tut.

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

    root@kitploit:~

Gültige Werte: silent, normal, verbose

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

Datei-Logging

Sie können die Ausgabe von Aikido Safe Chain mithilfe des Flags --safe-chain-log-file oder der Umgebungsvariablen 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

Legen Sie diese über eine der folgenden Optionen fest (in der Reihenfolge der Priorität):

  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
    root@kitploit:~
  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
    root@kitploit:~
  3. Konfigurationsdatei (~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
    root@kitploit:~

logFileFormat — json (Standard) oder plain.

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

Mindestalter von Paketen

Sie können konfigurieren, wie lange Pakete existieren müssen, bevor Safe Chain ihre Installation erlaubt. 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 in den Paketmetadaten während der normalen Abhängigkeitsauflösung.
  • Safe Chain blockiert direkte Paketdownload-Anfragen, wenn sie 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 in den PyPI-Metadaten während der Abhängigkeitsauflösung.
  • Safe Chain blockiert direkte Paketdownload-Anfragen, wenn sie mit der zwischengespeicherten Liste neu veröffentlichter Pakete abgeglichen werden.

Konfigurationsoptionen

Sie können das Mindestalter von Paketen ü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
    root@kitploit:~
  2. Umgebungsvariable: ```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48 npm install express
    root@kitploit:~
  3. Konfigurationsdatei (~/.safe-chain/config.json): ```json { "minimumPackageAgeHours": 48 }
    root@kitploit:~

Pakete ausschließen

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

root@kitploit:~
Bitte fügen Sie den zu übersetzenden Markdown-Inhalt ein.```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 Umgebungsvariable oder Konfigurationsdatei festlegen. Beide Quellen werden zusammengeführt.

  1. Umgebungsvariable (kommagetrennt): ```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. Config-Datei (~/.safe-chain/config.json): ```json { "npm": { "customRegistries": ["npm.company.com", "registry.internal.net"] }, "pip": { "customRegistries": ["pip.company.com", "registry.internal.net"] } }
    root@kitploit:~

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 einzufügen. Wenn PIP_CONFIG_FILE gesetzt ist, führt Safe Chain seine Einstellungen in eine Kopie Ihrer Datei zusammen (Ihre ursprüngliche Datei wird nie geä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.

Malware-Listen-Basis-URL

Konfigurieren Sie Safe Chain so, dass es Malware-Datenbanken und Listen neuer Pakete von einer benutzerdefinierten Spiegel-URL abruft. Auf diese Weise können Sie eine eigene Kopie der Aikido-Malware-Datenbank hosten.

Konfigurationsoptionen

Sie können die Basis-URL für die 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
    root@kitploit:~
  2. Umgebungsvariable: ```shell export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com npm install express
    root@kitploit:~
  3. Konfigurationsdatei (~/.safe-chain/config.json): ```json { "malwareListBaseUrl": "https://your-mirror.com" }
    root@kitploit:~

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

  • /malware_predictions.json (JavaScript-Ökosystem-Malware-Datenbank)
  • /malware_pypi.json (Python-Ökosystem-Malware-Datenbank)
  • /releases/npm.json (JavaScript-Liste neuer Pakete)
  • /releases/pypi.json (Python-Liste neuer 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). Wird er gefunden, werden seine Einstellungen mit Ihrer Konfigurationsdatei im Home-Verzeichnis zusammengeführt: Werte aus der Projektkonfiguration haben Vorrang, und Arrays (wie customRegistries) werden aus beiden Dateien kombiniert, statt dass eine die andere ersetzt.

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

root@kitploit:~
Einstellungen wie `scanTimeout`, `malwareListBaseUrl` und die `logFile*`-Optionen können nicht aus einer Projektkonfigurationsdatei festgelegt werden – sie können nur aus Ihrer Konfiguration im Home-Verzeichnis, 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. in einem Docker-Image) oder wenn Sie Konflikte mit anderen Tools vermeiden müssen.

Wenn gesetzt, werden alle Safe-Chain-Daten (Binärdatei, Shims, Skripte, Konfiguration) unter dem benutzerdefinierten Verzeichnis abgelegt statt unter `~/.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:~
# 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 `--ci`-Flag, um Aikido Safe Chain automatisch für CI/CD-Umgebungen zu konfigurieren. Dadurch werden ausführbare Shims im PATH eingerichtet, 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.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, usw.)```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:~
## 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.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

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.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:~
## 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.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

Jenkins-Beispiel

Hinweis: Es wird davon ausgegangen, 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

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:~
## Bitbucket Pipelines Beispiel```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

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

Beispiel für GitLab-Pipelines

Um safe-chain in GitLab-Pipelines hinzuzufügen, müssen Sie es in dem Image installieren, das die Pipeline ausführt. Dies kann wie folgt 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.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. Erstellen Sie das Docker-Image in Ihrer 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

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

    root@kitploit:~

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

root@kitploit:~
# Fehlerbehebung

Haben Sie Probleme? Hilfe zu häufigen Problemen finden Sie im [Leitfaden zur Fehlerbehebung](https://github.com/aikidosec/safe-chain/blob/HEAD/docs/troubleshooting.md).

# 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 Verifikationsbefehle
   * Ausführliche Protokolle des fehlgeschlagenen Befehls (fügen Sie das Argument `--safe-chain-logging=verbose` hinzu)
Tool herunterladen