Coders Conquer Security Infrastructure as Code Series - Verwendung von Komponenten aus nicht vertrauenswürdigen Quellen
Wir nähern uns dem Ende unserer Infrastructure as Code-Serie, aber es war großartig, Entwicklern wie Ihnen auf ihrer IaC-Sicherheitsreise zu helfen.
Haben Sie die Herausforderungen gespielt? Wie ist Ihr Ergebnis bis jetzt? Bevor wir loslegen, wollen wir sehen, wie viel Sie bereits über die Fallstricke bei der Verwendung von Komponenten aus nicht vertrauenswürdigen Quellen wissen:
Haben Sie noch etwas zu tun? Lesen Sie weiter:
Das Verhalten, das eine Schwachstelle hervorruft, auf das wir uns heute konzentrieren werden, ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen, eine scheinbar harmlose Praxis, die große Probleme verursacht. Die Verwendung von Open-Source-Code und -Ressourcen hat viele Vorteile. Im Allgemeinen ermöglicht es Experten, ihre Ideen, ihre Arbeit und sogar fertigen Code zu Repositories wie GitHub beizusteuern, damit sie von anderen genutzt werden können, die sich darum bemühen, dass sich ein Programm oder eine App richtig verhält. Die Verwendung von fertigem Code zur Regelung von Programmfunktionen erspart es Entwicklern, das Rad jedes Mal neu erfinden zu müssen, wenn sie eine neue Anwendung erstellen müssen.
Die Verwendung von Codeschnipseln aus unzuverlässigen, ungeprüften oder sogar potenziell gefährlichen Quellen birgt jedoch ein großes Risiko. Tatsächlich ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen einer der häufigsten Wege, auf dem sich größere und kleinere Sicherheitslücken in ansonsten sichere Anwendungen einschleichen. Manchmal werden diese Schwachstellen versehentlich von ihren Erstellern herbeigeführt. Es gab auch schon Fälle, in denen bösartiger Code von potenziellen Angreifern geschrieben wurde. Der Code wird dann weitergegeben, in der Hoffnung, Opfer zu umgarnen, die ihn in ihre Anwendungen einbauen.
Warum ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen gefährlich?
Nehmen wir an, ein Entwickler hat es eilig und muss eine Anwendung, die er entwickelt, konfigurieren. Das kann ein kniffliger Prozess sein. Anstatt also viel Zeit damit zu verbringen, jede mögliche Konfiguration auszuarbeiten, macht er eine Google-Suche und findet jemanden, der bereits eine scheinbar perfekte Konfigurationsdatei fertiggestellt hat. Auch wenn der Entwickler nichts über die Person weiß, die den Code geschrieben hat, ist es relativ einfach, ihn zu einer neuen Anwendung hinzuzufügen. Es kann in der Docker-Umgebung mit zwei Zeilen erfolgen:
RUN cd /etc/apache2/sites-available/ && \
wget -O default-ssl.conf https://gist.githubusercontent.com/vesche/\
9d372cfa8855a6be74bcca86efadfbbf/raw/\
fbdfbe230fa256a6fb78e5e000aebded60d6a5ef/default-ssl.conf
Jetzt zieht das Docker-Image die Konfigurationsdatei eines Drittanbieters dynamisch ein. Und selbst wenn die Datei zu diesem Zeitpunkt getestet und für in Ordnung befunden wird, bedeutet die Tatsache, dass der Zeiger nun in den Code der neuen Anwendung eingebettet ist, dass eine permanente Abhängigkeit vorhanden ist. Tage, Wochen oder Monate später könnte die Datei vom ursprünglichen Autor oder einem Angreifer, der das Code-Repository kompromittiert hat, geändert werden. Plötzlich kann die freigegebene Konfigurationsdatei der Anwendung sagen, dass sie sich ganz anders verhalten soll als beabsichtigt, was möglicherweise unbefugten Benutzern Zugriff gewährt oder sogar direkt Daten stiehlt und exfiltriert.
Bessere Nutzung gemeinsamer Ressourcen
Wenn Ihre Organisation die Verwendung von Code aus externen Quellen zulässt, müssen Prozesse eingerichtet werden, um sicherzustellen, dass dies sicher geschieht. Wenn Sie fremden Code für eine mögliche Verwendung evaluieren, achten Sie darauf, dass Sie Komponenten aus offiziellen Quellen nur über sichere Links beziehen. Und selbst dann sollten Sie niemals eine Verbindung zu einer externen Quelle herstellen, um diesen Code einzuholen, da dies den Prozess Ihrer Kontrolle entzieht. Stattdessen sollte genehmigter Code in eine sichere Bibliothek eingebracht werden und nur von diesem geschützten Ort aus verwendet werden. In einer Docker-Umgebung würde der Code also wie folgt aussehen:
COPY src/config/default-ssl.conf /etc/apache2/sites-available/
Anstatt sich auf entfernte Konfigurationsdateien von Drittanbietern zu verlassen, würde dies stattdessen auf eine lokale Kopie dieser Dateien setzen. Dies verhindert, dass unerwartete oder böswillige Änderungen vorgenommen werden.
Zusätzlich zur Verwendung einer sicheren Code-Bibliothek sollte ein Patch-Management-Prozess eingerichtet werden, um Komponenten während des gesamten Software-Lebenszyklus kontinuierlich zu überwachen. Alle client- und serverseitigen Komponenten sollten außerdem mit Tools wie NVD oder CVE auf Sicherheitswarnungen überprüft werden. Schließlich sollten alle nicht genutzten oder unnötigen Abhängigkeiten und Funktionen entfernt werden, die möglicherweise mit dem externen Code einhergehen.
Wenn Sie diese Schritte befolgen, können Entwickler externe Ressourcen sicherer nutzen, ohne versehentlich Schwachstellen in ihre Anwendungen und ihren Code einzubringen.
Schauen Sie sich die Secure Code Warrior Blog-Seiten, um weitere Einblicke in diese Schwachstelle zu erhalten und zu erfahren, wie Sie Ihr Unternehmen und Ihre Kunden vor den Auswirkungen anderer Sicherheitslücken schützen können. Sie können auch eine Demo der IaC-Herausforderungen auf der Schulungsplattform Secure Code Warrior ausprobieren, um alle Ihre Cybersecurity-Fähigkeiten zu schärfen und auf dem neuesten Stand zu halten.
Das Verhalten, das eine Schwachstelle hervorruft, auf das wir uns hier konzentrieren werden, ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen, eine scheinbar harmlose Praxis, die große Probleme verursacht.
Matias Madou, Ph.D., ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent im Bereich Anwendungssicherheit und konzentrierte sich dabei auf statische Analyselösungen. Später wechselte er zu Fortify in den USA, wo er erkannte, dass es nicht ausreicht, nur Codeprobleme zu erkennen, ohne den Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, den Aufwand für die Sicherheit verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht an seinem Schreibtisch im Team Awesome sitzt, steht er gerne auf der Bühne und hält Vorträge auf Konferenzen wie der RSA Conference, BlackHat und DefCon.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenMatias Madou, Ph.D., ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent im Bereich Anwendungssicherheit und konzentrierte sich dabei auf statische Analyselösungen. Später wechselte er zu Fortify in den USA, wo er erkannte, dass es nicht ausreicht, nur Codeprobleme zu erkennen, ohne den Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, den Aufwand für die Sicherheit verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht an seinem Schreibtisch im Team Awesome sitzt, steht er gerne auf der Bühne und hält Vorträge auf Konferenzen wie der RSA Conference, BlackHat und DefCon.
Matias ist ein Forscher und Entwickler mit mehr als 15 Jahren praktischer Erfahrung im Bereich der Softwaresicherheit. Er hat Lösungen für Unternehmen wie Fortify Software und sein eigenes Unternehmen Sensei Security entwickelt. Im Laufe seiner Karriere hat Matias mehrere Forschungsprojekte zur Anwendungssicherheit geleitet, die zu kommerziellen Produkten geführt haben, und kann auf über 10 Patente verweisen. Wenn er nicht am Schreibtisch sitzt, ist Matias als Ausbilder für fortgeschrittene Anwendungssicherheitstrainings courses tätig und hält regelmäßig Vorträge auf globalen Konferenzen wie RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec und BruCon.
Matias hat einen Doktortitel in Computertechnik von der Universität Gent, wo er die Sicherheit von Anwendungen durch Programmverschleierung untersuchte, um die innere Funktionsweise einer Anwendung zu verbergen.
Wir nähern uns dem Ende unserer Infrastructure as Code-Serie, aber es war großartig, Entwicklern wie Ihnen auf ihrer IaC-Sicherheitsreise zu helfen.
Haben Sie die Herausforderungen gespielt? Wie ist Ihr Ergebnis bis jetzt? Bevor wir loslegen, wollen wir sehen, wie viel Sie bereits über die Fallstricke bei der Verwendung von Komponenten aus nicht vertrauenswürdigen Quellen wissen:
Haben Sie noch etwas zu tun? Lesen Sie weiter:
Das Verhalten, das eine Schwachstelle hervorruft, auf das wir uns heute konzentrieren werden, ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen, eine scheinbar harmlose Praxis, die große Probleme verursacht. Die Verwendung von Open-Source-Code und -Ressourcen hat viele Vorteile. Im Allgemeinen ermöglicht es Experten, ihre Ideen, ihre Arbeit und sogar fertigen Code zu Repositories wie GitHub beizusteuern, damit sie von anderen genutzt werden können, die sich darum bemühen, dass sich ein Programm oder eine App richtig verhält. Die Verwendung von fertigem Code zur Regelung von Programmfunktionen erspart es Entwicklern, das Rad jedes Mal neu erfinden zu müssen, wenn sie eine neue Anwendung erstellen müssen.
Die Verwendung von Codeschnipseln aus unzuverlässigen, ungeprüften oder sogar potenziell gefährlichen Quellen birgt jedoch ein großes Risiko. Tatsächlich ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen einer der häufigsten Wege, auf dem sich größere und kleinere Sicherheitslücken in ansonsten sichere Anwendungen einschleichen. Manchmal werden diese Schwachstellen versehentlich von ihren Erstellern herbeigeführt. Es gab auch schon Fälle, in denen bösartiger Code von potenziellen Angreifern geschrieben wurde. Der Code wird dann weitergegeben, in der Hoffnung, Opfer zu umgarnen, die ihn in ihre Anwendungen einbauen.
Warum ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen gefährlich?
Nehmen wir an, ein Entwickler hat es eilig und muss eine Anwendung, die er entwickelt, konfigurieren. Das kann ein kniffliger Prozess sein. Anstatt also viel Zeit damit zu verbringen, jede mögliche Konfiguration auszuarbeiten, macht er eine Google-Suche und findet jemanden, der bereits eine scheinbar perfekte Konfigurationsdatei fertiggestellt hat. Auch wenn der Entwickler nichts über die Person weiß, die den Code geschrieben hat, ist es relativ einfach, ihn zu einer neuen Anwendung hinzuzufügen. Es kann in der Docker-Umgebung mit zwei Zeilen erfolgen:
RUN cd /etc/apache2/sites-available/ && \
wget -O default-ssl.conf https://gist.githubusercontent.com/vesche/\
9d372cfa8855a6be74bcca86efadfbbf/raw/\
fbdfbe230fa256a6fb78e5e000aebded60d6a5ef/default-ssl.conf
Jetzt zieht das Docker-Image die Konfigurationsdatei eines Drittanbieters dynamisch ein. Und selbst wenn die Datei zu diesem Zeitpunkt getestet und für in Ordnung befunden wird, bedeutet die Tatsache, dass der Zeiger nun in den Code der neuen Anwendung eingebettet ist, dass eine permanente Abhängigkeit vorhanden ist. Tage, Wochen oder Monate später könnte die Datei vom ursprünglichen Autor oder einem Angreifer, der das Code-Repository kompromittiert hat, geändert werden. Plötzlich kann die freigegebene Konfigurationsdatei der Anwendung sagen, dass sie sich ganz anders verhalten soll als beabsichtigt, was möglicherweise unbefugten Benutzern Zugriff gewährt oder sogar direkt Daten stiehlt und exfiltriert.
Bessere Nutzung gemeinsamer Ressourcen
Wenn Ihre Organisation die Verwendung von Code aus externen Quellen zulässt, müssen Prozesse eingerichtet werden, um sicherzustellen, dass dies sicher geschieht. Wenn Sie fremden Code für eine mögliche Verwendung evaluieren, achten Sie darauf, dass Sie Komponenten aus offiziellen Quellen nur über sichere Links beziehen. Und selbst dann sollten Sie niemals eine Verbindung zu einer externen Quelle herstellen, um diesen Code einzuholen, da dies den Prozess Ihrer Kontrolle entzieht. Stattdessen sollte genehmigter Code in eine sichere Bibliothek eingebracht werden und nur von diesem geschützten Ort aus verwendet werden. In einer Docker-Umgebung würde der Code also wie folgt aussehen:
COPY src/config/default-ssl.conf /etc/apache2/sites-available/
Anstatt sich auf entfernte Konfigurationsdateien von Drittanbietern zu verlassen, würde dies stattdessen auf eine lokale Kopie dieser Dateien setzen. Dies verhindert, dass unerwartete oder böswillige Änderungen vorgenommen werden.
Zusätzlich zur Verwendung einer sicheren Code-Bibliothek sollte ein Patch-Management-Prozess eingerichtet werden, um Komponenten während des gesamten Software-Lebenszyklus kontinuierlich zu überwachen. Alle client- und serverseitigen Komponenten sollten außerdem mit Tools wie NVD oder CVE auf Sicherheitswarnungen überprüft werden. Schließlich sollten alle nicht genutzten oder unnötigen Abhängigkeiten und Funktionen entfernt werden, die möglicherweise mit dem externen Code einhergehen.
Wenn Sie diese Schritte befolgen, können Entwickler externe Ressourcen sicherer nutzen, ohne versehentlich Schwachstellen in ihre Anwendungen und ihren Code einzubringen.
Schauen Sie sich die Secure Code Warrior Blog-Seiten, um weitere Einblicke in diese Schwachstelle zu erhalten und zu erfahren, wie Sie Ihr Unternehmen und Ihre Kunden vor den Auswirkungen anderer Sicherheitslücken schützen können. Sie können auch eine Demo der IaC-Herausforderungen auf der Schulungsplattform Secure Code Warrior ausprobieren, um alle Ihre Cybersecurity-Fähigkeiten zu schärfen und auf dem neuesten Stand zu halten.
Wir nähern uns dem Ende unserer Infrastructure as Code-Serie, aber es war großartig, Entwicklern wie Ihnen auf ihrer IaC-Sicherheitsreise zu helfen.
Haben Sie die Herausforderungen gespielt? Wie ist Ihr Ergebnis bis jetzt? Bevor wir loslegen, wollen wir sehen, wie viel Sie bereits über die Fallstricke bei der Verwendung von Komponenten aus nicht vertrauenswürdigen Quellen wissen:
Haben Sie noch etwas zu tun? Lesen Sie weiter:
Das Verhalten, das eine Schwachstelle hervorruft, auf das wir uns heute konzentrieren werden, ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen, eine scheinbar harmlose Praxis, die große Probleme verursacht. Die Verwendung von Open-Source-Code und -Ressourcen hat viele Vorteile. Im Allgemeinen ermöglicht es Experten, ihre Ideen, ihre Arbeit und sogar fertigen Code zu Repositories wie GitHub beizusteuern, damit sie von anderen genutzt werden können, die sich darum bemühen, dass sich ein Programm oder eine App richtig verhält. Die Verwendung von fertigem Code zur Regelung von Programmfunktionen erspart es Entwicklern, das Rad jedes Mal neu erfinden zu müssen, wenn sie eine neue Anwendung erstellen müssen.
Die Verwendung von Codeschnipseln aus unzuverlässigen, ungeprüften oder sogar potenziell gefährlichen Quellen birgt jedoch ein großes Risiko. Tatsächlich ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen einer der häufigsten Wege, auf dem sich größere und kleinere Sicherheitslücken in ansonsten sichere Anwendungen einschleichen. Manchmal werden diese Schwachstellen versehentlich von ihren Erstellern herbeigeführt. Es gab auch schon Fälle, in denen bösartiger Code von potenziellen Angreifern geschrieben wurde. Der Code wird dann weitergegeben, in der Hoffnung, Opfer zu umgarnen, die ihn in ihre Anwendungen einbauen.
Warum ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen gefährlich?
Nehmen wir an, ein Entwickler hat es eilig und muss eine Anwendung, die er entwickelt, konfigurieren. Das kann ein kniffliger Prozess sein. Anstatt also viel Zeit damit zu verbringen, jede mögliche Konfiguration auszuarbeiten, macht er eine Google-Suche und findet jemanden, der bereits eine scheinbar perfekte Konfigurationsdatei fertiggestellt hat. Auch wenn der Entwickler nichts über die Person weiß, die den Code geschrieben hat, ist es relativ einfach, ihn zu einer neuen Anwendung hinzuzufügen. Es kann in der Docker-Umgebung mit zwei Zeilen erfolgen:
RUN cd /etc/apache2/sites-available/ && \
wget -O default-ssl.conf https://gist.githubusercontent.com/vesche/\
9d372cfa8855a6be74bcca86efadfbbf/raw/\
fbdfbe230fa256a6fb78e5e000aebded60d6a5ef/default-ssl.conf
Jetzt zieht das Docker-Image die Konfigurationsdatei eines Drittanbieters dynamisch ein. Und selbst wenn die Datei zu diesem Zeitpunkt getestet und für in Ordnung befunden wird, bedeutet die Tatsache, dass der Zeiger nun in den Code der neuen Anwendung eingebettet ist, dass eine permanente Abhängigkeit vorhanden ist. Tage, Wochen oder Monate später könnte die Datei vom ursprünglichen Autor oder einem Angreifer, der das Code-Repository kompromittiert hat, geändert werden. Plötzlich kann die freigegebene Konfigurationsdatei der Anwendung sagen, dass sie sich ganz anders verhalten soll als beabsichtigt, was möglicherweise unbefugten Benutzern Zugriff gewährt oder sogar direkt Daten stiehlt und exfiltriert.
Bessere Nutzung gemeinsamer Ressourcen
Wenn Ihre Organisation die Verwendung von Code aus externen Quellen zulässt, müssen Prozesse eingerichtet werden, um sicherzustellen, dass dies sicher geschieht. Wenn Sie fremden Code für eine mögliche Verwendung evaluieren, achten Sie darauf, dass Sie Komponenten aus offiziellen Quellen nur über sichere Links beziehen. Und selbst dann sollten Sie niemals eine Verbindung zu einer externen Quelle herstellen, um diesen Code einzuholen, da dies den Prozess Ihrer Kontrolle entzieht. Stattdessen sollte genehmigter Code in eine sichere Bibliothek eingebracht werden und nur von diesem geschützten Ort aus verwendet werden. In einer Docker-Umgebung würde der Code also wie folgt aussehen:
COPY src/config/default-ssl.conf /etc/apache2/sites-available/
Anstatt sich auf entfernte Konfigurationsdateien von Drittanbietern zu verlassen, würde dies stattdessen auf eine lokale Kopie dieser Dateien setzen. Dies verhindert, dass unerwartete oder böswillige Änderungen vorgenommen werden.
Zusätzlich zur Verwendung einer sicheren Code-Bibliothek sollte ein Patch-Management-Prozess eingerichtet werden, um Komponenten während des gesamten Software-Lebenszyklus kontinuierlich zu überwachen. Alle client- und serverseitigen Komponenten sollten außerdem mit Tools wie NVD oder CVE auf Sicherheitswarnungen überprüft werden. Schließlich sollten alle nicht genutzten oder unnötigen Abhängigkeiten und Funktionen entfernt werden, die möglicherweise mit dem externen Code einhergehen.
Wenn Sie diese Schritte befolgen, können Entwickler externe Ressourcen sicherer nutzen, ohne versehentlich Schwachstellen in ihre Anwendungen und ihren Code einzubringen.
Schauen Sie sich die Secure Code Warrior Blog-Seiten, um weitere Einblicke in diese Schwachstelle zu erhalten und zu erfahren, wie Sie Ihr Unternehmen und Ihre Kunden vor den Auswirkungen anderer Sicherheitslücken schützen können. Sie können auch eine Demo der IaC-Herausforderungen auf der Schulungsplattform Secure Code Warrior ausprobieren, um alle Ihre Cybersecurity-Fähigkeiten zu schärfen und auf dem neuesten Stand zu halten.
Klicken Sie auf den unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht ansehenDemo buchenMatias Madou, Ph.D., ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent im Bereich Anwendungssicherheit und konzentrierte sich dabei auf statische Analyselösungen. Später wechselte er zu Fortify in den USA, wo er erkannte, dass es nicht ausreicht, nur Codeprobleme zu erkennen, ohne den Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, den Aufwand für die Sicherheit verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht an seinem Schreibtisch im Team Awesome sitzt, steht er gerne auf der Bühne und hält Vorträge auf Konferenzen wie der RSA Conference, BlackHat und DefCon.
Matias ist ein Forscher und Entwickler mit mehr als 15 Jahren praktischer Erfahrung im Bereich der Softwaresicherheit. Er hat Lösungen für Unternehmen wie Fortify Software und sein eigenes Unternehmen Sensei Security entwickelt. Im Laufe seiner Karriere hat Matias mehrere Forschungsprojekte zur Anwendungssicherheit geleitet, die zu kommerziellen Produkten geführt haben, und kann auf über 10 Patente verweisen. Wenn er nicht am Schreibtisch sitzt, ist Matias als Ausbilder für fortgeschrittene Anwendungssicherheitstrainings courses tätig und hält regelmäßig Vorträge auf globalen Konferenzen wie RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec und BruCon.
Matias hat einen Doktortitel in Computertechnik von der Universität Gent, wo er die Sicherheit von Anwendungen durch Programmverschleierung untersuchte, um die innere Funktionsweise einer Anwendung zu verbergen.
Wir nähern uns dem Ende unserer Infrastructure as Code-Serie, aber es war großartig, Entwicklern wie Ihnen auf ihrer IaC-Sicherheitsreise zu helfen.
Haben Sie die Herausforderungen gespielt? Wie ist Ihr Ergebnis bis jetzt? Bevor wir loslegen, wollen wir sehen, wie viel Sie bereits über die Fallstricke bei der Verwendung von Komponenten aus nicht vertrauenswürdigen Quellen wissen:
Haben Sie noch etwas zu tun? Lesen Sie weiter:
Das Verhalten, das eine Schwachstelle hervorruft, auf das wir uns heute konzentrieren werden, ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen, eine scheinbar harmlose Praxis, die große Probleme verursacht. Die Verwendung von Open-Source-Code und -Ressourcen hat viele Vorteile. Im Allgemeinen ermöglicht es Experten, ihre Ideen, ihre Arbeit und sogar fertigen Code zu Repositories wie GitHub beizusteuern, damit sie von anderen genutzt werden können, die sich darum bemühen, dass sich ein Programm oder eine App richtig verhält. Die Verwendung von fertigem Code zur Regelung von Programmfunktionen erspart es Entwicklern, das Rad jedes Mal neu erfinden zu müssen, wenn sie eine neue Anwendung erstellen müssen.
Die Verwendung von Codeschnipseln aus unzuverlässigen, ungeprüften oder sogar potenziell gefährlichen Quellen birgt jedoch ein großes Risiko. Tatsächlich ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen einer der häufigsten Wege, auf dem sich größere und kleinere Sicherheitslücken in ansonsten sichere Anwendungen einschleichen. Manchmal werden diese Schwachstellen versehentlich von ihren Erstellern herbeigeführt. Es gab auch schon Fälle, in denen bösartiger Code von potenziellen Angreifern geschrieben wurde. Der Code wird dann weitergegeben, in der Hoffnung, Opfer zu umgarnen, die ihn in ihre Anwendungen einbauen.
Warum ist die Verwendung von Code aus nicht vertrauenswürdigen Quellen gefährlich?
Nehmen wir an, ein Entwickler hat es eilig und muss eine Anwendung, die er entwickelt, konfigurieren. Das kann ein kniffliger Prozess sein. Anstatt also viel Zeit damit zu verbringen, jede mögliche Konfiguration auszuarbeiten, macht er eine Google-Suche und findet jemanden, der bereits eine scheinbar perfekte Konfigurationsdatei fertiggestellt hat. Auch wenn der Entwickler nichts über die Person weiß, die den Code geschrieben hat, ist es relativ einfach, ihn zu einer neuen Anwendung hinzuzufügen. Es kann in der Docker-Umgebung mit zwei Zeilen erfolgen:
RUN cd /etc/apache2/sites-available/ && \
wget -O default-ssl.conf https://gist.githubusercontent.com/vesche/\
9d372cfa8855a6be74bcca86efadfbbf/raw/\
fbdfbe230fa256a6fb78e5e000aebded60d6a5ef/default-ssl.conf
Jetzt zieht das Docker-Image die Konfigurationsdatei eines Drittanbieters dynamisch ein. Und selbst wenn die Datei zu diesem Zeitpunkt getestet und für in Ordnung befunden wird, bedeutet die Tatsache, dass der Zeiger nun in den Code der neuen Anwendung eingebettet ist, dass eine permanente Abhängigkeit vorhanden ist. Tage, Wochen oder Monate später könnte die Datei vom ursprünglichen Autor oder einem Angreifer, der das Code-Repository kompromittiert hat, geändert werden. Plötzlich kann die freigegebene Konfigurationsdatei der Anwendung sagen, dass sie sich ganz anders verhalten soll als beabsichtigt, was möglicherweise unbefugten Benutzern Zugriff gewährt oder sogar direkt Daten stiehlt und exfiltriert.
Bessere Nutzung gemeinsamer Ressourcen
Wenn Ihre Organisation die Verwendung von Code aus externen Quellen zulässt, müssen Prozesse eingerichtet werden, um sicherzustellen, dass dies sicher geschieht. Wenn Sie fremden Code für eine mögliche Verwendung evaluieren, achten Sie darauf, dass Sie Komponenten aus offiziellen Quellen nur über sichere Links beziehen. Und selbst dann sollten Sie niemals eine Verbindung zu einer externen Quelle herstellen, um diesen Code einzuholen, da dies den Prozess Ihrer Kontrolle entzieht. Stattdessen sollte genehmigter Code in eine sichere Bibliothek eingebracht werden und nur von diesem geschützten Ort aus verwendet werden. In einer Docker-Umgebung würde der Code also wie folgt aussehen:
COPY src/config/default-ssl.conf /etc/apache2/sites-available/
Anstatt sich auf entfernte Konfigurationsdateien von Drittanbietern zu verlassen, würde dies stattdessen auf eine lokale Kopie dieser Dateien setzen. Dies verhindert, dass unerwartete oder böswillige Änderungen vorgenommen werden.
Zusätzlich zur Verwendung einer sicheren Code-Bibliothek sollte ein Patch-Management-Prozess eingerichtet werden, um Komponenten während des gesamten Software-Lebenszyklus kontinuierlich zu überwachen. Alle client- und serverseitigen Komponenten sollten außerdem mit Tools wie NVD oder CVE auf Sicherheitswarnungen überprüft werden. Schließlich sollten alle nicht genutzten oder unnötigen Abhängigkeiten und Funktionen entfernt werden, die möglicherweise mit dem externen Code einhergehen.
Wenn Sie diese Schritte befolgen, können Entwickler externe Ressourcen sicherer nutzen, ohne versehentlich Schwachstellen in ihre Anwendungen und ihren Code einzubringen.
Schauen Sie sich die Secure Code Warrior Blog-Seiten, um weitere Einblicke in diese Schwachstelle zu erhalten und zu erfahren, wie Sie Ihr Unternehmen und Ihre Kunden vor den Auswirkungen anderer Sicherheitslücken schützen können. Sie können auch eine Demo der IaC-Herausforderungen auf der Schulungsplattform Secure Code Warrior ausprobieren, um alle Ihre Cybersecurity-Fähigkeiten zu schärfen und auf dem neuesten Stand zu halten.
Inhaltsübersicht
Matias Madou, Ph.D., ist Sicherheitsexperte, Forscher, CTO und Mitbegründer von Secure Code Warrior. Matias promovierte an der Universität Gent im Bereich Anwendungssicherheit und konzentrierte sich dabei auf statische Analyselösungen. Später wechselte er zu Fortify in den USA, wo er erkannte, dass es nicht ausreicht, nur Codeprobleme zu erkennen, ohne den Entwicklern beim Schreiben von sicherem Code zu helfen. Dies inspirierte ihn dazu, Produkte zu entwickeln, die Entwickler unterstützen, den Aufwand für die Sicherheit verringern und die Erwartungen der Kunden übertreffen. Wenn er nicht an seinem Schreibtisch im Team Awesome sitzt, steht er gerne auf der Bühne und hält Vorträge auf Konferenzen wie der RSA Conference, BlackHat und DefCon.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenHerunterladenRessourcen für den Einstieg
Benchmarking von Sicherheitskompetenzen: Optimierung von Secure-by-Design im Unternehmen
Die Secure-by-Design-Bewegung ist die Zukunft der sicheren Softwareentwicklung. Erfahren Sie mehr über die wichtigsten Elemente, die Unternehmen berücksichtigen müssen, wenn sie über eine Secure-by-Design-Initiative nachdenken.
DigitalOcean verringert Sicherheitsverschuldung mit Secure Code Warrior
DigitalOceans Einsatz von Secure Code Warrior hat die Sicherheitsverschuldung deutlich reduziert, so dass sich die Teams stärker auf Innovation und Produktivität konzentrieren können. Die verbesserte Sicherheit hat die Produktqualität und den Wettbewerbsvorteil des Unternehmens gestärkt. Mit Blick auf die Zukunft wird der SCW Trust Score dem Unternehmen helfen, seine Sicherheitspraktiken weiter zu verbessern und Innovationen voranzutreiben.
Ressourcen für den Einstieg
Trust Score zeigt den Wert von Secure-by-Design-Upskilling-Initiativen
Unsere Forschung hat gezeigt, dass Schulungen für sicheren Code funktionieren. Trust Score verwendet einen Algorithmus, der auf mehr als 20 Millionen Lerndaten aus der Arbeit von mehr als 250.000 Lernenden in über 600 Organisationen basiert, und zeigt, wie effektiv die Initiative ist, um Schwachstellen zu beseitigen und wie man sie noch effektiver gestalten kann.
Reaktive versus präventive Sicherheit: Prävention ist das bessere Heilmittel
Der Gedanke, Legacy-Code und -Systeme zur gleichen Zeit wie neuere Anwendungen mit präventiver Sicherheit auszustatten, kann entmutigend erscheinen, aber ein Secure-by-Design-Ansatz, der durch die Weiterbildung von Entwicklern durchgesetzt wird, kann die besten Sicherheitsverfahren auf diese Systeme anwenden. Dies ist für viele Unternehmen die beste Chance, ihre Sicherheitslage zu verbessern.
Die Vorteile eines Benchmarking der Sicherheitskompetenzen von Entwicklern
Der zunehmende Fokus auf sicheren Code und Secure-by-Design-Prinzipien erfordert, dass Entwickler von Beginn des SDLC an in Cybersicherheit geschult werden, wobei Tools wie Secure Code Warrior's Trust Score dabei helfen, ihre Fortschritte zu messen und zu verbessern.
Wesentlicher Erfolg für Enterprise Secure-by-Design-Initiativen
Unser jüngstes Forschungspapier „Benchmarking Security Skills: Streamlining Secure-by-Design in the Enterprise“ ist das Ergebnis einer umfassenden Analyse echter Secure-by-Design-Initiativen auf Unternehmensebene und der Ableitung von Best-Practice-Ansätzen auf Grundlage datengesteuerter Erkenntnisse.