SCW アイコン
ヒーロー背景(区切りなし)
ブログ

Programmierer erobern Sicherheit: Serie „Teilen und Lernen“ — Code Injection

Jaap Karan Singh
2019年5月16日 発行
最終更新日: 2026年3月9日

Code-Injection-Angriffe gehören zu den häufigsten und auch gefährlichsten Angriffen, denen viele Websites und Anwendungen ausgesetzt sind. Sie decken das gesamte Spektrum ab, sowohl in Bezug auf ihre Raffinesse als auch in Bezug auf die von ihnen ausgehende Gefahr, aber fast jede Website oder App, die Benutzereingaben akzeptiert, könnte anfällig sein. Tatsächlich ist diese Art von Angriff eine, mit der sich fast jeder Cybersicherheitsverteidiger irgendwann in seiner Karriere auseinandersetzen muss, und er wird sich wahrscheinlich mehrmals damit auseinandersetzen.

Ein Code-Injection-Angriff kann immer dann auftreten, wenn eine Anwendung oder Website Eingaben von Benutzern akzeptiert. Dies kann so einfach sein wie die Bereitstellung einer Suchfunktion oder die Aufforderung eines Benutzers, seine Identifikationsinformationen einzugeben. Der Angriff erfolgt, wenn ein böswilliger Benutzer anstelle der normalen Texteingabe Code in das offene Feld eingibt. Ihr Ziel ist es, den Server dazu zu bringen, die Eingabe mit gültigem Code zu verwechseln und dann alle vom Angreifer gewünschten Funktionen auszuführen.

Code-Injection-Angriffe sind zwar extrem häufig, aber auch die verfügbaren Abwehrmaßnahmen, mit denen sie gestoppt werden können. In dieser Episode werden wir lernen:

  • So funktionieren sie
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmechanismen einrichten können, um sie zu stoppen.

Wie verwenden Angreifer Code Injection?

Obwohl sich die spezifischen Details zu Code-Injection-Angriffen 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 für SQL, HTML, XML, CSS und jede andere gängige Programmiersprache ausgelöst.

Zunächst muss ein Angreifer anfälligen Code in einer Anwendung finden, normalerweise an einem Punkt, an dem Benutzer ihre eigenen Eingaben eingeben dürfen. Dieser Code verwendet beispielsweise die PHP-Funktion eval () und übergibt sie an einen Benutzer zur Änderung, ohne dass die Rückgabezeichenfolge überprüft wird.

$myvar = „Variablenname“;
$x = $_GET [Argument];
eval („\ $myvar =\ $x;“);

Ein cleverer Angreifer könnte der eval-Funktion leicht eine eigene Zeichenfolge hinzufügen und sogar Systembefehle ausführen, wenn er dies wünscht.

/index.php? Argument = 1; System (ID)

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

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

Code-Injection-Angriffe sind je nach Können des Angreifers potenziell extrem gefährlich. Sie können alles tun, was die Programmiersprache zulässt, was sie mit den Programmierern der App gleichstellt. Ein Angreifer könnte quasi seine eigene App schreiben und sie in der Zielumgebung ausführen lassen.

Selbst weniger geschickte Angreifer können gefährlich sein. Anstatt ihre eigene Anwendung oder Codezeichenfolgen zu schreiben, können sie das Zielsystem einfach anweisen, vorprogrammierte Malware zu akzeptieren und zu installieren. Dies könnte zur Verunstaltung der Website oder zu Ransomware-Angriffen führen oder sogar zur Grundlage für eine Phishing-Kampagne gegen die Nutzer der Website werden.

In den meisten Fällen werden Code-Injection-Angriffe verwendet, um Dinge wie Benutzerlisten und Passwörter zu stehlen oder wertvolle Erkenntnisse über ein System zu gewinnen, das weiteren Angriffen ausgesetzt ist. Aber seien Sie gewarnt, ein erfahrener Programmierer kann mit einem Code-Injection-Angriff fast alles machen. Deshalb ist es wichtig, dass jede potenzielle Instanz dieser Angriffe entdeckt und aus Ihrer Umgebung entfernt wird.

Vertraue niemandem! (Oder zumindest keine Benutzer)

