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 帮助您在整个软件开发周期中保障代码安全,并建立将网络安全置于首位的企业文化。无论您是应用安全经理、开发人员、首席信息安全官,还是其他从事安全工作的人员,我们都能协助您的企业降低不安全代码带来的风险。

预约演示
分享到:
领英品牌社交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 错误图标
要提交表单,请启用“Analytics”Cookie。完成后,您可随时将其关闭。

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 帮助您在整个软件开发周期中保障代码安全,并建立将网络安全置于首位的企业文化。无论您是应用安全经理、开发人员、首席信息安全官,还是其他从事安全工作的人员,我们都能协助您的企业降低不安全代码带来的风险。

查看报告预约演示
下载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 帮助您在整个软件开发周期中保障代码安全,并建立将网络安全置于首位的企业文化。无论您是应用安全经理、开发人员、首席信息安全官,还是其他从事安全工作的人员,我们都能协助您的企业降低不安全代码带来的风险。

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

入门资源

更多文章
资源中心

入门资源

更多文章