Gibt es Informationen darüber, welche Maßnahmen glibc benötigt, um Heap-basierte Exploits zu erschweren? Ich habe von einigen Dingen wie PTR_MANGLE und einigen nebulösen "heap consistency checking" auf den Seiten der Sicherheitsfunktionslisten mehrerer Linux-Distributionen gehört, aber ich konnte keine detaillierten Informationen darüber finden, wie diese Mechanismen tatsächlich implementiert werden, wenn sie dies tun sind effektiv und welche Vulnerabilitätsklassen umfassen sie. Auch bei der Suche nach den genannten Features konnte ich keine glibc-Dokumentation finden.Informationen zu Glibc-Heap-Schutzmechanismen?
Welche Funktionen sind also implementiert und wie gut funktionieren sie? Verfügt Glibc über einen Mechanismus zur Überprüfung der Heap-Konsistenz, der dem Stack-Crash-Schutz auf dem Stack ähnelt? Verschlüsselt PTR_MANGLE alle Zeiger oder nur einen Teil davon? Und vor allem: Können diese Funktionen vom Endbenutzer eingeschaltet werden, oder hängen sie von bestimmten APIs ab, so dass ich hoffen muss, dass derjenige, der die Programme geschrieben hat, die Schutzmechanismen aktiviert hat?
Haben Sie beispielsweise eine Google-Suche nach 'glibc heap protection' versucht? Es kommt zuerst auf Ihre Frage, aber die folgenden Referenzen sind ziemlich nützlich. (Einige, wie das Glibc-Handbuch, sind nicht so sofort hilfreich, wie Sie hoffen.) "Glibc ptr_mangle" liefert eine Menge nützlicher Informationen. –
@ JonathanLeffler Danke, ich habe "glibc ptr_mangle" nachgeschlagen und die Antwort auf die meisten meiner Fragen dazu gefunden. Die einzige Information, die ich nicht finden konnte, war, ob ptr_mangle für jedes mit glibc kompilierte Programm aktiviert ist oder nicht, oder ob die Person, die das Programm schreibt, angeben muss, dass sie mit einer speziellen Funktion geschützt werden soll. Ich nehme an, dass es ein automatischer Schutz ist, aber ich kann nichts finden, was das beweist. Ich konnte auch nicht herausfinden, ob glibc etwas wie Stapelkanarien für den Haufen implementiert. –
Sie könnten nachsehen [Frage ist auf libc Zeigerverschlüsselung] (http://stackoverflow.com/questions/19584160/questions-on-libcs-pointer-encryption), die eine Verknüpfung zu einem anderen Dokument hat, das helfen kann. –