SCW-Symbole
Held-Hintergrund ohne Trennlinie
Blog

コーダーがセキュリティを征服する:共有と学習シリーズ-コード・インジェクション

ヤープ・キャラン・シン
Veröffentlicht am 16. Mai 2019
Zuletzt aktualisiert am 10. März 2026

Code-Injection-Angriffe gehören zu den häufigsten und auch gefährlichsten Angriffen, denen viele Websites und Anwendungen ausgesetzt sind. Sie variieren sowohl in Bezug auf die Raffinesse als auch auf die Gefahr, die von ihnen ausgeht, aber fast jede Website oder Anwendung, die Benutzereingaben akzeptiert, kann anfällig sein. In der Tat ist diese Art von Angriff eine, mit der sich fast jeder Cybersecurity-Verteidiger irgendwann in seiner Karriere auseinandersetzen muss, und das wahrscheinlich mehrmals.

Ein Code-Injection-Angriff kann immer dann erfolgen, wenn eine Anwendung oder Website Eingaben von Benutzern akzeptiert. Dies kann so einfach sein wie die Bereitstellung einer Suchfunktion oder die Aufforderung an einen Benutzer, seine Identifikationsdaten einzugeben. Der Angriff erfolgt, wenn ein böswilliger Benutzer anstelle einer normalen Texteingabe Code in das offene Feld eingibt. Ihr Ziel ist es, den Server dazu zu bringen, die Eingabe für gültigen Code zu halten und dann beliebige Funktionen auszuführen, die der Angreifer wünscht.

Während Code-Injection-Attacken extrem häufig vorkommen, sind auch die verfügbaren Verteidigungsmaßnahmen, mit denen sie gestoppt werden können, entsprechend. In dieser Folge lernen wir:

  • Wie sie funktionieren
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie verwenden Angreifer Code Injection?

Obwohl sich die spezifischen Details über Code-Injection-Angriffe je nach verwendeter Programmiersprache ändern, kann jede App oder Website anfällig sein, solange sie einem Benutzer die Eingabe von Daten ermöglicht. Code-Injection-Angriffe wurden bereits für SQL, HTML, XML, CSS und jede andere gängige Programmiersprache ausgelöst.

Zunächst muss ein Angreifer verwundbaren Code innerhalb einer Anwendung finden, normalerweise an einer Stelle, an der Benutzer ihre eigenen Eingaben machen können. Dieser Code nimmt zum Beispiel die PHP-Funktion eval() und gibt sie an einen Benutzer weiter, um sie zu ändern, ohne irgendeine Art von Validierung der Rückgabezeichenfolge.

$myvar = "varname";
$x = $_GET[arg];
eval("\$myvar = \$x;");

Ein geschickter Angreifer könnte leicht eine eigene Zeichenkette an die eval-Funktion anhängen und sogar Systembefehle ausführen, wenn er möchte.

/index.php?arg=1; system(id)

Es ist wichtig zu beachten, dass Code-Injection-Angriffe zwar das Senden von Systembefehlen beinhalten können, aber nicht nur darauf beschränkt sind. Tatsächlich sind Hacker bei Code-Injection-Angriffen nur durch die Funktionalität der Sprache selbst begrenzt. In unserem Beispiel könnte ein Angreifer das Zielsystem so programmieren, dass es fast alles tut, was das PHP-Framework erlaubt.

Warum sind Code-Injection-Angriffe so gefährlich?

Code-Injection-Angriffe sind je nach Geschick des Angreifers potenziell extrem gefährlich. Sie können alles tun, was die Programmiersprache zulässt, was sie auf die gleiche Stufe wie die Programmierer der App stellt. Ein Angreifer könnte praktisch seine eigene App schreiben und sie innerhalb der Zielumgebung ausführen lassen.

Auch weniger erfahrene Angreifer können gefährlich sein. Anstatt ihre eigene Anwendung oder Code-Strings zu schreiben, können sie dem Zielsystem einfach befehlen, vorprogrammierte Malware zu akzeptieren und zu installieren. Dies könnte zu einer Verunstaltung der Website, zu Ransomware-Angriffen oder sogar zur Grundlage für eine Phishing-Kampagne werden, die sich gegen die Benutzer der Website richtet.