Bei der Beseitigung von Sicherheitslücken bei Code-Injection-Angriffen sollten Sie zuerst nach einer Stelle suchen, die Benutzereingaben verlangt oder zulässt. Alles, was ein Benutzer eingibt, darf unter keinen Umständen als vertrauenswürdig eingestuft werden. Wenn Sie Benutzereingaben ohne Filterung oder Prüfung zulassen, laden Sie Angreifer im Grunde dazu ein, eine freie Chance zu haben, Ihr System oder sogar Ihr Netzwerk zu gefährden.

Obwohl dies nicht immer möglich ist, lassen sich Code-Injection-Angriffe am besten verhindern, indem Sie verhindern, dass Funktionen Benutzereingaben direkt ausführen oder interpretieren. Vielleicht können Benutzer zwischen statischen Optionen wählen, anstatt die Freiheit zu haben, ihre eigenen Abfragen einzugeben, wobei die Anwendung so programmiert ist, dass sie nur diese begrenzten Auswahlmöglichkeiten als gültig akzeptiert. Vielleicht ist das nicht immer angemessen, aber wenn Sie es, wo immer möglich, verwenden, können Codeinjektionen vermieden werden, bevor sie beginnen.

In Bereichen, in denen Benutzer ihre eigenen Eingaben eingeben müssen, müssen diese Daten streng kontrolliert werden. Angenommen, alles ist ein potenzieller Angriff, ist ein guter Anfang. Durch die Durchsetzung von Richtlinien mit den geringsten Rechten, wie z. B. schreibgeschütztem Benutzerzugriff, sowohl auf Client- als auch auf Serverseite, kann die Ausführung des größten Teils des Codes verhindert werden.

Die andere gute Verteidigung besteht darin, anwendungsweite Filter und Desinfizierungen für alles zu implementieren, was Benutzer eingeben. Entwickler sind sich seit Jahren der Code-Injection-Angriffe bewusst, und für jedes Framework und jede Sprache gibt es Bibliotheken mit bewährten Filtern. Achten Sie beim Anwenden dieser Filter darauf, dass Sie dies nicht nur an den offensichtlichen Benutzereingabebereichen oder an allgemeinen Parametern wie Get- und Post-Befehlen tun, sondern auch an Cookies und HTTP-Headern.

Anwenden einer Korrektur für die Codeinjektion

Wenn Sie unnötige Benutzereingabebereiche aus Ihrer Umgebung entfernen, die Prinzipien der geringsten Zugriffsrechte durchsetzen und die neuesten Filter- und Sanitisierungstools verwenden, um potenzielle Angriffe zu untersuchen und zu erkennen, können Sie diese gefährliche Sicherheitslücke schließen. Die Einstellung, Benutzereingaben niemals zu vertrauen, wird Ihnen auch in Zukunft gute Dienste leisten. Wenn Sie all das tun, sind Sie dieser gefährlichen Art von Angriffen immer einen Schritt voraus.

Für weitere Informationen können Sie sich die OWASP ansehen schreiben Sie auf Code-Injektion. Sie können Ihr neu gewonnenes Verteidigungswissen auch mit dem auf die Probe stellen kostenlose Demo der Secure Code Warrior-Plattform, die Cybersicherheitsteams zu ultimativen Cyberkriegern ausbildet. Um mehr über die Beseitigung dieser Sicherheitslücke und eine Galerie mit anderen Bedrohungen zu erfahren, besuchen Sie die Blog von Secure Code Warrior.

Gesichtscode-Injektion direkt, sofort. Nehmen Sie die Herausforderung auf unserer gamifizierten Trainingsplattform an: [Fangen Sie hier an]

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

Code-Injection-Angriffe gehören zu den häufigsten und auch gefährlichsten Angriffen, denen viele Websites und Anwendungen ausgesetzt sind. Sie decken das gesamte Spektrum ab, sowohl in Bezug auf ihre Raffinesse als auch in Bezug auf die von ihnen ausgehende Gefahr, aber fast jede Website oder App, die Benutzereingaben akzeptiert, könnte anfällig sein.

もっと知りたいですか?

Jaap Karan Singh ist Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

もっと詳しく

