Ist der Heartbleed-Bug eine Manifestation des klassischen Pufferüberlauf-Exploits in C?

In einer unserer ersten CS-Vorlesungen zum Thema Sicherheit wurden wir durch das Problem von C geführt und dabei die angeblichen Pufferlängen und einige Beispiele für die verschiedenen Möglichkeiten, wie diese Sicherheitsanfälligkeit ausgenutzt werden kann, nicht überprüft.

In diesem Fall handelt es sich anscheinend um einen böswilligen Lesevorgang, bei dem die Anwendung nur so viele Bytes Speicher ausliest

Habe ich Recht, wenn ich behaupte, dass der Heartbleed-Fehler ein Ausdruck des Problems der C-Pufferlängenprüfung ist?

Warum verursachte die böswillige Verwendung keinen Segmentierungsfehler, als versucht wurde, den Speicher einer anderen Anwendung zu lesen?

Hätte ein einfaches Nullsetzen des Speichers vor dem Schreiben (und anschließendem Lesen) einen Segmentierungsfehler verursacht? Oder variiert dies zwischen den Betriebssystemen? Oder zwischen einem anderen Umweltfaktor?

Anscheinend können Ausnutzungen des Fehlers nicht identifiziert werden. Liegt das daran, dass die Heartbeat-Funktion beim Aufruf nicht protokolliert? Andernfalls ist sicherlich jede Anfrage nach einer ~ 64k-Zeichenfolge böswillig.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage