OpenBSD жүйесінде IPv6 мекенжайының автоконфигурациясына (IPv6 азаматтығы жоқ мекенжайды автоматты конфигурациялау, RFC 4862) жауап беретін slaacd фондық процесінде осалдық табылды, бұл арнайы жасалған IPv6 маршрутизаторының жарнамасын (RA) алу кезінде буфердің толып кетуіне әкеледі.
Бастапқыда IPv6 мекенжайын автоконфигурациялау функционалдығы ядро деңгейінде жүзеге асырылды, бірақ OpenBSD 6.2-ден бастап, ол бөлек, артықшылықсыз процесс, slaacd көшірілді. Бұл процесс RS (маршрутизаторды сұрау) хабарларын жіберуге және маршрутизатор ақпараты мен желі қосылымы параметрлерін қамтитын RA (маршрутизатор жарнамасы) жауаптарын талдауға жауапты.
Ақпан айында slaacd бағдарламасында 7 мәні көрсетілген жағдайда істен шығуға әкелетін қате түзетілді. серверлер RDNSS (Рекурсивті DNS серверлері) тізімінде. Бұл қателік тәуелсіз зерттеушілердің назарын аударды, олар RA хабарламаларындағы өрістерді талдау кезінде пайда болатын басқа қателерді анықтау үшін slaacd кодын тексеруге тырысты. Талдау нәтижесінде кодта DNSSL (DNS іздеу тізімі) өрісін өңдеу кезінде пайда болатын тағы бір мәселе бар екені анықталды, оған тізімдер кіреді домен атаулары және DNS үшін хост үлгілері.
DNSSL тізіміндегі әрбір атау нөлге негізделген бөлгішті және келесі деректердің өлшемін анықтайтын аралық бір байтты маркерлерді пайдаланып кодталған. Тізімді талдау коды өлшем өрісін қол қойылған бүтін айнымалы мәнге («len = data[pos]») көшіретіндіктен осалдық орын алады. Демек, егер өрісте жоғары ретті бит жиыны бар мән болса, бұл мән шартты мәлімдемеде теріс сан ретінде түсіндіріледі және ең үлкен рұқсат етілген өлшемді тексеру ("if (len > 63 || len + pos + 1 > datalen) {") сәтсіз аяқталады, нәтижесінде өлшемі буфер өлшемінен асатын параметрі бар memcpy шақыруы болады.


Ақпарат көзі: opennet.ru
