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

eBPF ենթահամակարգում հայտնաբերվել է խոցելիություն (CVE-2021-4204), որը թույլ է տալիս գործարկել մշակողներ Linux միջուկի ներսում JIT-ով հատուկ վիրտուալ մեքենայում՝ թույլ տալով տեղական ոչ արտոնյալ օգտատիրոջը հասնել արտոնությունների մեծացման և գործարկել իրենց կոդը Linux միջուկի մակարդակը. Խնդիրն առաջացել է Linux միջուկից 5.8-ից և մնում է չշտկված (ներառյալ թողարկումը 5.16): Բաշխումներում խնդիրը շտկելու համար ստեղծվող թարմացումների կարգավիճակը կարելի է հետևել այս էջերում՝ Debian, RHEL, SUSE, Fedora, Ubuntu, Arch: Հայտարարվել է, որ ստեղծվել է աշխատանքային exploit, որը նախատեսվում է հրապարակել հունվարի 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: Որպես խոցելիությունը արգելափակելու միջոց, դուք կարող եք կանխել BPF ծրագրերի կատարումը ոչ արտոնյալ օգտվողների կողմից «sysctl -w kernel.unprivileged_bpf_disabled=1» հրամանով:

Source: opennet.ru

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