Skip to main content

Offengelegte, fest codierte Geheimnisse in Ihrem GitHub-Projekt mit Snyk finden und beheben

Artikel von
feature insights context

25. Juni 2024

0 Min. Lesezeit

Snyk ist ein hervorragendes Tool, um Schwachstellen in Projekten aufzuspüren – darunter auch fest codierte Geheimnisse. In diesem Blog zeigen wir Ihnen, wie Sie mit Snyk fest codierte Geheimnisse und Zugangsdaten aufspüren und anschließend unseren Code so umstrukturieren, dass diese Geheimnisse stattdessen mit Doppler gespeichert werden. Als Referenz verwenden wir das Open-Source-Projekt Snyk goof, ein Node.js-Boilerplate-Projekt. Folgen Sie uns also gern Schritt für Schritt.

Erste Schritte mit dem Snyk-goof-Projekt

Forken Sie zunächst das Snyk-goof-Projekt in Ihr GitHub-Konto. Dieses Beispielprojekt enthält zahlreiche Schwachstellen, die wir mit Snyk aufspüren können.

Erstellen Sie anschließend ein kostenloses Snyk-Konto. Rufen Sie dazu die Snyk-Anmeldeseite auf und melden Sie sich mit Ihrem GitHub-Konto (oder einem anderen bevorzugten Anbieter) an.

Registrierungsseite mit „Kostenlos loslegen“, „Keine Kreditkarte erforderlich“, einer GitHub-Schaltfläche und Optionen für Bitbucket, Google, Azure AD oder Docker ID

Sie müssen Snyk den Zugriff auf die mit Ihrem Konto verknüpfte E-Mail-Adresse gestatten. Snyk verwendet diese Adresse, um Ihnen wichtige Informationen zu senden, darunter Sicherheitsbenachrichtigungen und Berichte zu Ihren importierten Projekten.

Wenn Sie Snyk noch nicht verwendet haben, müssen Sie außerdem Ihre Zugriffseinstellungen konfigurieren, damit Snyk Ihre Projekte regelmäßig scannen und automatisch Pull Requests mit Korrekturen erstellen kann. Dazu müssen Sie Ihrem GitHub-Konto zusätzliche Berechtigungen erteilen.

Wählen Sie GitHub als Quelle für den Code Ihres Projekts aus (oder den Ort, an dem sich Ihr Code befindet). Anschließend können Sie wie im Screenshot unten gezeigt die Standardeinstellungen übernehmen und so alle empfohlenen Snyk-Funktionen nutzen. Sie können diese Berechtigungen deaktivieren, wenn Sie möchten. Dadurch können Sie jedoch die erweiterten und nützlichen Funktionen für Pull Requests mit Korrekturen nicht nutzen, mit denen sich Sicherheitskorrekturen und Dependency-Upgrades automatisieren lassen.

Liste aktivierter Funktionen mit Pull-Request-Prüfungen, neuen Pull Requests für Fixes, Pull Requests für Dependency-Upgrades und Snyk Code.

Wählen Sie anschließend das Snyk-goof-Projekt aus der Liste Ihrer GitHub-Repositories aus, um es Ihrem Snyk-Konto als Projekt hinzuzufügen.

Repository-Auswahloberfläche mit dem ausgewählten Repository „chandler767/nodejs-goof“ und einem Link zur Anzeige aller Repositories.

Um einen Abhängigkeitsgraphen zu erstellen, analysiert Snyk die Manifestdatei `package.json` im Node.js-Projekt goof. Der Graph umfasst sowohl die direkten Abhängigkeiten des goof-Projekts als auch deren transitive Abhängigkeiten. So wird nach und nach ein vollständiger Abhängigkeitsgraph erstellt. Anschließend vergleicht Snyk diese Abhängigkeiten mit der Schwachstellendatenbank und erstellt einen umfassenden Bericht.

Dashboard für die Sicherheitsanalyse des Projekts chandler767/nodejs-goof mit der Anzahl der Probleme in Dockerfile, package.json und Codeanalyse.

Im goof-Projekt gibt es eine ganze Reihe von Problemen. Snyk kann Ihnen dabei helfen, viele davon zu beheben, indem direkte Abhängigkeiten auf eine Version ohne Schwachstellen aktualisiert oder Schwachstellen gepatcht werden. Wir sehen uns nun die Codeanalyse genauer an und suchen nach den fest codierten Geheimnissen, die wir beheben müssen.

Geheimnisse beheben, die an GitHub übertragen wurden

Rufen Sie die Ansicht „Code Analysis“ auf und filtern Sie nach Verwendung fest codierter Zugangsdaten und fest codiertem Geheimnis.

Liste der Schwachstellentypen mit markierten Kategorien für die Verwendung hartcodierter Zugangsdaten und hartcodierter Geheimnisse sowie der Anzahl der Schwachstellen.

Wir müssen mehrere Geheimnisse beheben. Fügen Sie diese zunächst zu Doppler hinzu. So verhindern Sie, dass die Geheimnisse versehentlich offengelegt werden, zentralisieren ihre Verwaltung und können für Entwicklungs- und Produktionsumgebungen unterschiedliche Geheimnisse konfigurieren. So müssen Sie sich nie wieder Sorgen machen, sie an GitHub zu übertragen.

Klonen Sie das Goof-Projekt mit Git, um die erforderlichen Codeänderungen vorzunehmen. Folgen Sie anschließend der Anleitung in der Goof-Projekt-README, um das Projekt lokal auszuführen.

Wir beginnen mit der Behebung eines fest codierten Tokens in der Datei `app.js`:

