Was ist ein RCE-Angriff (Remote Code Execution)?
Remotecodeausführung wird verwendet, um eine Form von Sicherheitsanfälligkeit aufzudecken, die ausgenutzt werden kann, wenn Benutzereingaben in eine Datei oder einen String eingefügt werden und das gesamte Paket auf dem Parser der Programmiersprache ausgeführt wird. Dies ist nicht die Art von Verhalten, die vom Entwickler der Webanwendung angezeigt wird. Ein Remotecodeausführungsangriff kann zu einem umfassenden Angriff führen, der eine gesamte Webanwendung und den Webserver gefährden würde. Sie sollten auch beachten, dass praktisch alle Programmiersprachen unterschiedliche Codeauswertungsfunktionen haben.
Eine Codeauswertung kann auch auftreten, wenn Sie Benutzereingaben Zugriff auf Funktionen gewähren, die Code in derselben Programmiersprache auswerten. Diese Art von Maßnahme kann absichtlich implementiert werden, um Zugriff auf die mathematischen Funktionen der Programmiersprache zu erhalten, oder durch Zufall, da die benutzergesteuerte Eingabe vom Entwickler so konzipiert ist, dass sie sich innerhalb einer dieser Funktionen befindet. Es ist nicht ratsam, diese Aktionslinie auszuführen. Viele Leute finden es bösartig, sogar die Codeauswertung zu verwenden.
Beispiel für Code
Schauen wir uns ein Beispiel für einen Codeauswertungsangriff an.
Es scheint eine bessere Idee zu sein, dynamisch generierte Variablennamen für jeden Benutzer zu haben und deren Registrierungsdatum zu speichern. Dies ist ein Beispiel dafür, wie Sie es in PHP tun können
eval("$$user = '$regdate');As long as the username is controlled by the user's input, an attacker may create a name like this:x = 'y';phpinfo();//
Der generierte PHP-Code würde folgendermaßen aussehen:
$x = 'y';phpinfo();// = 2016';
Wenn der Angreifer der Variablen einen anderen Wert zuweisen kann, kann er mithilfe eines Semikolons (;) einen neuen Befehl erstellen. Er kann nun den Rest der Saite ausfüllen. Auf diese Weise erhält er keine Syntaxfehler in seiner Arbeit. Sobald er diesen Code ausführt, wird die Ausgabe von phpinfo auf der Seite angezeigt. Sie sollten immer daran denken, dass dies in PHP und anderen Sprachen mit Funktionen möglich ist, die Eingaben bewerten können.
Anordnen der Remotecodeausführung nach Ursprung
Die meisten der festgestellten RCE-Schwächen sind auf bestimmte grundlegende Ursachen zurückzuführen, die bis zum Ausgangspunkt zurückverfolgt werden können. Die Gruppierung der Remotecodeausführung nach Anfang wird wie folgt untersucht.
Dynamische Codeausführung
Die dynamische Codeausführung ist nach allen Berichten der am weitesten verbreitete Grund, der zu einem Angriff auf die Codeausführung führt. Viele Programmierdialekte sind so geplant, dass sie Code mit einem anderen Code erzeugen und sofort ausführen können. Diese Idee ist eine erstaunliche, die verschiedene komplexe Probleme behandelt. Wie dem auch sei, ein böswilliger Angreifer kann diese Idee kontrollieren, um RCE-Zugriff und -Kapazitäten zu erhalten.
Normalerweise hängt der schnell erzeugte Code von bestimmten Client-Eingaben ab. Üblicherweise enthält der Code die Informationen, die für eine bestimmte Struktur gespeichert wurden. Wenn ein bösartiger Angreifer versteht, dass der mächtige Code Age bestimmte Informationen verwendet, kann er einen erheblichen Code als eine Art Zugriff auf die Anwendung erstellen. Wenn die Beiträge der Kunden nicht geprüft werden, wird der Code auf sein Ziel hin ausgeführt.
An dem Punkt, an dem Sie genau hinschauen, ist die dynamische Codeausführung für zwei Arten von RCE-basierten Angriffen verantwortlich. unmittelbar und umständlich.
Direct
Beim Verwalten einer Illustration der direkten eindeutigen Codeausführung erkennt der Angreifer, dass sein Feedback zur Erzeugung von Code verwendet wird.
Indirekt
Auf abweichende Weise ist es besorgt über das mächtige Codezeitalter mit Client-Eingaben. Die Client-Eingabe unterliegt typischerweise mindestens einer Schicht. Ein Teil der Ebenen ist möglicherweise dafür verantwortlich, den Beitrag zu ändern, bevor er mit dem dynamischen Codealter endet. Darüber hinaus kann das dynamische Codealter eine nachfolgende Auswirkung haben und nicht die sofortige Verwendung der Informationen. Aus diesem Grund ist es dem Client möglicherweise nicht klar, dass die Informationen, die als Strukturblock in einem Codeblock ausgefüllt werden, entfernt ausgeführt werden.
Deserialisierung
Deserialisierung ist eine unglaubliche Anleitung, um den gegenwärtigen Umstand darzustellen. Während der Deserialisierung sollte kein starkes Codealter auftreten. Intermittierend ist dies die Situation, die auftritt, wenn das serialisierte Objekt grobe Informationsfelder oder Objekte vergleichbarer Art enthält. Die Dinge werden verwirrender, wenn die Elemente des Artikels serialisiert werden. Deserialisierung würde ebenfalls ein gewisses Maß an dynamischem Codealter beinhalten.
Es scheint, dass mächtige Dialekte die einzigen sind, die von der Arbeitsserialisierung beeinflusst werden. Sofern dies zutrifft, wäre das Problem sehr begrenzt. Wie dem auch sei, diese Situation ist auch in statischen Dialekten sehr hilfreich. Es ist schwieriger, mit der statischen Sprache zu erreichen, aber es ist sicherlich nicht machbar.
Intermittierend verwaltet die Ausführung dieser Idee die von der Deserialisierung erzeugten Zwischenkapazitäten. Age-Objekte zur Laufzeit sind nur mit Dynamic Code Age denkbar. Dies bedeutet, dass, wenn die Informationen, die deserialisiert werden, in einer entfernten Aufforderung gemacht werden, ein böswilliger Angreifer sie befehligen und anpassen könnte. Rundum geplante Codebits könnten ebenfalls mit dem leistungsstarken Codezeitalter vertraut sein, um die Kapazität auszuführen, wenn sie als Teil der Deserialisierung integriert wird.
Speichersicherheit
Ein weiterer grundlegender Grund für RCE-Angriffe ist die Speichersicherheit oder API-Sicherheit. Memory Wellbeing spielt auf die Gegenwirkung von Code an, zu grundlegenden Teilen des Speichers zu gelangen, die er nicht instanziiert hat. Es ist normal zu erwarten, dass ein Mangel an Speichersicherheit zu unbefugtem Zugriff auf Informationen führen würde. In jedem Fall hängen der Arbeitsrahmen und die Ausrüstung vom Speicher ab, um ausführbaren Code zu speichern. Metadaten, die sich mit der Codeausführung identifizieren, werden im Speicher gespeichert. Der Zugriff auf diesen Teil des Speichers könnte ACE und RCE veranlassen. Was sind auf diese Weise einige der Gründe für Gedächtnisprobleme?
Die Unvollkommenheiten des Produktplans
Unvollkommenheiten in der Produktkonfiguration sind eine Art Gedächtnisschwäche, die auftritt, wenn ein Planungsfehler in einem bestimmten verborgenen Teil vorliegt. Zeitweise kann der Mangelteil ein Compiler, Übersetzer, eine virtuelle Maschine oder sogar der Arbeitsframework-Teil oder die Bibliothek sein. Es gibt verschiedene Fehler in dieser Klasse. Ein Teil der incorporate;
Pufferüberlauf
Pufferüberlauf, der zusätzlich als Pufferüberlesen bezeichnet wird, kann verwendet werden, um auf eine grundlegende und bekannte Methode hinzuweisen, mit der Speicherfehler behoben werden. Dieser Angriff nutzt einen bestimmten Planfehler oder einen Fehler, um mit den Speicherzellen in Kontakt zu bleiben, die sich am Ende des Speicherkissens befinden. Die Unterstützung würde von einem authentischen Aufruf der öffentlichen API zurückerhalten. Nichtsdestotrotz spielt es nur auf einen Startplatz an und wird verwendet, um die tatsächlichen Speicherplätze eines bestimmten Artikel- oder Programmzählers zu registrieren. Ihre Trennung von der Wiege ist bemerkenswert oder kann zweifellos spekuliert werden. Die Untersuchung des Codes, wann immer er zugänglich gemacht wird, oder die Fehlerbehebung bei der gesamten Programmausführung zur Laufzeit können für einen Angreifer nützlich sein, der relative Positionen untersuchen muss.
Dies impliziert, dass eine Speicherflut es ermöglichen würde, den bis zu einem gewissen Grad nicht verfügbaren Speicher zu ändern. Die Wiege befindet sich möglicherweise im Standortbereich einer weiteren Maschine und wird durch Aufrufen einer entfernten API geändert. Dies ermöglicht den Zugriff auf den Speicher des Remote-Computers. Es gibt zahlreiche Ansätze, um diese Art von Zugang bei der Erstellung eines RCE Double-Dealing zu nutzen. Es besteht der allgemeine Verdacht, dass ein RCE-basierter Angriff nicht von den Karten ausgeschlossen ist, wenn man annimmt, dass es ein Kissen der Schwäche gibt. Dies bedeutet, dass Codeinhaber angewiesen sind, ihre Support-Probleme umgehend zu beheben, bevor ein RCE-Angriff stattfindet.
Fehler beim Gerätedesign
Speicherausfälle können ebenfalls auf Fehler bei der Gerätekonfiguration zurückzuführen sein. Sie sind nicht so normal wie Programmierangriffe und viel schwerer zu erkennen. Dennoch wirkt sich diese Art von Angriff enorm auf den Rahmen aus.
Auswirkungen der Remotecodeauswertung Sicherheitsanfälligkeit
Ein Angreifer, der einen remotecodebasierten Angriff auf ein System erfolgreich ausführen kann, kann andere Befehle ausführen, indem er die Programmiersprache oder den Webserver ausnutzt. In vielen Programmiersprachen kann der Angreifer dem System befehlen, Dateien zu schreiben, zu lesen oder zu löschen. Es kann sogar möglich sein, mit dem angegriffenen System eine Verbindung zu verschiedenen Datenbanken herzustellen.
Warum starten Angreifer RCE-Angriffe?
Es gibt zwar keinen besonderen Grund, warum Angreifer die RCE-Ausnutzung nutzen, um eine Webanwendung anzugreifen, es gibt jedoch keinen besonderen Grund. Es ist nur so, dass es einigen Böswilligen leicht fällt, diese Codeausführung zu nutzen, um Zugriff auf Ihre Systeme zu erhalten.
Wie verhindern Sie Remotecodeausführungsangriffe?
ZUNÄCHST sollten Sie die Verwendung von Benutzereingaben in Ihrem Code vermeiden. Die beste Option in dieser Situation wäre, die Verwendung von Funktionen wie eval vollständig zu vermeiden. Es wird als eine Form der schlechten Praxis angesehen und kann leicht vermieden werden. Es wird auch empfohlen, dass Sie niemals zulassen, dass ein Benutzer den Inhalt von Dateien bearbeitet, die möglicherweise von der betreffenden Programmiersprache analysiert wurden. Dazu gehört häufig, dass ein Benutzer den Namen und die Dateierweiterungen erstellen kann, die er in der Webanwendung hochladen oder erstellen möchte.
Dies sind einige der Dinge, die Sie nicht tun sollten, um RCE-basierte Angriffe zu vermeiden. Dazu gehören:
- Benutzereingaben bereinigen. Dies ist häufig schwierig zu erreichen, da eine große Anzahl vorinstallierter Bypässe und Einschränkungen vorhanden ist.
- Lassen Sie einen Benutzer die Erweiterung oder den Inhalt von Dateien entscheiden oder erstellen, die auf dem Webserver verwendet werden sollen. Er / sie muss beim Umgang mit Datei-Uploads viele sichere Praktiken anwenden oder riskieren, dass wichtige Informationen in die falschen Hände geraten.
- Übergeben Sie beliebige benutzergesteuerte Eingaben an Systemrückrufe oder Auswertefunktionen
- Und setzen Sie aktiv Sonderzeichen oder Funktionsnamen auf die schwarze Liste. Dies sollte genau wie die Bereinigung von Benutzereingaben vermieden werden. Aber es ist unglaublich schwierig zu implementieren.