one_gadget RCE
Was ist one_gadget RCE?
one_gadget RCEExploit-Abkuerzung in CTFs und realen Angriffen: ein einziger libc-Sprung startet eine Shell, sofern Register- und Stack-Bedingungen erfuellt sind.
Ein one_gadget ist eine Instruktionssequenz innerhalb der glibc, die unter bestimmten Register- und Stack-Vorbedingungen letztlich execve("/bin/sh", NULL, NULL) aufruft. Das Werkzeug one_gadget von david942j scannt eine libc und listet diese Adressen mit ihren Constraints, etwa rax == 0 oder rsp+0x40 == NULL. Wer einen einzelnen Funktionspointer oder eine Rueckkehradresse uebernehmen kann (GOT-Overwrite, FILE-Stream-Angriffe, Unsorted-Bin), erhaelt damit eine Shell, ohne eine komplette ROP-Kette zu bauen. Die Constraints muessen sorgfaeltig erfuellt werden, oft mit Hilfsgadgets oder Stack-Pivots. Gegenmassnahmen: Constant Blinding, CFI, seccomp-Sandboxes und gestrippte/modifizierte libcs ohne kanonische Gadgets.
● Beispiele
- 01
Mit one_gadget /bin/sh starten nach einem einzelnen GOT-Overwrite in einem libc-2.31-Binary.
- 02
FILE-Stream-Exploit korrumpiert die vtable von _IO_2_1_stdout_, um zu einem erfuellbaren one_gadget zu springen.
● Häufige Fragen
Was ist one_gadget RCE?
Exploit-Abkuerzung in CTFs und realen Angriffen: ein einziger libc-Sprung startet eine Shell, sofern Register- und Stack-Bedingungen erfuellt sind. Es gehört zur Kategorie Angriffe und Bedrohungen der Cybersicherheit.
Was bedeutet one_gadget RCE?
Exploit-Abkuerzung in CTFs und realen Angriffen: ein einziger libc-Sprung startet eine Shell, sofern Register- und Stack-Bedingungen erfuellt sind.
Wie funktioniert one_gadget RCE?
Ein one_gadget ist eine Instruktionssequenz innerhalb der glibc, die unter bestimmten Register- und Stack-Vorbedingungen letztlich execve("/bin/sh", NULL, NULL) aufruft. Das Werkzeug one_gadget von david942j scannt eine libc und listet diese Adressen mit ihren Constraints, etwa rax == 0 oder rsp+0x40 == NULL. Wer einen einzelnen Funktionspointer oder eine Rueckkehradresse uebernehmen kann (GOT-Overwrite, FILE-Stream-Angriffe, Unsorted-Bin), erhaelt damit eine Shell, ohne eine komplette ROP-Kette zu bauen. Die Constraints muessen sorgfaeltig erfuellt werden, oft mit Hilfsgadgets oder Stack-Pivots. Gegenmassnahmen: Constant Blinding, CFI, seccomp-Sandboxes und gestrippte/modifizierte libcs ohne kanonische Gadgets.
Wie schützt man sich gegen one_gadget RCE?
Schutzmaßnahmen gegen one_gadget RCE kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für one_gadget RCE?
Übliche alternative Bezeichnungen: one_gadget.
● Verwandte Begriffe
- attacks№ 569
Jump-Oriented Programming (JOP)
Code-Reuse-Technik (Bletsch et al., 2011), die Gadgets mit indirekten Spruengen ueber einen Dispatcher verkettet, ein ROP-Aequivalent ohne ret.
- vulnerabilities№ 667
Speicherkorruption
Sammelbegriff für Schwachstellen, bei denen ein Programm außerhalb der vorgesehenen Speichergrenzen schreibt und so Typsicherheit, Kontrollfluss oder Datenintegrität untergräbt.
- vulnerabilities№ 131
Pufferüberlauf
Speicher-Sicherheitslücke, bei der ein Programm über das Ende eines allokierten Puffers hinausschreibt, benachbarten Speicher überschreibt und häufig Codeausführung ermöglicht.