Meistens werden Code-Injection-Angriffe verwendet, um Dinge wie Benutzerlisten und Passwörter zu stehlen oder um wertvolle Informationen über ein System zu erhalten, das für weitere Kompromittierungen vorgesehen ist. Aber seien Sie gewarnt: Ein geschickter Programmierer kann mit einem Code-Injection-Angriff fast alles erreichen. Deshalb ist es so wichtig, dass jede potenzielle Instanz davon entdeckt und aus Ihrer Umgebung entfernt wird.

Vertrauen Sie niemandem! (Oder zumindest, nicht Benutzer)

Bei der Beseitigung von Schwachstellen, die durch Code-Injection-Angriffe entstehen, sollte man als erstes überall dort nachsehen, wo Benutzereingaben verlangt oder zugelassen werden. Alles, was von einem Benutzer eingegeben wird, ist unter keinen Umständen vertrauenswürdig. Wenn Sie Benutzereingaben ohne Filterung oder Prüfung zulassen, laden Sie Angreifer im Grunde dazu ein, Ihr System oder sogar Ihr Netzwerk mit einem Freischuss zu kompromittieren.

Obwohl es nicht immer möglich ist, ist der beste Weg, Code-Injection-Angriffe zu vereiteln, zu verhindern, dass Funktionen ausgeführt oder Benutzereingaben direkt interpretiert werden. Vielleicht kann man den Benutzern eine Auswahl an statischen Optionen geben, anstatt ihnen freie Hand bei der Eingabe ihrer eigenen Abfragen zu lassen, wobei die Anwendung so programmiert ist, dass sie nur diese begrenzten Auswahlmöglichkeiten als gültig akzeptiert. Das ist vielleicht nicht immer sinnvoll, aber wo es möglich ist, kann es Code-Injektionen verhindern, bevor sie beginnen.

Für Bereiche, in denen Benutzer ihre eigenen Eingaben machen müssen, müssen diese Daten streng kontrolliert werden. Die Annahme, dass alles ein potenzieller Angriff ist, ist ein guter Ansatzpunkt. Die Durchsetzung von Richtlinien mit geringsten Privilegien, wie z. B. Benutzerzugriff nur zum Lesen, sowohl auf der Client- als auch auf der Serverseite, kann die Ausführung des meisten Codes verhindern.

Die andere gute Verteidigung besteht darin, anwendungsweite Filter und Sanitization für alle Benutzereingaben zu implementieren. Entwickler sind sich der Code-Injection-Angriffe schon seit Jahren bewusst, und es gibt Bibliotheken mit bewährten Filtern für jedes Framework und jede Sprache. Wenn Sie diese Filter anwenden, stellen Sie sicher, dass Sie dies nicht nur auf die offensichtlichen Benutzereingabebereiche oder gegen allgemeine Parameter wie Get- und Post-Befehle tun, sondern auch gegen Cookies und HTTP-Header.

Anwenden einer Korrektur für Code Injection

Wenn Sie unnötige Benutzereingabebereiche aus Ihrer Umgebung entfernen, die Prinzipien der geringsten Privilegien durchsetzen und die neuesten Filter- und Bereinigungs-Tools verwenden, um potenzielle Angriffe zu untersuchen und zu erkennen, können Sie diese gefährliche Schwachstelle ausschalten. Die Einstellung, Benutzereingaben niemals zu vertrauen, wird Ihnen auch in Zukunft gute Dienste leisten. Wenn Sie all das tun, können Sie dieser gefährlichen Art von Angriffen einen Schritt voraus sein.

Als weitere Lektüre können Sie einen Blick auf den OWASP-Artikel über Code-Injektion werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Beseitigung dieser Schwachstelle und eine Schurkengalerie anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Stellen Sie sich der Code-Injektion, genau jetzt. Nehmen Sie die Herausforderung auf unserer gamifizierten Trainingsplattform an: [Hier starten]

リソースを表示
リソースを表示

コードインジェクション攻撃は、多くの Web サイトやアプリケーションが遭遇する最も一般的で最も危険なものの 1 つです。攻撃は、巧妙さという点でも危険性という点でも多岐にわたりますが、ユーザー入力を受け入れるほとんどすべてのサイトやアプリが脆弱になる可能性があります。

もっと興味がありますか?

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

mehr erfahren

Secure Code Warrior schützt Ihren Code während des gesamten Softwareentwicklungszyklus und hilft Ihnen dabei, eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie Anwendungs-Sicherheitsmanager, Entwickler, CISO oder Sicherheitsbeauftragter sind – wir helfen Ihnen dabei, die mit unsicherem Code verbundenen Risiken zu minimieren.

