In OpenBSD wurde eine Technik zum Schutz vor der Ausnutzung von Schwachstellen implementiert, die auf der zufälligen Neukompilierung der ausführbaren Datei sshd bei jedem Systemstart basiert. Zuvor wurde eine ähnliche Neukompilierungstechnik für den Kernel sowie für die Bibliotheken libc.so, libcrypto.so und ld.so verwendet, und nun wird sie auch für bestimmte ausführbare Dateien angewendet. In naher Zukunft ist geplant, diese Methode auch für ntpd und andere Serveranwendungen zu implementieren. Die Änderung ist bereits in der CURRENT-Branch enthalten und wird in der Version OpenBSD 7.3 angeboten.
Die Neukompilierung macht die Adressen von Funktionen in den Bibliotheken wenig vorhersehbar, was die Erstellung von Exploits erschwert, die Techniken der Rücksprungorientierten Programmierung (ROP – Return-Oriented Programming) verwenden. Bei der Verwendung der ROP-Technik versucht der Angreifer nicht, eigenen Code im Speicher zu platzieren, sondern arbeitet mit bereits in den geladenen Bibliotheken vorhandenen Abschnitten von Maschinenanweisungen, die mit einer Rücksprunganweisung enden (in der Regel das Ende von Bibliotheksfunktionen). Die Funktionsweise des Exploits besteht darin, eine Kette von Aufrufen solcher Blöcke („Gadgets“) zu erstellen, um die gewünschte Funktionalität zu erreichen.
Quelle: opennet.ru
