OpenBSD IPv6 virna kaughaavatavus

Taustprotsessis slaacd, mis vastutab IPv6 aadresside automaatse konfigureerimise eest (IPv6 Stateless Address Autoconfiguration, RFC 4862) OpenBSD-s, on tuvastatud haavatavus, mis põhjustab spetsiaalselt loodud IPv6 ruuteri reklaami (RA, Router Advertisement) saamisel puhvri ületäitumise. .

Algselt rakendati IPv6 aadresside automaatse seadistamise funktsioon kerneli tasemel, kuid alates OpenBSD 6.2-st viidi see üle eraldi privilegeerimata slaacd protsessi. See protsess vastutab RS (Router Solicitation) sõnumite saatmise ja RA (Router Advertisement) vastuste sõelumise eest koos teabega ruuteri ja võrguühenduse parameetrite kohta.

Veebruaris parandas slaacd vea, mis põhjustas selle krahhi, kui RNSS-i (Recursive DNS Servers) loendis oli määratud 7 serverit. See tähelepanek äratas sõltumatute teadlaste tähelepanu, kes püüdsid slaacd-koodi uurida muude vigade suhtes, mis tekivad RA-teadete väljade sõelumisel. Analüüs näitas, et koodis on veel üks probleem, mis avaldub DNSSL (DNS Search List) välja töötlemisel, mis sisaldab domeeninimede loendeid ja DNS-i hostimalle.

Iga nimi DNSSL-i loendis on kodeeritud, kasutades nulleraldajat ja vahepealseid ühebaidiseid silte, mis määravad järgnevate andmete suuruse. Haavatavuse põhjustab asjaolu, et loendi parsimiskoodis kopeeritakse suurusega väli märgiga täisarvu tüüpi muutujaks (“len = data[pos]”). Seega, kui väärtus on määratud kõige olulisema bitikomplektiga väljale, tajutakse seda väärtust tingimusoperaatoris negatiivse arvuna ja kontrollitakse maksimaalset lubatud suurust (“if (len > 63 || len + pos). + 1 > datalen) {“) ei tööta, mis viib memcpy kutseni parameetriga, mille kopeeritud andmete suurus ületab puhvri suurust.

OpenBSD IPv6 virna kaughaavatavus
OpenBSD IPv6 virna kaughaavatavus


Allikas: opennet.ru

Lisa kommentaar