Linux ядросунун деңгээлинде кодду аткарууга мүмкүндүк берген eBPF подсистемасындагы аялуу

eBPF подсистемасында эки жаңы кемчилик аныкталды, алар Linux ядросунун ичиндеги иштеткичтерди JIT менен атайын виртуалдык машинада иштетүүгө мүмкүндүк берет. Эки алсыздык тең сиздин кодуңузду обочолонгон eBPF виртуалдык машинасынан тышкары ядро ​​укуктары менен аткарууга мүмкүндүк берет. Көйгөйлөр жөнүндө маалымат Pwn2Own сынагын өткөргөн Zero Day Initiative командасы тарабынан жарыяланды, анын жүрүшүндө бул жылы Ubuntu Linux'ка үч чабуул жасалган, алар мурда белгисиз алсыз жерлерди колдонушкан (eBPFдеги алсыздыктар бул чабуулдарга байланыштуубы же жокпу билдирилген эмес). .

  • CVE-2021-3490 - Аялуу eBPF ALU32де биттик ЖАНА, ЖЕ, жана XOR операцияларын аткарууда 32 бит чегинен тышкары текшерүүнүн жоктугунан келип чыгат. Чабуулчу бул катадан пайдаланып, бөлүнгөн буфердин чегинен тышкары маалыматтарды окуп жана жаза алат. XOR операцияларындагы көйгөй ядронун 5.7-rc1 версиясынан баштап, ЖАНА жана ЖЕ - 5.10-rc1ден баштап пайда болот.
  • CVE-2021-3489 - Аялуу шакек буферин ишке ашыруудагы катадан улам келип чыккан жана bpf_ringbuf_reserve функциясы бөлүнгөн эстутум аймагынын өлчөмү чыныгы өлчөмдөн азыраак болушу мүмкүндүгүн текшербегендигине байланыштуу. рингбуфтун. Көйгөй 5.8-rc1 чыккандан бери пайда болот.

Бөлүштүрүүдөгү кемчиликтерди оңдоонун абалын төмөнкү баракчалардан байкоого болот: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Оңдоолор тактар ​​катары да жеткиликтүү (CVE-2021-3489, CVE-2021-3490). Маселени колдонуу мүмкүнбү же жокпу, eBPF тутумунун чалуусу колдонуучу үчүн жеткиликтүү же жеткиликтүү эместигинен көз каранды. Мисалы, RHELдеги демейки конфигурацияда, алсыздыкты пайдалануу колдонуучудан CAP_SYS_ADMIN укуктарына ээ болушун талап кылат.

Өзүнчө Linux ядросундагы дагы бир кемчиликти белгилей алабыз - CVE-2021-32606, бул жергиликтүү колдонуучуга өз артыкчылыктарын түпкү деңгээлге көтөрүүгө мүмкүндүк берет. Көйгөй Linux 5.11 ядросунан бери айкын болуп калды жана isotp_setsockopt() функциясында туура кулпуларды орнотуунун жоктугунан улам розеткага туташтыруу параметрлерин өзгөртүүгө мүмкүндүк берген CAN ISOTP протоколун ишке ашыруудагы жарыш шартынан улам келип чыкты. CAN_ISOTP_SF_BROADCAST желегин иштетүүдө.

ISOTP розеткасы жабылгандан кийин, алуучу розеткага байланыш күчүндө кала берет, алар менен байланышкан эстутум бошотулгандан кийин розетка менен байланышкан структураларды колдонууну уланта алат (isotp_sock структурасына чалуудан улам-акысыз колдонуу) isotp_rcv() чакырылганда мурунтан бошотулган). Берилиштерди манипуляциялоо аркылуу sk_error_report() функциясына көрсөткүчтү жокко чыгарып, өзүңүздүн кодуңузду ядро ​​деңгээлинде аткара аласыз.

Source: opennet.ru

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