Отдалечена уязвимост в IPv6 стека на OpenBSD

Във фоновия процес slaacd, който отговаря за автоматичното конфигуриране на IPv6 адрес (IPv6 Stateless Address Autoconfiguration, RFC 4862) в OpenBSD, е идентифицирана уязвимост, която води до препълване на буфера при получаване на специално проектирана реклама за IPv6 рутер (RA, Router Advertisement) .

Първоначално функцията за автоматично конфигуриране на IPv6 адрес беше внедрена на ниво ядро, но започвайки с OpenBSD 6.2, тя беше преместена в отделен непривилегирован процес slaacd. Този процес е отговорен за изпращането на RS (Router Solicitation) съобщения и анализирането на RA (Router Advertisement) отговорите с информация за параметрите на рутера и мрежовата връзка.

През февруари slaacd поправи грешка, която причиняваше срив, ако 7 сървъра бяха посочени в списъка RDNSS (рекурсивни DNS сървъри). Този пропуск привлече вниманието на независими изследователи, които се опитаха да проучат кода slaacd за други грешки, които възникват при анализиране на полета в RA съобщения. Анализът показа, че има друг проблем в кода, който се проявява при обработка на полето DNSSL (DNS Search List), което включва списъци с имена на домейни и хост шаблони за DNS.

Всяко име в DNSSL списъка е кодирано с помощта на нулев разделител и намесващи се еднобайтови тагове, които определят размера на данните, които следват. Уязвимостта се дължи на факта, че в кода за анализиране на списък поле с размер се копира в променлива с целочислен тип със знак („len = data[pos]“). Съответно, ако е посочена стойност в полето с набор от най-значими битове, тази стойност ще се възприема в условния оператор като отрицателно число и проверката за максимално допустимия размер (“if (len > 63 || len + pos + 1 > datalen) {“) няма да работи, което ще доведе до извикване на memcpy с параметър, чийто размер на копираните данни надвишава размера на буфера.

Отдалечена уязвимост в IPv6 стека на OpenBSD
Отдалечена уязвимост в IPv6 стека на OpenBSD


Източник: opennet.ru

Добавяне на нов коментар