DEV Community

Uhltak Therestismysecret
Uhltak Therestismysecret

Posted on

Supply Chain Attacks – Wie gefährlich sind sie wirklich? Sicherheitslücken in Abhängigkeiten

Supply Chain Attacks – Wie gefährlich sind sie wirklich?

Hinweis: Die folgenden Schritte sind fiktiv und für Demonstrationszwecke erstellt worden. Sie sollten in keinem Produktivumfeld durchgeführt werden.

Was ist eine Supply Chain Attack und wie gefährlich sind sie?

Eine Supply Chain Attack (SCA) bezeichnet eine Angriffsart, bei der ein Angreifer die Vertraulichkeit und Integrität einer Software, einschließlich ihrer Abhängigkeiten, missbraucht, um zu einer vollständigen Kontrolle über das gesamte System zu gelangen. Die Zulassung in die Abhängigkeiten erlaubt ihnen, die Einführung des angreifenden Codes in die Software zu verstecken.

Erkennen Sie es: Wenn Sie Ihre Software über ein Git-Repository wie GitHub oder GitLab installieren, schaffen Sie eine direkte Verbindung zu diesen Anbietern und, im Fall von Git-Diensten wie GitHub.com, sogar eine direkte, nicht-spezifische Authentifizierung. Beispiele für bekannte Schwachstellen finden Sie in der Common Vulnerabilities and Exposures (CVE) Datenbank. Der erste Schritt zur Entwicklung von SCAs besteht darin, mit der Untersuchung der Abhängigkeiten des Systemadministrators zu beginnen.

Sicherheits-Check: Abhängigkeiten und Pakete analysieren und testen

Um die Möglichkeiten im Zusammenhang mit SCAs zu verstehen, müssen wir zuerst einmal die Abhängigkeiten der eigenen Abhängigkeiten erkennen. Für jedes verwendete Projekt analysieren Sie die folgenden Informationen:

  • Versionsinformationen: Die aktuelle Version der Abhängigkeit oder des Pakets und der ursprünglichen Versionsnummer.

  • Gehostete Repositorys: Jede Remote-Repository-Adresse, aus der das Paket abgeleitet wurde.

  • Git-Bücher und Revisionen: Ein Ausdruck der Git-Revisionsnummern und der Dateien, die für jede Abhängigkeit und Abhängigkeit importiert wurden.

Beispiel:

  • Angenommen, ein Projekt kann den nodered Container, Version 0.11.2, installieren.

  • Das Projekt hat docker.io und docker.io/library/node:14 in der Dockerfile:

\docker
FROM docker.io/library/node:14
WORKDIR /home/node
USER node
WORKDIR /home/node/repo
RUN export DEBIAN_FRONTEND=noninteractive && \\
apt-get update && \\
apt-get install -y \\
sudo apt-get install -y \\
npm && \\
npm i \\
HOME=/home/node && npm install -g nodered --unsafe-perm && \\
npm config set registry \\
rm npmrc \\
npm ls node:14 \\
npm i node:14 \\
npm i
RUN docker-compose -f docker-compose.yml up --build && docker run -d \\
-d --net=host \\
docker container ls -a | grep node:14 \\
\
\

  • Der angreifende Code wird in die Remote-Repository-Adresse docker.io übertragen, wo der installierte node:14 ein Paket enthält, das die Angreifer haben wollten.

  • Git-Bücher wurden nicht angehangen.

Der Administrator muss sicherstellen, dass alle Abhängigkeiten und Pakete regelmäßig, gegebenenfalls unter Verwendung von mitgelieferten Werkzeugen und gefertigten Scripts geprüft und geaktioniert werden, nachdem diese das Deployment erreicht haben, um sicherzustellen, dass der Angreifer nicht in den Anfang der Abhängigkeiten eingeführt wurde.

Beispiel:

  • Installieren der node:14 -f-Anweisung auf der node:14-Aktion muss für alle Pakete mitgeliefert sein, die apt-get (als Debian oder Ubuntu) installiert wurden.

  • Setzung der build: true-Eigenschaft im Dockerfile-Code (als Docker und Debian), um sicherzustellen, dass der Anwender immer mit dem Abhängigkeitssuchcode verwaltet wird, anstatt des Paketeinsatzes.

  • Nutzen Sie die Möglichkeit, eine Liste mit aufgelösten Paketen (gegebenenfalls über Docker), um sicherzustellen, dass alle Informationen vorhanden sind und gegebenenfalls aktualisiert werden müssen.

### Überprüfung der Abhängigkeiten und Abhängigkeiten

Verwenden Sie die folgenden Beispiele, um die Informationen über Abhängigkeiten und Abhängigkeiten aus den Systemvariablen oder Log-Dateien zu extrahieren. Mit diesem Code können Sie die Datenbanken von Abhängigkeiten und Paketen nach Abhängigkeiten und Paketen durchsuchen, die durch das Abhängigkeitssystem gelöst werden, um die Möglichkeit zu erforschen, wie ein möglicher Angreifer die Informationen in die Abhängigkeiten der Software eingebracht hat, wenn Sie sich in der Version 16 von Node.js installiert haben (als Beispiel).

\`node
// Abhängigkeitssystem: Installieren des Pakets für Node.js Version 16
const express = require('express')
const { spawnSync } = require(

Top comments (0)