Linux միջուկի eBPF ենթահամակարգի խոցելիությունները

eBPF ենթահամակարգում հայտնաբերվել է խոցելիություն (CVE-2021-29154), որը թույլ է տալիս գործարկել կարգավորիչներ՝ հետագծելու, ենթահամակարգերի աշխատանքը վերլուծելու և թրաֆիկը կառավարելու համար, որոնք կատարվում են Linux միջուկի ներսում JIT-ով հատուկ վիրտուալ մեքենայի մեջ, որը թույլ է տալիս տեղական օգտվողին հասնելու իրենց կոդի կատարմանը միջուկի մակարդակում: Խնդիրը հայտնվում է մինչև 5.11.12-ի թողարկումը (ներառյալ) և դեռ չի շտկվել բաշխումներում (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch): Ֆիքսումը հասանելի է որպես կարկատել:

Ըստ հետազոտողների, ովքեր հայտնաբերել են խոցելիությունը, նրանք կարողացել են մշակել շահագործման աշխատանքային նախատիպ 32 և 64 բիթ x86 համակարգերի համար, որոնք կարող են օգտագործվել ոչ արտոնյալ օգտատերերի կողմից: Այնուամենայնիվ, Red Hat-ը նշում է, որ խնդրի լրջությունը կախված է նրանից, թե արդյոք eBPF համակարգի զանգը հասանելի է օգտատիրոջը: Օրինակ, RHEL-ի և լռելյայն կազմաձևման այլ Linux բաշխումների վրա խոցելիությունը կարող է օգտագործվել, եթե BPF JIT-ը միացված է, և օգտվողն ունի CAP_SYS_ADMIN իրավունքներ: Որպես լուծում, խորհուրդ է տրվում անջատել BPF JIT-ը՝ օգտագործելով հրամանը՝ echo 0 > /proc/sys/net/core/bpf_jit_enable:

Խնդիրն առաջացել է JIT կոմպիլյատորի մեքենայական կոդի ստեղծման գործընթացում ճյուղային հրահանգների օֆսեթը հաշվարկելիս սխալի պատճառով: Մասնավորապես, ճյուղային հրահանգներ ստեղծելիս հաշվի չի առնվում, որ օֆսեթը կարող է փոխվել օպտիմալացման փուլն անցնելուց հետո։ Այս թերությունը կարող է օգտագործվել մեքենայի անոմալ կոդ ստեղծելու և այն միջուկի մակարդակում գործարկելու համար:

Հատկանշական է, որ սա վերջին շրջանում eBPF ենթահամակարգի միակ խոցելիությունը չէ։ Մարտի վերջին միջուկում հայտնաբերվել են ևս երկու խոցելիություններ (CVE-2020-27170, CVE-2020-27171), ինչը հնարավորություն է տալիս օգտագործել eBPF-ը՝ շրջանցելու Spectre դասի խոցելիության դեմ պաշտպանությունը, ինչը թույլ է տալիս որոշել միջուկի հիշողության պարունակությունը։ որոշակի գործառնությունների սպեկուլյատիվ կատարման համար պայմանների ստեղծման արդյունքում։ Spectre-ի հարձակումը պահանջում է հրամանների որոշակի հաջորդականության առկայությունը արտոնյալ կոդում, որը հանգեցնում է հրահանգների սպեկուլյատիվ կատարմանը: eBPF-ում հայտնաբերվել են նման հրահանգներ ստեղծելու մի քանի եղանակներ՝ կատարման համար փոխանցված BPF ծրագրերով մանիպուլյացիաների միջոցով:

CVE-2020-27170 խոցելիությունը պայմանավորված է BPF ստուգիչում ցուցիչի մանիպուլյացիայով, որն առաջացնում է սպեկուլյատիվ գործողություններ՝ բուֆերային սահմաններից դուրս տարածք մուտք գործելու համար: CVE-2020-27171 խոցելիությունը պայմանավորված է ցուցիչների հետ աշխատելիս ներհոսքի ամբողջ սխալով, ինչը հանգեցնում է բուֆերից դուրս տվյալների սպեկուլյատիվ մուտքի: Այս խնդիրներն արդեն շտկվել են միջուկի թողարկումներում 5.11.8, 5.10.25, 5.4.107, 4.19.182 և 4.14.227, ինչպես նաև ներառվել են միջուկի թարմացումներում Linux բաշխումների մեծ մասի համար: Հետազոտողները պատրաստել են շահագործման նախատիպ, որը թույլ է տալիս ոչ արտոնյալ օգտագործողին տվյալներ կորզել միջուկի հիշողությունից:

Source: opennet.ru

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