Die Umgebungsvariable LD_PRELOAD in unix-ähnlichen Systemen ermöglicht es Benutzern, eine Shared-Bibliothek anzugeben, die vor anderen geladen wird, wenn ein Programm gestartet wird. Dies kann verwendet werden, um Funktionen in bestehenden Bibliotheken zu überschreiben oder benutzerdefinierten Code in Anwendungen einzufügen. Der dynamische Linker ist dafür verantwortlich, das Programmimage und die Shared-Bibliotheken zu laden und dann die Ausführung zu starten. Unter Linux ist der dynamische Linker ld-linux.so, während unter FreeBSD es ld-elf.so ist. LD_PRELOAD fügt eine Liste von Shared-Bibliotheken hinzu, die vom dynamischen Linker geladen werden, um Funktionen zu überschreiben. Beispiele für die Verwendung von LD_PRELOAD sind die transparente Dekomprimierung von Dateien und das Überschreiben und read-/write-Funktionen. LD_PRELOAD kann für Tests, Hotfixes, Beobachtbarkeit und alternative Implementierungen verwendet werden. Es gibt jedoch Sicherheitsimplikationen, wie das Überschreiben von Systemaufrufen, und es gibt Maßnahmen, um Missbrauch zu verhindern. LD_PRELOAD kann auf alternative Weise verwendet werden, wie z.B. die Befehlszeile --preload-Option und die Datei /etc/ld.so.preload. Schließlich ist eBPF eine Alternative zu LD_PRELOAD, aber es ist eingeschränkter und führt nicht zu den gleichen Sicherheitsproblemen.
dev.to
LD_PRELOAD explained
Create attached notes ...