デモを予約
シェア:
LinkedIn-MarkenSozialx Logo
Autor
ヤープ・キャラン・シン
Veröffentlicht am 16. Mai 2019

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

シェア:
LinkedIn-MarkenSozialx Logo

Code-Injection-Angriffe gehören zu den häufigsten und auch gefährlichsten Angriffen, denen viele Websites und Anwendungen ausgesetzt sind. Sie variieren sowohl in Bezug auf die Raffinesse als auch auf die Gefahr, die von ihnen ausgeht, aber fast jede Website oder Anwendung, die Benutzereingaben akzeptiert, kann anfällig sein. In der Tat ist diese Art von Angriff eine, mit der sich fast jeder Cybersecurity-Verteidiger irgendwann in seiner Karriere auseinandersetzen muss, und das wahrscheinlich mehrmals.

Ein Code-Injection-Angriff kann immer dann erfolgen, wenn eine Anwendung oder Website Eingaben von Benutzern akzeptiert. Dies kann so einfach sein wie die Bereitstellung einer Suchfunktion oder die Aufforderung an einen Benutzer, seine Identifikationsdaten einzugeben. Der Angriff erfolgt, wenn ein böswilliger Benutzer anstelle einer normalen Texteingabe Code in das offene Feld eingibt. Ihr Ziel ist es, den Server dazu zu bringen, die Eingabe für gültigen Code zu halten und dann beliebige Funktionen auszuführen, die der Angreifer wünscht.

Während Code-Injection-Attacken extrem häufig vorkommen, sind auch die verfügbaren Verteidigungsmaßnahmen, mit denen sie gestoppt werden können, entsprechend. In dieser Folge lernen wir:

  • Wie sie funktionieren
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie verwenden Angreifer Code Injection?

Obwohl sich die spezifischen Details über Code-Injection-Angriffe je nach verwendeter Programmiersprache ändern, kann jede App oder Website anfällig sein, solange sie einem Benutzer die Eingabe von Daten ermöglicht. Code-Injection-Angriffe wurden bereits für SQL, HTML, XML, CSS und jede andere gängige Programmiersprache ausgelöst.

Zunächst muss ein Angreifer verwundbaren Code innerhalb einer Anwendung finden, normalerweise an einer Stelle, an der Benutzer ihre eigenen Eingaben machen können. Dieser Code nimmt zum Beispiel die PHP-Funktion eval() und gibt sie an einen Benutzer weiter, um sie zu ändern, ohne irgendeine Art von Validierung der Rückgabezeichenfolge.

$myvar = "varname";
$x = $_GET[arg];
eval("\$myvar = \$x;");

Ein geschickter Angreifer könnte leicht eine eigene Zeichenkette an die eval-Funktion anhängen und sogar Systembefehle ausführen, wenn er möchte.

/index.php?arg=1; system(id)

Es ist wichtig zu beachten, dass Code-Injection-Angriffe zwar das Senden von Systembefehlen beinhalten können, aber nicht nur darauf beschränkt sind. Tatsächlich sind Hacker bei Code-Injection-Angriffen nur durch die Funktionalität der Sprache selbst begrenzt. In unserem Beispiel könnte ein Angreifer das Zielsystem so programmieren, dass es fast alles tut, was das PHP-Framework erlaubt.

Warum sind Code-Injection-Angriffe so gefährlich?

Code-Injection-Angriffe sind je nach Geschick des Angreifers potenziell extrem gefährlich. Sie können alles tun, was die Programmiersprache zulässt, was sie auf die gleiche Stufe wie die Programmierer der App stellt. Ein Angreifer könnte praktisch seine eigene App schreiben und sie innerhalb der Zielumgebung ausführen lassen.

Auch weniger erfahrene Angreifer können gefährlich sein. Anstatt ihre eigene Anwendung oder Code-Strings zu schreiben, können sie dem Zielsystem einfach befehlen, vorprogrammierte Malware zu akzeptieren und zu installieren. Dies könnte zu einer Verunstaltung der Website, zu Ransomware-Angriffen oder sogar zur Grundlage für eine Phishing-Kampagne werden, die sich gegen die Benutzer der Website richtet.