Secure Code Warrior 、ソフトウェア開発サイクル全体を通じてコードの安全性を確保し、サイバーセキュリティを最優先とする文化を構築するため、貴社をSecure Code Warrior 。アプリセキュリティ管理者、開発者、CISO、あるいはセキュリティに関わるあらゆる立場の方々に対し、当社が貴社のビジネスにおける不安全なコードに関連するリスクの低減を支援します。

デモを予約する
共有する:
リンクトインのブランドソーシャルx ロゴ
著者
Jaap Karan Singh
2019年5月16日発行

Jaap Karan Singh ist Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

共有する:
リンクトインのブランドソーシャルx ロゴ

Code-Injection-Angriffe gehören zu den häufigsten und auch gefährlichsten Angriffen, denen viele Websites und Anwendungen ausgesetzt sind. Sie decken das gesamte Spektrum ab, sowohl in Bezug auf ihre Raffinesse als auch in Bezug auf die von ihnen ausgehende Gefahr, aber fast jede Website oder App, die Benutzereingaben akzeptiert, könnte anfällig sein. Tatsächlich ist diese Art von Angriff eine, mit der sich fast jeder Cybersicherheitsverteidiger irgendwann in seiner Karriere auseinandersetzen muss, und er wird sich wahrscheinlich mehrmals damit auseinandersetzen.

Ein Code-Injection-Angriff kann immer dann auftreten, wenn eine Anwendung oder Website Eingaben von Benutzern akzeptiert. Dies kann so einfach sein wie die Bereitstellung einer Suchfunktion oder die Aufforderung eines Benutzers, seine Identifikationsinformationen einzugeben. Der Angriff erfolgt, wenn ein böswilliger Benutzer anstelle der normalen Texteingabe Code in das offene Feld eingibt. Ihr Ziel ist es, den Server dazu zu bringen, die Eingabe mit gültigem Code zu verwechseln und dann alle vom Angreifer gewünschten Funktionen auszuführen.

Code-Injection-Angriffe sind zwar extrem häufig, aber auch die verfügbaren Abwehrmaßnahmen, mit denen sie gestoppt werden können. In dieser Episode werden wir lernen:

  • So funktionieren sie
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmechanismen einrichten können, um sie zu stoppen.

Wie verwenden Angreifer Code Injection?

Obwohl sich die spezifischen Details zu Code-Injection-Angriffen 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 für SQL, HTML, XML, CSS und jede andere gängige Programmiersprache ausgelöst.

Zunächst muss ein Angreifer anfälligen Code in einer Anwendung finden, normalerweise an einem Punkt, an dem Benutzer ihre eigenen Eingaben eingeben dürfen. Dieser Code verwendet beispielsweise die PHP-Funktion eval () und übergibt sie an einen Benutzer zur Änderung, ohne dass die Rückgabezeichenfolge überprüft wird.

$myvar = „Variablenname“;
$x = $_GET [Argument];
eval („\ $myvar =\ $x;“);

Ein cleverer Angreifer könnte der eval-Funktion leicht eine eigene Zeichenfolge hinzufügen und sogar Systembefehle ausführen, wenn er dies wünscht.

/index.php? Argument = 1; System (ID)

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

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

Code-Injection-Angriffe sind je nach Können des Angreifers potenziell extrem gefährlich. Sie können alles tun, was die Programmiersprache zulässt, was sie mit den Programmierern der App gleichstellt. Ein Angreifer könnte quasi seine eigene App schreiben und sie in der Zielumgebung ausführen lassen.

Selbst weniger geschickte Angreifer können gefährlich sein. Anstatt ihre eigene Anwendung oder Codezeichenfolgen zu schreiben, können sie das Zielsystem einfach anweisen, vorprogrammierte Malware zu akzeptieren und zu installieren. Dies könnte zur Verunstaltung der Website oder zu Ransomware-Angriffen führen oder sogar zur Grundlage für eine Phishing-Kampagne gegen die Nutzer der Website werden.

In den meisten Fällen werden Code-Injection-Angriffe verwendet, um Dinge wie Benutzerlisten und Passwörter zu stehlen oder wertvolle Erkenntnisse über ein System zu gewinnen, das weiteren Angriffen ausgesetzt ist. Aber seien Sie gewarnt, ein erfahrener Programmierer kann mit einem Code-Injection-Angriff fast alles machen. Deshalb ist es wichtig, dass jede potenzielle Instanz dieser Angriffe entdeckt und aus Ihrer Umgebung entfernt wird.

