Udaljena ranjivost u OpenBSD IPv6 skupu

U pozadinskom procesu slaacd, koji je odgovoran za autokonfiguraciju IPv6 adrese (IPv6 Stateless Address Autoconfiguration, RFC 4862) u OpenBSD-u, identificirana je ranjivost koja dovodi do prekoračenja međuspremnika prilikom primanja posebno dizajnirane reklame IPv6 usmjerivača (RA, Router Advertisement) .

U početku je funkcija automatske konfiguracije IPv6 adrese implementirana na razini kernela, ali počevši od OpenBSD 6.2 premještena je u zaseban neprivilegirani slaacd proces. Ovaj proces je odgovoran za slanje RS (Router Solicitation) poruka i analiziranje RA (Router Advertisement) odgovora s informacijama o usmjerivaču i parametrima mrežne veze.

U veljači je slaacd popravio bug koji je uzrokovao rušenje ako je 7 poslužitelja navedeno na popisu RDNSS (Recursive DNS Servers). Ovaj propust privukao je pozornost neovisnih istraživača koji su pokušali ispitati slaacd kod za druge pogreške koje se javljaju prilikom parsiranja polja u RA porukama. Analiza je pokazala da postoji još jedan problem u kodu, koji se očituje prilikom obrade polja DNSSL (DNS Search List), koje uključuje popise naziva domena i predloške hostova za DNS.

Svako ime na DNSSL popisu kodirano je korištenjem nultog razdjelnika i interventnih jednobajtnih oznaka koje određuju veličinu podataka koji slijede. Ranjivost je uzrokovana činjenicom da se u kodu za raščlanjivanje popisa polje s veličinom kopira u varijablu cjelobrojnog tipa s predznakom (“len = data[pos]”). U skladu s tim, ako je vrijednost navedena u polju s postavljenim bitom najveće važnosti, ta će vrijednost biti percipirana u uvjetnom operatoru kao negativan broj i provjera najveće dopuštene veličine (“if (len > 63 || len + poz. + 1 > datalen) {“) neće raditi, što će dovesti do poziva memcpy s parametrom čija veličina kopiranih podataka premašuje veličinu međuspremnika.

Udaljena ranjivost u OpenBSD IPv6 skupu
Udaljena ranjivost u OpenBSD IPv6 skupu


Izvor: opennet.ru

Dodajte komentar