Vulnerabilitatea la distanță în stiva OpenBSD IPv6

În procesul de fundal slaacd, care în OpenBSD este responsabil pentru autoconfigurarea adreselor IPv6 (IPv6 Stateless Address Autoconfiguration, RFC 4862), a fost identificată o vulnerabilitate care duce la o depășire a bufferului atunci când se primește o reclamă special concepută pentru ruter IPv6 (RA, Router Advertisement).

Inițial, funcționalitatea de autoconfigurare a adresei IPv6 a fost implementată la nivel de kernel, dar începând cu OpenBSD 6.2 a fost mutată într-un proces separat de slaacd neprivilegiat. Acest proces este responsabil pentru trimiterea mesajelor RS (Router Solicitation) și analizarea răspunsurilor RA (Router Advertisement) cu informații despre router și parametrii conexiunii la rețea.

În februarie, slaacd a remediat o eroare care a cauzat blocarea acestuia dacă în lista RDNSS (Servere DNS recursive) erau specificate 7 servere. Această supraveghere a atras atenția cercetătorilor independenți care au încercat să examineze codul slaacd pentru alte erori care apar la analizarea câmpurilor din mesajele RA. Analiza a arătat că mai există o problemă în cod, care se manifestă la procesarea câmpului DNSSL (DNS Search List), care include liste de nume de domenii și șabloane de gazdă pentru DNS.

Fiecare nume din lista DNSSL este codificat folosind un delimitator nul și etichete de un octet care determină dimensiunea datelor care urmează. Vulnerabilitatea este cauzată de faptul că în codul de analiză a listei, un câmp cu o dimensiune este copiat într-o variabilă cu un tip întreg cu semn („len = data[pos]”). În consecință, dacă în câmp este specificată o valoare cu cel mai semnificativ set de biți, această valoare va fi percepută în operatorul condiționat ca un număr negativ și verificarea dimensiunii maxime admisibile („dacă (len > 63 || len + pos + 1 > datalen) {“) nu va funcționa, ceea ce va duce la un apel la memcpy cu un parametru a cărui dimensiune a datelor copiate depășește dimensiunea bufferului.

Vulnerabilitatea la distanță în stiva OpenBSD IPv6
Vulnerabilitatea la distanță în stiva OpenBSD IPv6


Sursa: opennet.ru

Adauga un comentariu