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 дистрибьюторлору бул мүмкүнчүлүктү демейки боюнча бөгөттөйт (анын ичинде eBPFге артыкчылыксыз кирүү азыр өзөктүн өзүндө демейки боюнча 5.16 релизинен баштап тыюу салынган). Мисалы, алсыздык 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 программаларын аткарууга бөгөт кое аласыз.

Source: opennet.ru

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