Linux ядросы деңгейінде кодты орындауға мүмкіндік беретін eBPF ішкі жүйесіндегі осалдық

eBPF ішкі жүйесінде осалдық (CVE-2021-4204) анықталды, ол Linux ядросының ішіндегі өңдеушілерді JIT бар арнайы виртуалды машинада іске қосуға мүмкіндік береді, бұл жергілікті артықшылықсыз пайдаланушыға артықшылықты арттыруға және өз кодын орындауға мүмкіндік береді. Linux ядросының деңгейі. Мәселе Linux ядросының 5.8 нұсқасынан бері пайда болды және түзетілмеген (соның ішінде 5.16 шығарылымы). Таратулардағы мәселені шешу үшін жасалып жатқан жаңартулардың күйін мына беттерде бақылауға болады: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. 18 қаңтарда жариялануы жоспарланған жұмыс эксплойт жасалғаны туралы хабарланды (пайдаланушылар мен әзірлеушілерге осалдықты түзетуге бір апта уақыт берілді).

Осалдық орындауға жіберілген eBPF бағдарламаларын дұрыс тексеруден туындайды. eBPF ішкі жүйесі көмекші функцияларды қамтамасыз етеді, олардың дұрыс пайдаланылуы арнайы тексеруші арқылы тексеріледі. Кейбір функциялар аргумент ретінде PTR_TO_MEM мәнін беруді талап етеді және мүмкін болатын буфер толып кетуін болдырмау үшін тексеруші аргументпен байланысты жад өлшемін білуі керек. bpf_ringbuf_submit және bpf_ringbuf_discard функциялары үшін арнайы жасалған eBPF кодын орындау кезінде буфер шекарасынан тыс жад аумақтарын қайта жазу үшін пайдаланылуы мүмкін тасымалданатын жад өлшемі туралы деректер тексерушіге хабарланбады.

Шабуыл жасау үшін пайдаланушы өзінің BPF бағдарламасын жүктей алуы керек және көптеген соңғы Linux дистрибутивтері бұл мүмкіндікті әдепкі бойынша блоктайды (соның ішінде 5.16 шығарылымынан бастап ядроның өзінде әдепкі бойынша eBPF-ге артықшылықсыз кіруге тыйым салынған). Мысалы, осалдықты Ubuntu 20.04 LTS әдепкі конфигурациясында пайдалануға болады, бірақ Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 және Fedora 33 орталарында ол әкімші орнатқан жағдайда ғана пайда болады. kernel.unprivileged_bpf_disabled параметрін 0-ге теңестіріңіз. Осалдықты блоктаудың уақытша шешімі ретінде «sysctl -w kernel.unprivileged_bpf_disabled=1» пәрмені арқылы артықшылығы жоқ пайдаланушылардың BPF бағдарламаларын орындауын болдырмауға болады.

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

пікір қалдыру