Open-Source-Sicherheit: Einführung in das Runtime-Monitoring
Aner Mazur
12. November 2018
0 Min. LesezeitSnyk hat jetzt die erste Funktion seiner Lösung für das Runtime-Monitoring der Anwendungssicherheit veröffentlicht. Damit können Entwickler das tatsächliche Verhalten ihrer Open-Source-Komponenten zur Laufzeit überwachen!
Derzeit können Open-Source-Abhängigkeiten analysiert werden, wenn Snyk in das Repository eines Projekts oder in dessen CI-Zyklus integriert ist. Dabei werden anfällige Abhängigkeiten gekennzeichnet und Maßnahmen zur Behebung vorgeschlagen. Snyk investiert intensiv darin, die Behebung von Schwachstellen so einfach wie möglich in den Entwicklungs-Workflow einzubetten – etwa durch das Erstellen von Pull Requests mit Korrekturen, das Bereitstellen von Patches, wenn ein Upgrade nicht möglich ist, und vieles mehr.
Doch selbst wenn sich Schwachstellen relativ einfach beheben lassen, können Entwickler und Unternehmen noch einen großen Rückstand an Schwachstellen haben, um den sie sich kümmern müssen. Jeder Hinweis zur Priorisierung ist hilfreich. Wir sind überzeugt, dass es dabei entscheidend ist festzustellen, ob eine anfällige Abhängigkeit tatsächlich zur Laufzeit auf eine ausnutzbare Weise verwendet wird. Einige Lösungen auf dem Markt versuchen, dies mithilfe statischer Code-Analyse zu ermitteln. Das Hauptproblem dabei ist die hohe Zahl falsch positiver und falsch negativer Ergebnisse (zum Beispiel, wenn Code dynamisch aufgerufen wird oder nur bei einer bestimmten Eingabe erreichbar ist usw.).
Snyk bietet eine Lösung, die das tatsächliche Laufzeitverhalten der Anwendung überwacht und genau anzeigt, ob anfällige Funktionen in den Abhängigkeiten eines Projekts aufgerufen werden.
Sie können sich darauf verlassen, dass wir intensiv daran gearbeitet haben, die Auswirkungen auf die Anwendungsleistung so gering wie möglich zu halten. Wir werden dies auch weiterhin testen. Derzeit bieten wir für unsere Runtime-Lösung einen geschlossenen Early Access als Beta-Version an. Wenn Sie sie ausprobieren möchten, schreiben Sie uns bitte eine E-Mail an runtime@snyk.io!
Schwachstellen anhand von Runtime-Aufrufdaten priorisieren
Sobald der Agent ordnungsgemäß installiert ist und laufende Instanzen der überwachten Anwendung instrumentiert, sehen Sie auf der Karte mit den Problemdetails einen Hinweis darauf, ob anfällige Funktionen kürzlich in einer überwachten Anwendungsinstanz aufgerufen wurden. Die Schwachstellen werden danach sortiert, ob sie zur Laufzeit aufgerufen wurden, und anschließend nach Schweregrad. Außerdem werden die Namen und Pfade aller anfälligen Funktionen angezeigt. So lässt sich die Triage vereinfachen, weil Sie nachvollziehen können, welche Teile Ihrer Anwendung diese Funktionen verwenden. Wir zeigen Ihnen auch, wie lange der letzte Aufruf einer anfälligen Funktion zurückliegt.

Da möglicherweise mehrere überwachte Anwendungsinstanzen gleichzeitig laufen, sehen Sie unten rechts in den Projektmetadaten die Anzahl der überwachten Instanzen.

Erste Schritte mit Node.js
Um mit der Überwachung Ihrer Node.js-Anwendungen zu beginnen, fügen Sie Ihrem Projekt die Abhängigkeit @snyk/nodejs-runtime-agent hinzu. Führen Sie dazu im Projektordner folgenden Befehl aus: npm install @snyk/nodejs-runtime-agent. Konfigurieren Sie sie so früh wie möglich in der Startsequenz Ihrer Anwendung. Ein möglicher Ablauf sieht so aus:
Im obigen Codeausschnitt wird die Abhängigkeit @snyk/nodejs-runtime-agent vor jeder anderen require-Anweisung eingebunden. So kann der Agent alle erforderlichen Abhängigkeiten prüfen und einen Ausführungshook erstellen. Dieser signalisiert dem Agent, wenn die Anwendung anfällige Funktionen aufruft.
Für die Konfiguration des Agents wird die ID eines auf snyk.io überwachten Projekts benötigt. Sie können die Projekt-ID über die API abrufen oder auf der Einstellungsseite des Projekts auf snyk.io nachsehen.
Weitere Informationen finden Sie in unserer Dokumentation zur Installation des Runtime-Schutzes.
Erste Schritte mit Java
Um mit der Überwachung Ihrer Java-Anwendungen zu beginnen, laden Sie unseren Runtime-Agent für Java (.ZIP) herunter und entpacken Sie das Archiv.
Kopieren Sie
snyk-java-runtime-agent.jarin den Ordner Ihrer Anwendung.Erstellen Sie am Speicherort der Agent-JAR-Datei eine Datei namens
snyk-agent.properties. Fügen Sie darin die Projekt-ID Ihres Snyk-Projekts ein, zum Beispiel:projectId=0462e42b-c92f-4b48-bac8-81eb3ff7f43e.Fügen Sie dem Java-Befehl, mit dem Sie Ihre Anwendung starten, den Agent als Befehlszeilenargument hinzu, zum Beispiel:
java -javaagent:path/to/snyk-java-runtime-agent.jar -jar my-app.jar.- Wenn Sie Apache Maven verwenden, fügen Sie-javaagent:path/to/snyk-java-runtime-agent.jarIhrer UmgebungsvariableMAVEN_OPTShinzu.
- Wenn Sie JavaEE-Container wie GlassFish verwenden, suchen Sie dieJVM Optionsund fügen Sie-javaagent:path/to/snyk-java-runtime-agent.jarals Option hinzu.
Demnächst verfügbar
Nach dem Sammeln Ihres Feedbacks planen wir, unser Runtime-Angebot in den nächsten Wochen aus der Closed Beta zu veröffentlichen.
Wie geht es weiter? Wenn Entwickler Open-Source-Komponenten zur Laufzeit auf bösartiges Verhalten überwachen und diese Daten mit den Scan-Ergebnissen des Quellcodes verknüpfen können, können sie Open-Source-Sicherheit über den gesamten Lebenszyklus der Anwendung hinweg verantworten – bei bekannten wie unbekannten Schwachstellen. Die Instrumentierung der Anwendung zur Laufzeit ermöglicht viele weitere Funktionen, die auf der heute veröffentlichten Runtime-basierten Priorisierung von Schwachstellen aufbauen. Diese werden in den kommenden Monaten verfügbar sein. Bleiben Sie dran!
Starten Sie mit Capture-the-Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.



