2.3 KiB
Relro
{{#include ../../../banners/hacktricks-training.md}}
Relro
RELRO steht für Relocation Read-Only und ist eine Sicherheitsfunktion, die in Binärdateien verwendet wird, um die Risiken im Zusammenhang mit GOT (Global Offset Table)-Überschreibungen zu mindern. Lassen Sie uns das Konzept in seine beiden unterschiedlichen Typen zur Klarheit aufteilen: Partial RELRO und Full RELRO.
Partial RELRO
Partial RELRO verfolgt einen einfacheren Ansatz zur Verbesserung der Sicherheit, ohne die Leistung der Binärdatei erheblich zu beeinträchtigen. Durch die Positionierung des GOT über den Variablen des Programms im Speicher zielt Partial RELRO darauf ab, Pufferüberläufe daran zu hindern, den GOT zu erreichen und zu beschädigen.
Dies verhindert nicht, dass der GOT durch willkürliche Schreib-Schwachstellen missbraucht wird.
Full RELRO
Full RELRO erhöht den Schutz, indem der GOT vollständig schreibgeschützt gemacht wird. Sobald die Binärdatei gestartet wird, werden alle Funktionsadressen aufgelöst und im GOT geladen, dann wird der GOT als schreibgeschützt markiert, was effektiv Änderungen während der Laufzeit verhindert.
Der Nachteil von Full RELRO liegt jedoch in der Leistung und der Startzeit. Da alle dynamischen Symbole beim Start aufgelöst werden müssen, bevor der GOT als schreibgeschützt markiert wird, könnten Binärdateien mit aktivierter Full RELRO längere Ladezeiten erfahren. Dieser zusätzliche Startaufwand ist der Grund, warum Full RELRO nicht standardmäßig in allen Binärdateien aktiviert ist.
Es ist möglich zu sehen, ob Full RELRO in einer Binärdatei aktiviert ist mit:
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
Bypass
Wenn Full RELRO aktiviert ist, besteht der einzige Weg, es zu umgehen, darin, einen anderen Weg zu finden, der nicht benötigt, um in die GOT-Tabelle zu schreiben, um willkürliche Ausführung zu erhalten.
Beachten Sie, dass LIBC's GOT normalerweise Partial RELRO ist, sodass es mit einem willkürlichen Schreibvorgang modifiziert werden kann. Weitere Informationen in Targetting libc GOT entries.
{{#include ../../../banners/hacktricks-training.md}}