Meistens werden Code-Injection-Angriffe verwendet, um Dinge wie Benutzerlisten und Passwörter zu stehlen oder um wertvolle Informationen über ein System zu erhalten, das für weitere Kompromittierungen vorgesehen ist. Aber seien Sie gewarnt: Ein geschickter Programmierer kann mit einem Code-Injection-Angriff fast alles erreichen. Deshalb ist es so wichtig, dass jede potenzielle Instanz davon entdeckt und aus Ihrer Umgebung entfernt wird.

Vertrauen Sie niemandem! (Oder zumindest, nicht Benutzer)

Bei der Beseitigung von Schwachstellen, die durch Code-Injection-Angriffe entstehen, sollte man als erstes überall dort nachsehen, wo Benutzereingaben verlangt oder zugelassen werden. Alles, was von einem Benutzer eingegeben wird, ist unter keinen Umständen vertrauenswürdig. Wenn Sie Benutzereingaben ohne Filterung oder Prüfung zulassen, laden Sie Angreifer im Grunde dazu ein, Ihr System oder sogar Ihr Netzwerk mit einem Freischuss zu kompromittieren.

Obwohl es nicht immer möglich ist, ist der beste Weg, Code-Injection-Angriffe zu vereiteln, zu verhindern, dass Funktionen ausgeführt oder Benutzereingaben direkt interpretiert werden. Vielleicht kann man den Benutzern eine Auswahl an statischen Optionen geben, anstatt ihnen freie Hand bei der Eingabe ihrer eigenen Abfragen zu lassen, wobei die Anwendung so programmiert ist, dass sie nur diese begrenzten Auswahlmöglichkeiten als gültig akzeptiert. Das ist vielleicht nicht immer sinnvoll, aber wo es möglich ist, kann es Code-Injektionen verhindern, bevor sie beginnen.

Für Bereiche, in denen Benutzer ihre eigenen Eingaben machen müssen, müssen diese Daten streng kontrolliert werden. Die Annahme, dass alles ein potenzieller Angriff ist, ist ein guter Ansatzpunkt. Die Durchsetzung von Richtlinien mit geringsten Privilegien, wie z. B. Benutzerzugriff nur zum Lesen, sowohl auf der Client- als auch auf der Serverseite, kann die Ausführung des meisten Codes verhindern.

Die andere gute Verteidigung besteht darin, anwendungsweite Filter und Sanitization für alle Benutzereingaben zu implementieren. Entwickler sind sich der Code-Injection-Angriffe schon seit Jahren bewusst, und es gibt Bibliotheken mit bewährten Filtern für jedes Framework und jede Sprache. Wenn Sie diese Filter anwenden, stellen Sie sicher, dass Sie dies nicht nur auf die offensichtlichen Benutzereingabebereiche oder gegen allgemeine Parameter wie Get- und Post-Befehle tun, sondern auch gegen Cookies und HTTP-Header.

Anwenden einer Korrektur für Code Injection

Wenn Sie unnötige Benutzereingabebereiche aus Ihrer Umgebung entfernen, die Prinzipien der geringsten Privilegien durchsetzen und die neuesten Filter- und Bereinigungs-Tools verwenden, um potenzielle Angriffe zu untersuchen und zu erkennen, können Sie diese gefährliche Schwachstelle ausschalten. Die Einstellung, Benutzereingaben niemals zu vertrauen, wird Ihnen auch in Zukunft gute Dienste leisten. Wenn Sie all das tun, können Sie dieser gefährlichen Art von Angriffen einen Schritt voraus sein.

Als weitere Lektüre können Sie einen Blick auf den OWASP-Artikel über Code-Injektion werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Beseitigung dieser Schwachstelle und eine Schurkengalerie anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Stellen Sie sich der Code-Injektion, genau jetzt. Nehmen Sie die Herausforderung auf unserer gamifizierten Trainingsplattform an: [Hier starten]

リソースを表示
リソースを表示

Um den Bericht herunterzuladen, füllen Sie bitte das folgende Formular aus.

Wir bitten um Ihre Erlaubnis, Ihnen Informationen zu unseren Produkten und/oder zu Themen rund um sicheres Programmieren zuzusenden. Wir behandeln Ihre personenbezogenen Daten stets mit größter Sorgfalt und verkaufen sie niemals zu Marketingzwecken an andere Unternehmen weiter.

