Ich habe die Theorie gehört. Adressraum-Standort-Randomisierung nimmt Bibliotheken und lädt sie an zufälligen Orten im virtuellen Adressraum, so dass, falls ein Hacker ein Loch in Ihrem Programm findet, er keine vorbekannte Adresse hat, um einen Rückkehr-zu-libc-Angriff auszuführen gegen zum Beispiel. Aber nachdem ich ein paar Sekunden darüber nachgedacht habe, macht es keinen Sinn als Verteidigungsmaßnahme.Wie kann ASLR effektiv sein?
Nehmen wir an, dass unsere hypothetische TargetLib (libc oder irgendetwas anderes, nach dem der Hacker sucht) an einer zufälligen Adresse statt an einer deterministischen Adresse geladen wird. Nun weiß der Hacker nicht mehr, wo TargetLib und die darin enthaltenen Routinen sind, aber auch nicht der Anwendungscode. Es muss irgendeine Art von Nachschlagetabelle irgendwo in der Binärdatei haben, um die Routinen innerhalb von TargetLib zu finden, und das muss an einer deterministischen Position sein. (Oder an einem zufälligen Ort, auf den etwas anderes zeigt. Sie können so viele Umleitungen hinzufügen, wie Sie möchten, aber schließlich müssen Sie an einem bekannten Ort beginnen.)
Dies bedeutet, dass anstatt seinen Angriffscode auf die Bekannter Standort von TargetLib. Der Hacker muss lediglich seinen Angriffscode auf den Eintrag der Referenztabelle der Anwendung für TargetLib zeigen und den Zeiger auf die Zielroutine dereferenzieren, und der Angriff verläuft ungehindert.
Gibt es etwas über die Art, wie ASLR funktioniert, die ich nicht verstehe? Denn wie beschrieben, sehe ich nicht, dass es mehr ist als eine Geschwindigkeitsbegrenzung, die das Bild der Sicherheit liefert, aber keine tatsächliche Substanz. Fehle ich etwas?
Haben Sie jemals eine Windows EXE auf ASM-Ebene getestet? Da ist eine echte Import-Tabelle drin. Der Ladeprogramm packt den Code nicht (alle Stellen, an denen Ihr Code eine externe Routine aufruft), er patcht die Importtabelle, was im Grunde eine lange Folge von JMP-Anweisungen ist, an die der Compiler CALLs generiert. –
Es ist nicht nur gemeinsame Speicher ... – rook
@Mason Wheeler - nicht für eine lange Weile, aber das ist gut zu wissen. Während das macht es einfacher, eine bestimmte Adresse zu bestimmen, ist der Nettoeffekt gleich, nicht wahr? Es verändert ein bekanntes zu einem unbekannten, was den Angriff einfach erschwert. –