Vertraue niemandem! (Oder zumindest keine Benutzer)

Bei der Beseitigung von Sicherheitslücken bei Code-Injection-Angriffen sollten Sie zuerst nach einer Stelle suchen, die Benutzereingaben verlangt oder zulässt. Alles, was ein Benutzer eingibt, darf unter keinen Umständen als vertrauenswürdig eingestuft werden. Wenn Sie Benutzereingaben ohne Filterung oder Prüfung zulassen, laden Sie Angreifer im Grunde dazu ein, eine freie Chance zu haben, Ihr System oder sogar Ihr Netzwerk zu gefährden.

Obwohl dies nicht immer möglich ist, lassen sich Code-Injection-Angriffe am besten verhindern, indem Sie verhindern, dass Funktionen Benutzereingaben direkt ausführen oder interpretieren. Vielleicht können Benutzer zwischen statischen Optionen wählen, anstatt die Freiheit zu haben, ihre eigenen Abfragen einzugeben, wobei die Anwendung so programmiert ist, dass sie nur diese begrenzten Auswahlmöglichkeiten als gültig akzeptiert. Vielleicht ist das nicht immer angemessen, aber wenn Sie es, wo immer möglich, verwenden, können Codeinjektionen vermieden werden, bevor sie beginnen.

In Bereichen, in denen Benutzer ihre eigenen Eingaben eingeben müssen, müssen diese Daten streng kontrolliert werden. Angenommen, alles ist ein potenzieller Angriff, ist ein guter Anfang. Durch die Durchsetzung von Richtlinien mit den geringsten Rechten, wie z. B. schreibgeschütztem Benutzerzugriff, sowohl auf Client- als auch auf Serverseite, kann die Ausführung des größten Teils des Codes verhindert werden.

Die andere gute Verteidigung besteht darin, anwendungsweite Filter und Desinfizierungen für alles zu implementieren, was Benutzer eingeben. Entwickler sind sich seit Jahren der Code-Injection-Angriffe bewusst, und für jedes Framework und jede Sprache gibt es Bibliotheken mit bewährten Filtern. Achten Sie beim Anwenden dieser Filter darauf, dass Sie dies nicht nur an den offensichtlichen Benutzereingabebereichen oder an allgemeinen Parametern wie Get- und Post-Befehlen tun, sondern auch an Cookies und HTTP-Headern.

Anwenden einer Korrektur für die Codeinjektion

Wenn Sie unnötige Benutzereingabebereiche aus Ihrer Umgebung entfernen, die Prinzipien der geringsten Zugriffsrechte durchsetzen und die neuesten Filter- und Sanitisierungstools verwenden, um potenzielle Angriffe zu untersuchen und zu erkennen, können Sie diese gefährliche Sicherheitslücke schließen. Die Einstellung, Benutzereingaben niemals zu vertrauen, wird Ihnen auch in Zukunft gute Dienste leisten. Wenn Sie all das tun, sind Sie dieser gefährlichen Art von Angriffen immer einen Schritt voraus.

Für weitere Informationen können Sie sich die OWASP ansehen schreiben Sie auf Code-Injektion. Sie können Ihr neu gewonnenes Verteidigungswissen auch mit dem auf die Probe stellen kostenlose Demo der Secure Code Warrior-Plattform, die Cybersicherheitsteams zu ultimativen Cyberkriegern ausbildet. Um mehr über die Beseitigung dieser Sicherheitslücke und eine Galerie mit anderen Bedrohungen zu erfahren, besuchen Sie die Blog von Secure Code Warrior.

Gesichtscode-Injektion direkt, sofort. Nehmen Sie die Herausforderung auf unserer gamifizierten Trainingsplattform an: [Fangen Sie hier an]

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

以下のフォームに記入してレポートをダウンロードしてください

当社製品および/またはセキュアコーディングに関連する情報について、お客様にご案内させていただくことをお許しください。お客様の個人情報は常に細心の注意をもって取り扱い、マーケティング目的で他社に販売することは一切ありません。

提出
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、「アナリティクス」クッキーを有効にしてください。完了後、いつでも無効に戻せます。