送信
scw Erfolgssymbol
scw-Fehlersymbol
Um das Formular zu senden, aktivieren Sie bitte das „Analytics“-Cookie. Nach Abschluss der Einstellungen können Sie es wieder deaktivieren.

Code-Injection-Angriffe gehören zu den häufigsten und auch gefährlichsten Angriffen, denen viele Websites und Anwendungen ausgesetzt sind. Sie variieren sowohl in Bezug auf die Raffinesse als auch auf die Gefahr, die von ihnen ausgeht, aber fast jede Website oder Anwendung, die Benutzereingaben akzeptiert, kann anfällig sein. In der Tat ist diese Art von Angriff eine, mit der sich fast jeder Cybersecurity-Verteidiger irgendwann in seiner Karriere auseinandersetzen muss, und das wahrscheinlich mehrmals.

Ein Code-Injection-Angriff kann immer dann erfolgen, wenn eine Anwendung oder Website Eingaben von Benutzern akzeptiert. Dies kann so einfach sein wie die Bereitstellung einer Suchfunktion oder die Aufforderung an einen Benutzer, seine Identifikationsdaten einzugeben. Der Angriff erfolgt, wenn ein böswilliger Benutzer anstelle einer normalen Texteingabe Code in das offene Feld eingibt. Ihr Ziel ist es, den Server dazu zu bringen, die Eingabe für gültigen Code zu halten und dann beliebige Funktionen auszuführen, die der Angreifer wünscht.

Während Code-Injection-Attacken extrem häufig vorkommen, sind auch die verfügbaren Verteidigungsmaßnahmen, mit denen sie gestoppt werden können, entsprechend. In dieser Folge lernen wir:

  • Wie sie funktionieren
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie verwenden Angreifer Code Injection?

Obwohl sich die spezifischen Details über Code-Injection-Angriffe je nach verwendeter Programmiersprache ändern, kann jede App oder Website anfällig sein, solange sie einem Benutzer die Eingabe von Daten ermöglicht. Code-Injection-Angriffe wurden bereits für SQL, HTML, XML, CSS und jede andere gängige Programmiersprache ausgelöst.

Zunächst muss ein Angreifer verwundbaren Code innerhalb einer Anwendung finden, normalerweise an einer Stelle, an der Benutzer ihre eigenen Eingaben machen können. Dieser Code nimmt zum Beispiel die PHP-Funktion eval() und gibt sie an einen Benutzer weiter, um sie zu ändern, ohne irgendeine Art von Validierung der Rückgabezeichenfolge.

$myvar = "varname";
$x = $_GET[arg];
eval("\$myvar = \$x;");

Ein geschickter Angreifer könnte leicht eine eigene Zeichenkette an die eval-Funktion anhängen und sogar Systembefehle ausführen, wenn er möchte.

/index.php?arg=1; system(id)

Es ist wichtig zu beachten, dass Code-Injection-Angriffe zwar das Senden von Systembefehlen beinhalten können, aber nicht nur darauf beschränkt sind. Tatsächlich sind Hacker bei Code-Injection-Angriffen nur durch die Funktionalität der Sprache selbst begrenzt. In unserem Beispiel könnte ein Angreifer das Zielsystem so programmieren, dass es fast alles tut, was das PHP-Framework erlaubt.

Warum sind Code-Injection-Angriffe so gefährlich?

Code-Injection-Angriffe sind je nach Geschick des Angreifers potenziell extrem gefährlich. Sie können alles tun, was die Programmiersprache zulässt, was sie auf die gleiche Stufe wie die Programmierer der App stellt. Ein Angreifer könnte praktisch seine eigene App schreiben und sie innerhalb der Zielumgebung ausführen lassen.

Auch weniger erfahrene Angreifer können gefährlich sein. Anstatt ihre eigene Anwendung oder Code-Strings zu schreiben, können sie dem Zielsystem einfach befehlen, vorprogrammierte Malware zu akzeptieren und zu installieren. Dies könnte zu einer Verunstaltung der Website, zu Ransomware-Angriffen oder sogar zur Grundlage für eine Phishing-Kampagne werden, die sich gegen die Benutzer der Website richtet.

Meistens werden Code-Injection-Angriffe verwendet, um Dinge wie Benutzerlisten und Passwörter zu stehlen oder um wertvolle Informationen über ein System zu erhalten, das für weitere Kompromittierungen vorgesehen ist. Aber seien Sie gewarnt: Ein geschickter Programmierer kann mit einem Code-Injection-Angriff fast alles erreichen. Deshalb ist es so wichtig, dass jede potenzielle Instanz davon entdeckt und aus Ihrer Umgebung entfernt wird.

