Խոցելիություններ eBPF ենթահամակարգում, որոնք թույլ են տալիս կոդի կատարումը Linux միջուկի մակարդակում

Երկու նոր խոցելիություն է հայտնաբերվել eBPF ենթահամակարգում, որը թույլ է տալիս գործարկել մշակողներ Linux միջուկի ներսում JIT-ով հատուկ վիրտուալ մեքենայի մեջ: Երկու խոցելիությունները հնարավորություն են տալիս ձեր կոդը գործարկել միջուկի իրավունքներով՝ մեկուսացված eBPF վիրտուալ մեքենայից դուրս: Խնդիրների մասին տեղեկատվությունը հրապարակվել է Zero Day Initiative թիմի կողմից, որը վարում է Pwn2Own մրցույթը, որի ընթացքում այս տարի ցուցադրվել են երեք հարձակում Ubuntu Linux-ի վրա, որոնք օգտագործվել են նախկինում անհայտ խոցելիություններ (արդյոք eBPF-ի խոցելիությունները կապված են այդ հարձակումների հետ, չի հաղորդվում): .

  • CVE-2021-3490 - Խոցելիությունը պայմանավորված է 32-բիթանոց սահմաններից դուրս ստուգման բացակայությունից, երբ eBPF ALU32-ում բիթային AND, OR և XOR գործողություններ կատարելը: Հարձակվողը կարող է օգտվել այս սխալից՝ կարդալու և գրելու տվյալները հատկացված բուֆերի սահմաններից դուրս: XOR օպերացիաների հետ կապված խնդիրը հայտնվում է միջուկի 5.7-rc1 տարբերակից, իսկ AND և OR՝ սկսած 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-ից և առաջացել է CAN ISOTP արձանագրության ներդրման մրցավազքի պատճառով, որը հնարավորություն է տալիս փոխել վարդակից կապող պարամետրերը isotp_setsockopt() ֆունկցիայի մեջ պատշաճ կողպեքները չկարգավորելու պատճառով: CAN_ISOTP_SF_BROADCAST դրոշը մշակելիս:

ISOTP վարդակից փակվելուց հետո ստացողի վարդակից կապելը մնում է ուժի մեջ, որը կարող է շարունակել օգտագործել վարդակի հետ կապված կառուցվածքները դրանց հետ կապված հիշողությունը ազատվելուց հետո (օգտագործել ազատ՝ isotp_sock կառուցվածքի կանչի պատճառով: որն արդեն ազատվել է, երբ կանչվում է isotp_rcv()): Տվյալների մանիպուլյացիայի միջոցով դուք կարող եք անտեսել ցուցիչը sk_error_report() ֆունկցիայի վրա և գործարկել ձեր կոդը միջուկի մակարդակում:

Source: opennet.ru

Добавить комментарий