Code-Injection-Angriffe gehören zu den häufigsten und auch gefährlichsten Angriffen, denen viele Websites und Anwendungen ausgesetzt sind. Sie decken das gesamte Spektrum ab, sowohl in Bezug auf ihre Raffinesse als auch in Bezug auf die von ihnen ausgehende Gefahr, aber fast jede Website oder App, die Benutzereingaben akzeptiert, könnte anfällig sein. Tatsächlich ist diese Art von Angriff eine, mit der sich fast jeder Cybersicherheitsverteidiger irgendwann in seiner Karriere auseinandersetzen muss, und er wird sich wahrscheinlich mehrmals damit auseinandersetzen.

Ein Code-Injection-Angriff kann immer dann auftreten, wenn eine Anwendung oder Website Eingaben von Benutzern akzeptiert. Dies kann so einfach sein wie die Bereitstellung einer Suchfunktion oder die Aufforderung eines Benutzers, seine Identifikationsinformationen einzugeben. Der Angriff erfolgt, wenn ein böswilliger Benutzer anstelle der normalen Texteingabe Code in das offene Feld eingibt. Ihr Ziel ist es, den Server dazu zu bringen, die Eingabe mit gültigem Code zu verwechseln und dann alle vom Angreifer gewünschten Funktionen auszuführen.

Code-Injection-Angriffe sind zwar extrem häufig, aber auch die verfügbaren Abwehrmaßnahmen, mit denen sie gestoppt werden können. In dieser Episode werden wir lernen:

  • So funktionieren sie
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmechanismen einrichten können, um sie zu stoppen.

Wie verwenden Angreifer Code Injection?

Obwohl sich die spezifischen Details zu Code-Injection-Angriffen 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 für SQL, HTML, XML, CSS und jede andere gängige Programmiersprache ausgelöst.

Zunächst muss ein Angreifer anfälligen Code in einer Anwendung finden, normalerweise an einem Punkt, an dem Benutzer ihre eigenen Eingaben eingeben dürfen. Dieser Code verwendet beispielsweise die PHP-Funktion eval () und übergibt sie an einen Benutzer zur Änderung, ohne dass die Rückgabezeichenfolge überprüft wird.

$myvar = „Variablenname“;
$x = $_GET [Argument];
eval („\ $myvar =\ $x;“);

Ein cleverer Angreifer könnte der eval-Funktion leicht eine eigene Zeichenfolge hinzufügen und sogar Systembefehle ausführen, wenn er dies wünscht.

/index.php? Argument = 1; System (ID)

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

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

Code-Injection-Angriffe sind je nach Können des Angreifers potenziell extrem gefährlich. Sie können alles tun, was die Programmiersprache zulässt, was sie mit den Programmierern der App gleichstellt. Ein Angreifer könnte quasi seine eigene App schreiben und sie in der Zielumgebung ausführen lassen.

Selbst weniger geschickte Angreifer können gefährlich sein. Anstatt ihre eigene Anwendung oder Codezeichenfolgen zu schreiben, können sie das Zielsystem einfach anweisen, vorprogrammierte Malware zu akzeptieren und zu installieren. Dies könnte zur Verunstaltung der Website oder zu Ransomware-Angriffen führen oder sogar zur Grundlage für eine Phishing-Kampagne gegen die Nutzer der Website werden.

In den meisten Fällen werden Code-Injection-Angriffe verwendet, um Dinge wie Benutzerlisten und Passwörter zu stehlen oder wertvolle Erkenntnisse über ein System zu gewinnen, das weiteren Angriffen ausgesetzt ist. Aber seien Sie gewarnt, ein erfahrener Programmierer kann mit einem Code-Injection-Angriff fast alles machen. Deshalb ist es wichtig, dass jede potenzielle Instanz dieser Angriffe entdeckt und aus Ihrer Umgebung entfernt wird.

Vertraue niemandem! (Oder zumindest keine Benutzer)

Bei der Beseitigung von Sicherheitslücken bei Code-Injection-Angriffen sollten Sie zuerst nach einer Stelle suchen, die Benutzereingaben verlangt oder zulässt. Alles, was ein Benutzer eingibt, darf unter keinen Umständen als vertrauenswürdig eingestuft werden. Wenn Sie Benutzereingaben ohne Filterung oder Prüfung zulassen, laden Sie Angreifer im Grunde dazu ein, eine freie Chance zu haben, Ihr System oder sogar Ihr Netzwerk zu gefährden.

