Një dobësi është zbuluar në procesin e sfondit slaacd, i cili është përgjegjës për konfigurimin automatik të adresës IPv6 (Autokonfigurimi i Adresës pa Stateless IPv6, RFC 4862) në OpenBSD, duke çuar në një mbingarkesë të memorjes kur merret një reklamë (RA) e krijuar posaçërisht për routerin IPv6.
Fillimisht, funksionaliteti i autokonfigurimit të adresës IPv6 u implementua në nivelin e bërthamës, por duke filluar me OpenBSD 6.2, u zhvendos në një proces të veçantë dhe pa privilegje, slaacd. Ky proces është përgjegjës për dërgimin e mesazheve RS (Router Solicitation - Kërkesë për Router) dhe analizimin e përgjigjeve RA (Reklamim për Router) që përmbajnë informacionin e routerit dhe parametrat e lidhjes së rrjetit.
Në shkurt, u rregullua një gabim në slaacd që do të shkaktonte një bllokim nëse specifikohej 7. serverat në listën RDNSS (Serverat DNS Rekursiv). Ky mbikëqyrje tërhoqi vëmendjen e studiuesve të pavarur, të cilët u përpoqën të shqyrtonin kodin slaacd për gabime të tjera që ndodhin gjatë analizimit të fushave në mesazhet RA. Analiza zbuloi se kodi përmban një problem tjetër që ndodh gjatë përpunimit të fushës DNSSL (Lista e Kërkimit DNS), e cila përfshin lista të emrat e domeneve dhe shabllonet e hostit për DNS.
Çdo emër në listën DNSSL është i koduar duke përdorur një ndarës të bazuar në zero dhe shënjues ndërhyrës me një bajt që përcaktojnë madhësinë e të dhënave të mëposhtme. Dobësia ndodh sepse kodi i analizimit të listës kopjon fushën e madhësisë në një ndryshore të plotë të nënshkruar ("len = data[pos]"). Si pasojë, nëse fusha përmban një vlerë me bitin e rendit të lartë të vendosur, kjo vlerë do të interpretohet si një numër negativ në deklaratën kushtëzuese, dhe kontrolli i madhësisë maksimale të lejuar ("if (len > 63 || len + pos + 1 > datalen) {") do të dështojë, duke rezultuar në një thirrje memcpy me një parametër madhësia e të cilit tejkalon madhësinë e buffer-it.


Burimi: opennet.ru
