OpenBSD IPv6 стекиндеги алыскы аялуу

OpenBSDде IPv6 дарегин автоконфигурациялоо (IPv6 жарандыгы жок даректи автоконфигурациялоо, RFC 4862) үчүн жооптуу болгон slaacd фондук процессинде, атайын иштелип чыккан IPv6 роутер жарнактарын (RA, Router Advertisement) алууда буфердин толуп кетишине алып келген аялуу жери аныкталган. .

Башында, IPv6 дарегин автоконфигурациялоо функциясы ядро ​​деңгээлинде ишке ашырылган, бирок OpenBSD 6.2ден баштап ал өзүнчө артыкчылыксыз slaacd процессине көчүрүлгөн. Бул процесс RS (Router Solicitation) билдирүүлөрүн жөнөтүү жана роутер жана тармакка туташуу параметрлери тууралуу маалымат менен RA (Router Advertisement) жоопторун талдоо үчүн жооптуу.

Февраль айында slaacd RDNSS (Рекурсивдүү DNS серверлери) тизмесинде 7 сервер көрсөтүлгөн болсо, анын бузулушуна алып келген мүчүлүштүктөрдү оңдоду. Бул көзөмөл көз карандысыз изилдөөчүлөрдүн көңүлүн бурду, алар slaacd кодун RA билдирүүлөрүндөгү талааларды талдоодо пайда болгон башка каталарды текшерүүгө аракет кылышкан. Анализ коддо дагы бир көйгөй бар экенин көрсөттү, ал DNSSL (DNS Search List) талаасын иштетүүдө пайда болот, ал домендик аталыштардын тизмелерин жана DNS үчүн хост шаблондорун камтыйт.

DNSSL тизмесиндеги ар бир аталыш нөлдүк бөлгүч жана кийинки берилиштердин көлөмүн аныктаган бир байттык тегдердин жардамы менен коддолгон. Аялуулугу тизме талдоо кодунда өлчөмү бар талаа кол коюлган бүтүн сан түрүндөгү өзгөрмөгө көчүрүлгөндүгүнө байланыштуу болот («len = data[pos]»). Демек, эгерде маани эң маанилүү бит коюлган талаада көрсөтүлсө, бул маани шарттуу оператордо терс сан жана максималдуу жол берилген өлчөмүн текшерүү катары кабыл алынат (“if (len > 63 || len + pos) + 1 > datalen) {“) иштебейт, бул көчүрүлгөн маалыматтардын өлчөмү буфер өлчөмүнөн ашкан параметр менен memcpyге чалууга алып келет.

OpenBSD IPv6 стекиндеги алыскы аялуу
OpenBSD IPv6 стекиндеги алыскы аялуу


Source: opennet.ru

Комментарий кошуу