Vertrauen Sie niemandem! (Oder zumindest, nicht Benutzer)

Bei der Beseitigung von Schwachstellen, die durch Code-Injection-Angriffe entstehen, sollte man als erstes überall dort nachsehen, wo Benutzereingaben verlangt oder zugelassen werden. Alles, was von einem Benutzer eingegeben wird, ist unter keinen Umständen vertrauenswürdig. Wenn Sie Benutzereingaben ohne Filterung oder Prüfung zulassen, laden Sie Angreifer im Grunde dazu ein, Ihr System oder sogar Ihr Netzwerk mit einem Freischuss zu kompromittieren.

Obwohl es nicht immer möglich ist, ist der beste Weg, Code-Injection-Angriffe zu vereiteln, zu verhindern, dass Funktionen ausgeführt oder Benutzereingaben direkt interpretiert werden. Vielleicht kann man den Benutzern eine Auswahl an statischen Optionen geben, anstatt ihnen freie Hand bei der Eingabe ihrer eigenen Abfragen zu lassen, wobei die Anwendung so programmiert ist, dass sie nur diese begrenzten Auswahlmöglichkeiten als gültig akzeptiert. Das ist vielleicht nicht immer sinnvoll, aber wo es möglich ist, kann es Code-Injektionen verhindern, bevor sie beginnen.

Für Bereiche, in denen Benutzer ihre eigenen Eingaben machen müssen, müssen diese Daten streng kontrolliert werden. Die Annahme, dass alles ein potenzieller Angriff ist, ist ein guter Ansatzpunkt. Die Durchsetzung von Richtlinien mit geringsten Privilegien, wie z. B. Benutzerzugriff nur zum Lesen, sowohl auf der Client- als auch auf der Serverseite, kann die Ausführung des meisten Codes verhindern.

Die andere gute Verteidigung besteht darin, anwendungsweite Filter und Sanitization für alle Benutzereingaben zu implementieren. Entwickler sind sich der Code-Injection-Angriffe schon seit Jahren bewusst, und es gibt Bibliotheken mit bewährten Filtern für jedes Framework und jede Sprache. Wenn Sie diese Filter anwenden, stellen Sie sicher, dass Sie dies nicht nur auf die offensichtlichen Benutzereingabebereiche oder gegen allgemeine Parameter wie Get- und Post-Befehle tun, sondern auch gegen Cookies und HTTP-Header.

Anwenden einer Korrektur für Code Injection

Wenn Sie unnötige Benutzereingabebereiche aus Ihrer Umgebung entfernen, die Prinzipien der geringsten Privilegien durchsetzen und die neuesten Filter- und Bereinigungs-Tools verwenden, um potenzielle Angriffe zu untersuchen und zu erkennen, können Sie diese gefährliche Schwachstelle ausschalten. Die Einstellung, Benutzereingaben niemals zu vertrauen, wird Ihnen auch in Zukunft gute Dienste leisten. Wenn Sie all das tun, können Sie dieser gefährlichen Art von Angriffen einen Schritt voraus sein.

Als weitere Lektüre können Sie einen Blick auf den OWASP-Artikel über Code-Injektion werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Beseitigung dieser Schwachstelle und eine Schurkengalerie anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Stellen Sie sich der Code-Injektion, genau jetzt. Nehmen Sie die Herausforderung auf unserer gamifizierten Trainingsplattform an: [Hier starten]

Online-Seminar ansehen
Beginnen wir
mehr erfahren

Klicken Sie auf den folgenden Link, um die PDF-Datei dieser Ressource herunterzuladen.

Secure Code Warrior schützt Ihren Code während des gesamten Softwareentwicklungszyklus und hilft Ihnen dabei, eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie Anwendungs-Sicherheitsmanager, Entwickler, CISO oder Sicherheitsbeauftragter sind – wir helfen Ihnen dabei, die mit unsicherem Code verbundenen Risiken zu minimieren.

Bericht anzeigenデモを予約
PDF herunterladen
リソースを表示
シェア:
LinkedIn-MarkenSozialx Logo
もっと興味がありますか?

