Remote-Sicherheitsschwäche im IPv6-Stack von OpenBSD

Im Hintergrundprozess slaacd, der in OpenBSD für die automatische Konfiguration von IPv6-Adressen (IPv6 Stateless Address Autoconfiguration, RFC 4862) verantwortlich ist, wurde eine Schwachstelle entdeckt, die zu einem Pufferüberlauf führt, wenn ein speziell gestaltetes IPv6-Router-Ankündigung (RA, Router Advertisement) empfangen wird.

Ursprünglich wurde die Funktionalität der automatischen Konfiguration von IPv6-Adressen auf Kernel-Ebene implementiert, aber seit OpenBSD 6.2 wurde sie in einen separaten unprivilegierten Prozess slaacd verlagert. Dieser Prozess ist verantwortlich für das Senden von RS-Nachrichten (Router Solicitation) und das Verarbeiten von RA-Antworten (Router Advertisement) mit Informationen über den Router und die Netzwerkkonfigurationsparameter.

Im Februar wurde im slaacd ein Fehler behoben, der zu einem Absturz führte, wenn 7 Server in der RDNSS-Liste (Recursive DNS Servers) angegeben war. Diese Nachlässigkeit erregte die Aufmerksamkeit unabhängiger Forscher, die versuchten, den Code von slaacd auf andere Fehler zu überprüfen, die beim Verarbeiten der Felder in RA-Nachrichten auftreten können. Die Analyse ergab, dass es im Code ein weiteres Problem gibt, das beim Verarbeiten des DNSSL-Feldes (DNS Search List) auftritt, das Listen Domainnamen und Hostmuster für DNS enthält.

Jeder Name in der DNSSL-Liste wird unter Verwendung eines Null-Byte-Trennzeichens und zwischenliegender einbyteiger Labels kodiert, die die Größe der folgenden Daten bestimmen. Die Schwachstelle entsteht dadurch, dass im Code zur Verarbeitung der Liste das Feld mit der Größe in eine Variable mit einem vorzeichenbehafteten ganzzahligen Typ kopiert wird ("len = data[pos]"). Dementsprechend wird im Falle eines im Feld angegebenen Wertes mit gesetztem höchsten Bit dieser Wert im bedingten Operator als negative Zahl interpretiert, und die Überprüfung auf die maximal zulässige Größe ("if (len > 63 || len + pos + 1 > datalen) {") funktioniert nicht, was zu einem Aufruf von memcpy führt, bei dem die Größe der kopierten Daten die Größe des Puffers überschreitet.

Remote-Sicherheitsschwäche im IPv6-Stack von OpenBSD
Remote-Sicherheitsschwäche im IPv6-Stack von OpenBSD


Quelle: opennet.ru
60GB SSD 8Gb DDR4