Obwohl dies nicht immer möglich ist, lassen sich Code-Injection-Angriffe am besten verhindern, indem Sie verhindern, dass Funktionen Benutzereingaben direkt ausführen oder interpretieren. Vielleicht können Benutzer zwischen statischen Optionen wählen, anstatt die Freiheit zu haben, ihre eigenen Abfragen einzugeben, wobei die Anwendung so programmiert ist, dass sie nur diese begrenzten Auswahlmöglichkeiten als gültig akzeptiert. Vielleicht ist das nicht immer angemessen, aber wenn Sie es, wo immer möglich, verwenden, können Codeinjektionen vermieden werden, bevor sie beginnen.

In Bereichen, in denen Benutzer ihre eigenen Eingaben eingeben müssen, müssen diese Daten streng kontrolliert werden. Angenommen, alles ist ein potenzieller Angriff, ist ein guter Anfang. Durch die Durchsetzung von Richtlinien mit den geringsten Rechten, wie z. B. schreibgeschütztem Benutzerzugriff, sowohl auf Client- als auch auf Serverseite, kann die Ausführung des größten Teils des Codes verhindert werden.

Die andere gute Verteidigung besteht darin, anwendungsweite Filter und Desinfizierungen für alles zu implementieren, was Benutzer eingeben. Entwickler sind sich seit Jahren der Code-Injection-Angriffe bewusst, und für jedes Framework und jede Sprache gibt es Bibliotheken mit bewährten Filtern. Achten Sie beim Anwenden dieser Filter darauf, dass Sie dies nicht nur an den offensichtlichen Benutzereingabebereichen oder an allgemeinen Parametern wie Get- und Post-Befehlen tun, sondern auch an Cookies und HTTP-Headern.

Anwenden einer Korrektur für die Codeinjektion

Wenn Sie unnötige Benutzereingabebereiche aus Ihrer Umgebung entfernen, die Prinzipien der geringsten Zugriffsrechte durchsetzen und die neuesten Filter- und Sanitisierungstools verwenden, um potenzielle Angriffe zu untersuchen und zu erkennen, können Sie diese gefährliche Sicherheitslücke schließen. Die Einstellung, Benutzereingaben niemals zu vertrauen, wird Ihnen auch in Zukunft gute Dienste leisten. Wenn Sie all das tun, sind Sie dieser gefährlichen Art von Angriffen immer einen Schritt voraus.

Für weitere Informationen können Sie sich die OWASP ansehen schreiben Sie auf Code-Injektion. Sie können Ihr neu gewonnenes Verteidigungswissen auch mit dem auf die Probe stellen kostenlose Demo der Secure Code Warrior-Plattform, die Cybersicherheitsteams zu ultimativen Cyberkriegern ausbildet. Um mehr über die Beseitigung dieser Sicherheitslücke und eine Galerie mit anderen Bedrohungen zu erfahren, besuchen Sie die Blog von Secure Code Warrior.

Gesichtscode-Injektion direkt, sofort. Nehmen Sie die Herausforderung auf unserer gamifizierten Trainingsplattform an: [Fangen Sie hier an]

ウェビナーを見る
始めましょう
もっと詳しく

以下のリンクをクリックして、このリソースのPDFをダウンロードしてください。

Secure Code Warrior 、ソフトウェア開発サイクル全体を通じてコードの安全性を確保し、サイバーセキュリティを最優先とする文化を構築するため、貴社をSecure Code Warrior 。アプリセキュリティ管理者、開発者、CISO、あるいはセキュリティに関わるあらゆる立場の方々に対し、当社が貴社のビジネスにおける不安全なコードに関連するリスクの低減を支援します。

レポートを見るデモを予約する
PDFをダウンロード
リソースを表示
共有する:
リンクトインのブランドソーシャルx ロゴ
もっと知りたいですか?

共有する:
リンクトインのブランドソーシャルx ロゴ
著者
Jaap Karan Singh
2019年5月16日発行

Jaap Karan Singh ist Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

