Kwetsbaarheid op afstand in OpenBSD IPv6-stack

In het achtergrondproces slaacd, dat verantwoordelijk is voor de automatische configuratie van IPv6-adressen (IPv6 Stateless Address Autoconfiguration, RFC 4862) in OpenBSD, is een kwetsbaarheid geïdentificeerd die leidt tot een bufferoverflow bij het ontvangen van een speciaal ontworpen IPv6-routeradvertentie (RA, Router Advertising) .

Aanvankelijk werd de automatische configuratiefunctionaliteit voor IPv6-adressen geïmplementeerd op kernelniveau, maar vanaf OpenBSD 6.2 werd het verplaatst naar een apart slaacd-proces zonder privileges. Dit proces is verantwoordelijk voor het verzenden van RS-berichten (Router Solicitation) en het parseren van RA-reacties (Router Advertising) met informatie over de router en netwerkverbindingsparameters.

In februari repareerde slaacd een bug die ervoor zorgde dat het crashte als er 7 servers waren opgegeven in de RDNSS-lijst (Recursive DNS Servers). Dit toezicht trok de aandacht van onafhankelijke onderzoekers die probeerden de slaacd-code te onderzoeken op andere fouten die optreden bij het parseren van velden in RA-berichten. Uit de analyse bleek dat er nog een ander probleem in de code zit, dat zich manifesteert bij het verwerken van het DNSSL-veld (DNS Search List), dat lijsten met domeinnamen en hostsjablonen voor DNS bevat.

Elke naam in de DNSSL-lijst wordt gecodeerd met een null-scheidingsteken en tussenliggende tags van één byte die de grootte bepalen van de gegevens die volgen. De kwetsbaarheid wordt veroorzaakt doordat in de lijstparseercode een veld met een grootte wordt gekopieerd naar een variabele met een geheel getal met teken (“len = data[pos]”). Als er dus een waarde wordt gespecificeerd in het veld met de meest significante bitset, zal deze waarde in de voorwaardelijke operator worden gezien als een negatief getal en zal de controle op de maximaal toegestane grootte (“if (len > 63 || len + pos + 1 > datalen) {“) zal niet werken, wat zal leiden tot een aanroep naar memcpy met een parameter waarvan de grootte van de gekopieerde gegevens de buffergrootte overschrijdt.

Kwetsbaarheid op afstand in OpenBSD IPv6-stack
Kwetsbaarheid op afstand in OpenBSD IPv6-stack


Bron: opennet.ru

Voeg een reactie