シェア:
LinkedIn-MarkenSozialx Logo
Autor
ヤープ・キャラン・シン
Veröffentlicht am 16. Mai 2019

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

シェア:
LinkedIn-MarkenSozialx Logo

Code-Injection-Angriffe gehören zu den häufigsten und auch gefährlichsten Angriffen, denen viele Websites und Anwendungen ausgesetzt sind. Sie variieren sowohl in Bezug auf die Raffinesse als auch auf die Gefahr, die von ihnen ausgeht, aber fast jede Website oder Anwendung, die Benutzereingaben akzeptiert, kann anfällig sein. In der Tat ist diese Art von Angriff eine, mit der sich fast jeder Cybersecurity-Verteidiger irgendwann in seiner Karriere auseinandersetzen muss, und das wahrscheinlich mehrmals.

Ein Code-Injection-Angriff kann immer dann erfolgen, wenn eine Anwendung oder Website Eingaben von Benutzern akzeptiert. Dies kann so einfach sein wie die Bereitstellung einer Suchfunktion oder die Aufforderung an einen Benutzer, seine Identifikationsdaten einzugeben. Der Angriff erfolgt, wenn ein böswilliger Benutzer anstelle einer normalen Texteingabe Code in das offene Feld eingibt. Ihr Ziel ist es, den Server dazu zu bringen, die Eingabe für gültigen Code zu halten und dann beliebige Funktionen auszuführen, die der Angreifer wünscht.

Während Code-Injection-Attacken extrem häufig vorkommen, sind auch die verfügbaren Verteidigungsmaßnahmen, mit denen sie gestoppt werden können, entsprechend. In dieser Folge lernen wir:

  • Wie sie funktionieren
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmaßnahmen ergreifen können, um sie zu stoppen.

Wie verwenden Angreifer Code Injection?

Obwohl sich die spezifischen Details über Code-Injection-Angriffe je nach verwendeter Programmiersprache ändern, kann jede App oder Website anfällig sein, solange sie einem Benutzer die Eingabe von Daten ermöglicht. Code-Injection-Angriffe wurden bereits für SQL, HTML, XML, CSS und jede andere gängige Programmiersprache ausgelöst.

Zunächst muss ein Angreifer verwundbaren Code innerhalb einer Anwendung finden, normalerweise an einer Stelle, an der Benutzer ihre eigenen Eingaben machen können. Dieser Code nimmt zum Beispiel die PHP-Funktion eval() und gibt sie an einen Benutzer weiter, um sie zu ändern, ohne irgendeine Art von Validierung der Rückgabezeichenfolge.

$myvar = "varname";
$x = $_GET[arg];
eval("\$myvar = \$x;");

Ein geschickter Angreifer könnte leicht eine eigene Zeichenkette an die eval-Funktion anhängen und sogar Systembefehle ausführen, wenn er möchte.

/index.php?arg=1; system(id)

Es ist wichtig zu beachten, dass Code-Injection-Angriffe zwar das Senden von Systembefehlen beinhalten können, aber nicht nur darauf beschränkt sind. Tatsächlich sind Hacker bei Code-Injection-Angriffen nur durch die Funktionalität der Sprache selbst begrenzt. In unserem Beispiel könnte ein Angreifer das Zielsystem so programmieren, dass es fast alles tut, was das PHP-Framework erlaubt.

Warum sind Code-Injection-Angriffe so gefährlich?

Code-Injection-Angriffe sind je nach Geschick des Angreifers potenziell extrem gefährlich. Sie können alles tun, was die Programmiersprache zulässt, was sie auf die gleiche Stufe wie die Programmierer der App stellt. Ein Angreifer könnte praktisch seine eigene App schreiben und sie innerhalb der Zielumgebung ausführen lassen.

Auch weniger erfahrene Angreifer können gefährlich sein. Anstatt ihre eigene Anwendung oder Code-Strings zu schreiben, können sie dem Zielsystem einfach befehlen, vorprogrammierte Malware zu akzeptieren und zu installieren. Dies könnte zu einer Verunstaltung der Website, zu Ransomware-Angriffen oder sogar zur Grundlage für eine Phishing-Kampagne werden, die sich gegen die Benutzer der Website richtet.