共有する:
リンクトインのブランドソーシャルx ロゴ

Code-Injection-Angriffe gehören zu den häufigsten und auch gefährlichsten Angriffen, denen viele Websites und Anwendungen ausgesetzt sind. Sie decken das gesamte Spektrum ab, sowohl in Bezug auf ihre Raffinesse als auch in Bezug auf die von ihnen ausgehende Gefahr, aber fast jede Website oder App, die Benutzereingaben akzeptiert, könnte anfällig sein. Tatsächlich ist diese Art von Angriff eine, mit der sich fast jeder Cybersicherheitsverteidiger irgendwann in seiner Karriere auseinandersetzen muss, und er wird sich wahrscheinlich mehrmals damit auseinandersetzen.

Ein Code-Injection-Angriff kann immer dann auftreten, wenn eine Anwendung oder Website Eingaben von Benutzern akzeptiert. Dies kann so einfach sein wie die Bereitstellung einer Suchfunktion oder die Aufforderung eines Benutzers, seine Identifikationsinformationen einzugeben. Der Angriff erfolgt, wenn ein böswilliger Benutzer anstelle der normalen Texteingabe Code in das offene Feld eingibt. Ihr Ziel ist es, den Server dazu zu bringen, die Eingabe mit gültigem Code zu verwechseln und dann alle vom Angreifer gewünschten Funktionen auszuführen.

Code-Injection-Angriffe sind zwar extrem häufig, aber auch die verfügbaren Abwehrmaßnahmen, mit denen sie gestoppt werden können. In dieser Episode werden wir lernen:

  • So funktionieren sie
  • Warum sie so gefährlich sind
  • Wie Sie Abwehrmechanismen einrichten können, um sie zu stoppen.

Wie verwenden Angreifer Code Injection?

Obwohl sich die spezifischen Details zu Code-Injection-Angriffen 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 für SQL, HTML, XML, CSS und jede andere gängige Programmiersprache ausgelöst.

Zunächst muss ein Angreifer anfälligen Code in einer Anwendung finden, normalerweise an einem Punkt, an dem Benutzer ihre eigenen Eingaben eingeben dürfen. Dieser Code verwendet beispielsweise die PHP-Funktion eval () und übergibt sie an einen Benutzer zur Änderung, ohne dass die Rückgabezeichenfolge überprüft wird.

$myvar = „Variablenname“;
$x = $_GET [Argument];
eval („\ $myvar =\ $x;“);

Ein cleverer Angreifer könnte der eval-Funktion leicht eine eigene Zeichenfolge hinzufügen und sogar Systembefehle ausführen, wenn er dies wünscht.

/index.php? Argument = 1; System (ID)

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

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

Code-Injection-Angriffe sind je nach Können des Angreifers potenziell extrem gefährlich. Sie können alles tun, was die Programmiersprache zulässt, was sie mit den Programmierern der App gleichstellt. Ein Angreifer könnte quasi seine eigene App schreiben und sie in der Zielumgebung ausführen lassen.

Selbst weniger geschickte Angreifer können gefährlich sein. Anstatt ihre eigene Anwendung oder Codezeichenfolgen zu schreiben, können sie das Zielsystem einfach anweisen, vorprogrammierte Malware zu akzeptieren und zu installieren. Dies könnte zur Verunstaltung der Website oder zu Ransomware-Angriffen führen oder sogar zur Grundlage für eine Phishing-Kampagne gegen die Nutzer der Website werden.

In den meisten Fällen werden Code-Injection-Angriffe verwendet, um Dinge wie Benutzerlisten und Passwörter zu stehlen oder wertvolle Erkenntnisse über ein System zu gewinnen, das weiteren Angriffen ausgesetzt ist. Aber seien Sie gewarnt, ein erfahrener Programmierer kann mit einem Code-Injection-Angriff fast alles machen. Deshalb ist es wichtig, dass jede potenzielle Instanz dieser Angriffe entdeckt und aus Ihrer Umgebung entfernt wird.

Vertraue niemandem! (Oder zumindest keine Benutzer)

