Në procesin në background slaacd, i cili është përgjegjës për autokonfigurimin e adresave IPv6 në OpenBSD (IPv6 Stateless Address Autoconfiguration, RFC 4862), është zbuluar një vulnerabilitet që çon në një mbingarkesë të memories kur merr një njoftim të formatizuar posaçërisht nga një router IPv6 (RA, Router Advertisement).
Fillimisht, funksionaliteti i autokonfigurimit të adresave IPv6 ishte realizuar në nivelin e kernel-it, por që nga OpenBSD 6.2, është transferuar në një proces të veçantë pa privilegje, slaacd. Ky proces është përgjegjës për dërgimin e mesazheve RS (Router Solicitation) dhe për analizën e përgjigjeve RA (Router Advertisement) me informacion mbi routerin dhe parametrat e lidhjes në rrjet.
Në shkurt, në slaacd u rregullua një gabim që çonte në një ndalim të papritur në rastin e specifikimit të 7 servera në listën e RDNSS (Recursive DNS Servers). Një gabim i tillë tërhoqi vëmendjen e studiuesve të pavarur, të cilët përpiqeshin të studiojnë kodin e slaacd për gjendje të tjera gabimesh që ndodhnin gjatë analizës së fushave në mesazhet RA. Analiza tregoi se në kod ekziston edhe një problem tjetër, i cili shfaqet gjatë përpunimit të fushës DNSSL (DNS Search List), e cila përfshin lista emrave të domain-eve dhe modele hostesh për DNS.
Çdo emër në listën DNSSL kodifikohet duke përdorur një ndarës me kod zero dhe etiketat një-bajtëshe ndërmjetëse që përcaktojnë madhësinë e të dhënave që vijnë pas. Vulnerabiliteti shkaktohet nga fakti që në kodin e analizës së listës, fusha me madhësinë kopjohet në një variabël me tipin e nënshkruar integer ("len = data[pos]"). Për rrjedhojë, në rastin e specifikimit të një vlerë në fushë me bitin më të lartë të aktivizuar, kjo vlerë do të perceptohet në operatorin kusht si një numër negativ dhe kontrolli për madhësinë maksimale të lejuar ("if (len > 63 || len + pos + 1 > datalen) {") nuk do të funksionojë, duke çuar në thirrjen e memcpy me një parametrat, ku madhësia e të dhënave që kopjohen e kalon madhësinë e buffers.


Burimi: opennet.ru
