Yn it eftergrûnproses slaacd, dat ferantwurdlik is foar IPv6-adres autokonfiguraasje (IPv6 Stateless Address Autoconfiguration, RFC 4862) yn OpenBSD, is in kwetsberens identifisearre dy't liedt ta in bufferoverflow by it ûntfangen fan in spesjaal ûntwurpen IPv6-router-advertinsje (RA, Router Advertisement) .
Yn earste ynstânsje waard de IPv6-adres autokonfiguraasjefunksjonaliteit ymplementearre op it kernelnivo, mar begjinnend mei OpenBSD 6.2 waard it ferpleatst nei in apart unprivileged slaacd-proses. Dit proses is ferantwurdlik foar it ferstjoeren fan RS (Router Solicitation) berjochten en parsing RA (Router Advertisement) antwurden mei ynformaasje oer de router en netwurkferbining parameters.
Yn febrewaris waard in bug yn slaacd reparearre dy't in crash feroarsaakje soe as 7 oantsjutte waard. servers yn 'e RDNSS (Rekursive DNS-tsjinners) list. Dit tafersjoch luts de oandacht fan ûnôfhinklike ûndersikers, dy't besochten de slaacd-koade te ûndersiikjen op oare flaters dy't foarkomme by it parsen fan fjilden yn RA-berjochten. De analyze liet sjen dat de koade in oar probleem befettet dat foarkomt by it ferwurkjen fan it DNSSL (DNS Search List) fjild, dat listen befettet fan domeinnammen en host-sjabloanen foar DNS.
Elke namme yn 'e DNSSL-list wurdt kodearre mei in null-delimiter en tuskenlizzende ien-byte-tags dy't de grutte fan' e gegevens dy't folgje bepale. De kwetsberens wurdt feroarsake troch it feit dat yn de list parsing koade, in fjild mei in grutte wurdt kopiearre yn in fariabele mei in tekene hiel getal type ("len = data[pos]"). Dêrom, as in wearde wurdt oantsjutte yn it fjild mei de meast wichtige bit set, dizze wearde wurdt waarnommen yn de betingst operator as in negatyf nûmer en de kontrôle foar de maksimale tastiene grutte ("as (len> 63 || len + pos + 1 > datalen) {“) sil net wurkje, wat sil liede ta in oprop nei memcpy mei in parameter wêrfan de grutte fan 'e kopieare gegevens de buffergrutte grutter is.


Boarne: opennet.ru