Bei der Beseitigung von Sicherheitslücken bei Code-Injection-Angriffen sollten Sie zuerst nach einer Stelle suchen, die Benutzereingaben verlangt oder zulässt. Alles, was ein Benutzer eingibt, darf unter keinen Umständen als vertrauenswürdig eingestuft werden. Wenn Sie Benutzereingaben ohne Filterung oder Prüfung zulassen, laden Sie Angreifer im Grunde dazu ein, eine freie Chance zu haben, Ihr System oder sogar Ihr Netzwerk zu gefährden.

Obwohl dies nicht immer möglich ist, lassen sich Code-Injection-Angriffe am besten verhindern, indem Sie verhindern, dass Funktionen Benutzereingaben direkt ausführen oder interpretieren. Vielleicht können Benutzer zwischen statischen Optionen wählen, anstatt die Freiheit zu haben, ihre eigenen Abfragen einzugeben, wobei die Anwendung so programmiert ist, dass sie nur diese begrenzten Auswahlmöglichkeiten als gültig akzeptiert. Vielleicht ist das nicht immer angemessen, aber wenn Sie es, wo immer möglich, verwenden, können Codeinjektionen vermieden werden, bevor sie beginnen.

In Bereichen, in denen Benutzer ihre eigenen Eingaben eingeben müssen, müssen diese Daten streng kontrolliert werden. Angenommen, alles ist ein potenzieller Angriff, ist ein guter Anfang. Durch die Durchsetzung von Richtlinien mit den geringsten Rechten, wie z. B. schreibgeschütztem Benutzerzugriff, sowohl auf Client- als auch auf Serverseite, kann die Ausführung des größten Teils des Codes verhindert werden.

Die andere gute Verteidigung besteht darin, anwendungsweite Filter und Desinfizierungen für alles zu implementieren, was Benutzer eingeben. Entwickler sind sich seit Jahren der Code-Injection-Angriffe bewusst, und für jedes Framework und jede Sprache gibt es Bibliotheken mit bewährten Filtern. Achten Sie beim Anwenden dieser Filter darauf, dass Sie dies nicht nur an den offensichtlichen Benutzereingabebereichen oder an allgemeinen Parametern wie Get- und Post-Befehlen tun, sondern auch an Cookies und HTTP-Headern.

Anwenden einer Korrektur für die Codeinjektion

Wenn Sie unnötige Benutzereingabebereiche aus Ihrer Umgebung entfernen, die Prinzipien der geringsten Zugriffsrechte durchsetzen und die neuesten Filter- und Sanitisierungstools verwenden, um potenzielle Angriffe zu untersuchen und zu erkennen, können Sie diese gefährliche Sicherheitslücke schließen. Die Einstellung, Benutzereingaben niemals zu vertrauen, wird Ihnen auch in Zukunft gute Dienste leisten. Wenn Sie all das tun, sind Sie dieser gefährlichen Art von Angriffen immer einen Schritt voraus.

Für weitere Informationen können Sie sich die OWASP ansehen schreiben Sie auf Code-Injektion. Sie können Ihr neu gewonnenes Verteidigungswissen auch mit dem auf die Probe stellen kostenlose Demo der Secure Code Warrior-Plattform, die Cybersicherheitsteams zu ultimativen Cyberkriegern ausbildet. Um mehr über die Beseitigung dieser Sicherheitslücke und eine Galerie mit anderen Bedrohungen zu erfahren, besuchen Sie die Blog von Secure Code Warrior.

Gesichtscode-Injektion direkt, sofort. Nehmen Sie die Herausforderung auf unserer gamifizierten Trainingsplattform an: [Fangen Sie hier an]

目次

PDFをダウンロード
リソースを表示
もっと知りたいですか?

Jaap Karan Singh ist Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

もっと詳しく

Secure Code Warrior 、ソフトウェア開発サイクル全体を通じてコードの安全性を確保し、サイバーセキュリティを最優先とする文化を構築するため、貴社をSecure Code Warrior 。アプリセキュリティ管理者、開発者、CISO、あるいはセキュリティに関わるあらゆる立場の方々に対し、当社が貴社のビジネスにおける不安全なコードに関連するリスクの低減を支援します。

デモを予約するダウンロード
共有する:
リンクトインのブランドソーシャルx ロゴ
リソースハブ

入門リソース

さらに多くの投稿
リソースハブ

入門リソース

さらに多くの投稿