FreeBSD жүйесінде root қатынасын беру кезіндегі execve жүйелік шақыруындағы осалдық

FreeBSD жүйесінде артықшылығы жоқ пайдаланушыға ядро ​​кодын орындауға және жүйеге root қатынасын алуға мүмкіндік беретін осалдық (CVE-2026-7270) анықталды. Осалдық 2013 жылдан бері шығарылған барлық FreeBSD нұсқаларына әсер етеді. Эксплойт жалпыға қолжетімді болды және FreeBSD 11.0-ден 14.4-ке дейінгі нұсқаларында жұмыс істейтін жүйелерде сынақтан өтті. Осалдық FreeBSD 15.0-RELEASE-p7, 14.4-RELEASE-p3, 14.3-RELEASE-p12 және 13.5-RELEASE-p13 нұсқаларында түзетілді. Ескі нұсқалар үшін патч қолжетімді.

Мәселе execve жүйелік шақыруындағы буфердің толып кетуінен туындайды. Бұл интерпретаторға жолды анықтау үшін сценарийлердің бірінші жолында көрсетілген префиксті өңдеген кезде орын алады (мысалы, "#!/bin/sh"). Толып кету memmove функциясын шақыру кезінде буферге көшірілген аргументтердің өлшемін есептеу үшін дұрыс емес құрылған математикалық өрнекке байланысты орын алады. "args->endp"-ден "args->begin_argv" және "consume" мәндерін азайтудың орнына, "args->endp"-ден тек "args->begin_argv" мәні алынып тасталды, ал нәтижеге "consume" айнымалысы алынып тасталмады, яғни нәтижесінде "consume"-нің екі мәнімен көбірек деректер көшірілді. memmove(args->begin_argv + extend, args->begin_argv + consume, - args->endp - args->begin_argv + consume); + args->endp — (args->begin_argv + тұтыну));

Асып кету басқа процестен көршілес жадта бөлінген "exec_map" құрылымының элементтерін қайта жазуға мүмкіндік береді. Эксплойт асып кетуді жүйеде мезгіл-мезгіл іске қосылатын артықшылықты процестердің "exec_map" мазмұнын қайта жазу үшін пайдаланады. Таңдалған процесс - sshd, ол желілік қосылым орнатылған сайын "/usr/libexec/sshd-session" процесін түбірлік артықшылықтармен ажыратады және орындайды.

Эксплойт бұл процесс үшін "LD_PRELOAD=/tmp/evil.so" орта айнымалысын алмастырады, бұл оның кітапханасының sshd-session контекстінде жүктелуіне әкеледі. Инъекцияланған кітапхана файл жүйесінде suid root жалаушасымен /tmp/rootsh деп аталатын орындалатын файл жасайды. Эксплойттың сәттілік деңгейі 0.6% деп бағаланады, бірақ циклдік қайталаудың арқасында 4 ядролы процессоры бар жүйеде сәтті эксплуатация шамамен 6 секундта жүзеге асырылады.

 FreeBSD жүйесінде root қатынасын беру кезіндегі execve жүйелік шақыруындағы осалдық

Сонымен қатар, FreeBSD-де тағы бірнеше осалдық түзетілді:

  • CVE-2026-35547 және CVE-2026-39457 - libnv кітапханасындағы буфердің толып кетуі, ол ядрода және базалық жүйелік қолданбаларда кілт/мән тізімдерін өңдеу және процестер арасындағы байланысты өңдеу үшін қолданылады. Бірінші мәселе арнайы жасалған IPC хабарлама тақырыптарын өңдеу кезінде хабарлама өлшемін дұрыс есептемеуден туындайды. Екінші мәселе сокет дескрипторының өлшемінің select() функциясында қолданылатын буфер өлшеміне сәйкес келетініне көз жеткізу үшін тексерулердің болмауына байланысты сокет байланысы кезінде стектің толып кетуіне әкеледі. Бұл осалдықтарды артықшылықтарды арттыру үшін пайдалануға болады.
  • CVE-2026-42512 - dhclient-script-ке орта айнымалыларын беру үшін пайдаланылатын көрсеткіш массивінің өлшемін дұрыс есептемеу салдарынан dhclient-те қашықтан пайдалануға болатын буфердің толып кетуі. Арнайы жасалған DHCP пакетін жіберу арқылы қашықтан кодты орындау үшін эксплойт жасауға болады.
  • CVE-2026-7164 – Арнайы жасалған SCTP пакеттерін өңдеу кезінде pf пакет сүзгісіндегі стектің толып кету осалдығы пайда болады. Мәселе SCTP параметрлерін шектеусіз рекурсивті талдаудан туындайды.
  • CVE-2026-42511 – Сыртқы DHCP серверінен алынған BOOTP өрістеріндегі қос жақшалардың дұрыс ашылмауына байланысты dhclient.conf файлына кездейсоқ директиваларды енгізуге болады. dhclient процесі кейіннен осы файлды талдаған кезде, шабуылдаушының көрсеткен өрісі dhclient-script файлына беріледі, оны шабуылдаушы басқаратын DHCP серверіне кірген кезде dhclient іске қосылған жүйелерде root құқықтары бар кездейсоқ командаларды орындау үшін пайдалануға болады.
  • CVE-2026-6386 — pmap_pkru_update_range() ядро ​​функциясында үлкен жад беттерін өңдеу жеткіліксіз. Артықшылығы жоқ пайдаланушы pmap_pkru_update_range() функциясының пайдаланушы кеңістігінің жадын жад беті кестесіндегі бет ретінде қарастыруына себеп болуы мүмкін, осылайша рұқсат етілмеген жад аймағын қайта жазады.
  • CVE-2026-5398 - TIOCNOTTY өңдегішіндегі бұрын босатылған жад аймағына сілтеме артықшылықсыз процестің түбірлік құқықтарды алуына мүмкіндік береді.

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