Glibc: Fehler in DNS-Code

Eine als kritisch eingestufte Sicherheitslücke in der Glibc-Bibliothek hat zur Folge, dass ein entfernter Angreifer Befehle mit den Rechten des Anwenders ausführen kann. Ursache der Schwachstelle ist ein Programmierfehler in dem Code des DNS Response Handlers. Der Fehler befindet sich in der »/resolv/nss_dns/dns-host.c«-Datei, wo die »getanswer_r()«-Funktion nicht korrekt implementiert ist. Das Problem besteht hier darin, dass die Laenge eines internen Puffers falsch berechnet wird:

uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data);
buffer += pad;if (__glibc_unlikely (buflen < sizeof (struct host_data) + pad)){ /* The buffer is too small. */ 

Hier wird das Padding nicht korrekt behandelt. Ein am 22. April veröffentlichter Patch berichtigt dieses Problem und ersetzt die fehlerhafte If()-Abfrage. Damit ist die Puffergrösse korrekt berechnet und die Attacke ist nicht mehr möglich.

Nach oben