Meistens werden Code-Injection-Angriffe verwendet, um Dinge wie Benutzerlisten und Passwörter zu stehlen oder um wertvolle Informationen über ein System zu erhalten, das für weitere Kompromittierungen vorgesehen ist. Aber seien Sie gewarnt: Ein geschickter Programmierer kann mit einem Code-Injection-Angriff fast alles erreichen. Deshalb ist es so wichtig, dass jede potenzielle Instanz davon entdeckt und aus Ihrer Umgebung entfernt wird.

Vertrauen Sie niemandem! (Oder zumindest, nicht Benutzer)

Bei der Beseitigung von Schwachstellen, die durch Code-Injection-Angriffe entstehen, sollte man als erstes überall dort nachsehen, wo Benutzereingaben verlangt oder zugelassen werden. Alles, was von einem Benutzer eingegeben wird, ist unter keinen Umständen vertrauenswürdig. Wenn Sie Benutzereingaben ohne Filterung oder Prüfung zulassen, laden Sie Angreifer im Grunde dazu ein, Ihr System oder sogar Ihr Netzwerk mit einem Freischuss zu kompromittieren.

Obwohl es nicht immer möglich ist, ist der beste Weg, Code-Injection-Angriffe zu vereiteln, zu verhindern, dass Funktionen ausgeführt oder Benutzereingaben direkt interpretiert werden. Vielleicht kann man den Benutzern eine Auswahl an statischen Optionen geben, anstatt ihnen freie Hand bei der Eingabe ihrer eigenen Abfragen zu lassen, wobei die Anwendung so programmiert ist, dass sie nur diese begrenzten Auswahlmöglichkeiten als gültig akzeptiert. Das ist vielleicht nicht immer sinnvoll, aber wo es möglich ist, kann es Code-Injektionen verhindern, bevor sie beginnen.

Für Bereiche, in denen Benutzer ihre eigenen Eingaben machen müssen, müssen diese Daten streng kontrolliert werden. Die Annahme, dass alles ein potenzieller Angriff ist, ist ein guter Ansatzpunkt. Die Durchsetzung von Richtlinien mit geringsten Privilegien, wie z. B. Benutzerzugriff nur zum Lesen, sowohl auf der Client- als auch auf der Serverseite, kann die Ausführung des meisten Codes verhindern.

Die andere gute Verteidigung besteht darin, anwendungsweite Filter und Sanitization für alle Benutzereingaben zu implementieren. Entwickler sind sich der Code-Injection-Angriffe schon seit Jahren bewusst, und es gibt Bibliotheken mit bewährten Filtern für jedes Framework und jede Sprache. Wenn Sie diese Filter anwenden, stellen Sie sicher, dass Sie dies nicht nur auf die offensichtlichen Benutzereingabebereiche oder gegen allgemeine Parameter wie Get- und Post-Befehle tun, sondern auch gegen Cookies und HTTP-Header.

Anwenden einer Korrektur für Code Injection

Wenn Sie unnötige Benutzereingabebereiche aus Ihrer Umgebung entfernen, die Prinzipien der geringsten Privilegien durchsetzen und die neuesten Filter- und Bereinigungs-Tools verwenden, um potenzielle Angriffe zu untersuchen und zu erkennen, können Sie diese gefährliche Schwachstelle ausschalten. Die Einstellung, Benutzereingaben niemals zu vertrauen, wird Ihnen auch in Zukunft gute Dienste leisten. Wenn Sie all das tun, können Sie dieser gefährlichen Art von Angriffen einen Schritt voraus sein.

Als weitere Lektüre können Sie einen Blick auf den OWASP-Artikel über Code-Injektion werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Beseitigung dieser Schwachstelle und eine Schurkengalerie anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Stellen Sie sich der Code-Injektion, genau jetzt. Nehmen Sie die Herausforderung auf unserer gamifizierten Trainingsplattform an: [Hier starten]

目次

PDF herunterladen
リソースを表示
もっと興味がありますか?

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

mehr erfahren

Secure Code Warrior schützt Ihren Code während des gesamten Softwareentwicklungszyklus und hilft Ihnen dabei, eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie Anwendungs-Sicherheitsmanager, Entwickler, CISO oder Sicherheitsbeauftragter sind – wir helfen Ihnen dabei, die mit unsicherem Code verbundenen Risiken zu minimieren.

デモを予約[ダウンロード]
シェア:
LinkedIn-MarkenSozialx Logo
リソースハブ

Ressourcen für den Einstieg

Weitere Beiträge
リソースハブ

Ressourcen für den Einstieg

Weitere Beiträge