Der Sicherheitsscan markiert ein fest codiertes Geheimnis-Token in app.js unter der CWE-547-Regel „Fest codiertes Geheimnis“.

Öffnen Sie `app.js` in Ihrem bevorzugten Code-Editor und suchen Sie die Token-Variable. Kopieren Sie das Token. Anschließend rufen wir Doppler auf, um ein kostenloses Konto zu erstellen.

Dunkle Anmeldeoberfläche mit Anmelden-Schaltflächen für Google und GitHub, Feld für geschäftliche E-Mail-Adresse, Link zum Zurücksetzen des Passworts und violetter Anmelden-Schaltfläche

Erstellen Sie in Ihrem Doppler-Konto ein neues Projekt mit dem Namen `Goof`.

Projektseite mit einer Schaltfläche „Projekt hinzufügen“ und einem Beispielprojekt mit beispielhaften Secrets

Die Umgebungen werden standardmäßig erstellt. Fügen Sie alle Geheimnisse zur Konfiguration Development > Dev hinzu. Anschließend können Sie die Geheimnisse in allen abgeleiteten Konfigurationen aktualisieren. Klicken Sie auf die Konfiguration Development > Dev und dann auf Add First Secret.

Violetter Dropdown-Button mit der Beschriftung „Erstes Secret hinzufügen“

Erstellen Sie ein Geheimnis mit dem Namen `SECRET_TOKEN` und dem Wert, der im Code fest codiert ist. Klicken Sie anschließend auf „Save“.

Secrets-Dashboard mit einer nicht gespeicherten Änderung, einem sichtbaren SECRET_TOKEN-Wert und einem roten Pfeil, der auf die Schaltfläche „Speichern“ zeigt

Nachdem wir das Geheimnis zu Doppler hinzugefügt haben, können wir es in unserem Code verwenden. Ersetzen Sie den fest codierten Token-Wert durch eine Umgebungsvariable. Mit der Doppler CLI fügen wir der Anwendung Geheimnisse hinzu. Ihr Code sollte so aussehen:

var token = process.env.SECRET_TOKEN;

Mit der Doppler CLI können Sie in jeder Umgebung auf Ihre Geheimnisse zugreifen – von der lokalen Entwicklung über CI/CD und Staging bis hin zur Produktion. Sie ist eine schlanke Binärdatei, die für alle gängigen Betriebssysteme, Paketmanager und Docker verfügbar ist.

Folgen Sie den Schritten auf der Installationsseite der Doppler CLI, um die Doppler CLI für Ihr System zu konfigurieren. In Doppler ist der Zugriff auf die Geheimnisse eines Projekts auf ein bestimmtes Verzeichnis in Ihrem Dateisystem beschränkt. So können Sie auf einem Rechner Geheimnisse für mehrere Projekte abrufen.

Wechseln Sie in Ihrem Terminal in das Verzeichnis des Goof-Projekts und richten Sie Doppler ein.

# Login to your Doppler account (if you haven't already)
doppler login

# Change to your project's directory
cd ./your/project/directory/nodejs-goof

# Select project and config
doppler setup

Wählen Sie das Projekt goof aus.

Terminal-Eingabeaufforderung mit Doppler-Einrichtung und ausgewähltem Projekt „a-goof-project“.

Wählen Sie die Konfiguration dev aus:

Terminal-Eingabeaufforderung zur Auswahl einer Konfiguration mit dev_personal sowie den Optionen dev, stg und prd.

Sie können Ihre Geheimnisse verwenden, indem Sie beim Starten Ihrer Anwendung den Befehl `‘doppler run’` anhängen. Mit diesem Befehl werden Ihre Geheimnisse in die Umgebung Ihrer Anwendung eingefügt.

doppler run npm start

Denken Sie daran, alle Ihre Geheimnisse hinzuzufügen und die Konfigurationen an Ihre Anwendung und die Anforderungen Ihres Teams anzupassen. Vielleicht interessieren Sie sich auch für automatische Neustarts der Anwendung, wenn Sie Geheimnisse bearbeiten.

Geheimnisse mit Snyk und Doppler schützen

Snyk und Doppler sind hervorragende Beispiele für Entwicklertools, die zusammen noch besser funktionieren. Integrieren Sie Snyk und Doppler noch heute und erleben Sie selbst, wie diese leistungsstarken Tools Ihren Entwicklungsprozess vereinfachen können. Erleben Sie Snyk und Doppler in Aktion – der erste Schritt zu einem sichereren und effizienteren Workflow.

Gepostet in:

Weiterlesen

feature insights context
Blog

Autonome Angriffe sind bereits Realität. Die Verteidigung muss Schritt halten.

Autonome Angreifer verkürzen das Zeitfenster für die Verteidigung. Erfahren Sie, wie kontinuierliches Erkennen, Beheben, Validieren und Verhindern Sicherheitsteams helfen kann, Schritt zu halten.

illustration hero ai
Blog

Der KI-Hurrikan ist da

KI beschleunigt gleichermaßen die Softwareentwicklung und Cyberangriffe. Führungskräfte müssen Agents und Code von Anfang an absichern, zur Laufzeit Kontrollen durchsetzen und Abwehrmaßnahmen unabhängig validieren.

feature insights context
Blog

Ist Prävention im Grunde ein gelöstes Problem?

Die Prävention in von Agenten generiertem Code ist architektonisch gelöst – die Herausforderung besteht jedoch weiterhin darin, Kontrollen zu wählen, die die Sicherheit schützen, ohne die Entwicklung zu verlangsamen.