Spectre чабуулдарынан коргоону кыйгап өтүүгө мүмкүндүк берген eBPF кичи тутумундагы алсыздыктар

Linux өзөгүндө (CVE-2021-33624) алсыздык аныкталган, ал eBPF кичи тутумун Spectre классынын алсыздыктарынан коргоону айланып өтүү үчүн колдонууга мүмкүндүк берет, бул эстутумдун мазмунун аныктоо үчүн шарттарды түзүүнүн натыйжасында аныктоого мүмкүндүк берет. кээ бир операцияларды алып-сатарлык менен аткаруу. Spectre чабуулу артыкчылыктуу коддо буйруктардын белгилүү бир ырааттуулугунун болушун талап кылат, ал инструкциялардын спекулятивдүү аткарылышына алып келет. Аткаруу үчүн берилген BPF программаларын манипуляциялоо менен, eBPFде окшош инструкцияларды түзүүгө жана ядролук эстутумдун мазмунун жана физикалык эстутумдун ыктыярдуу аймактарын каптал каналдар аркылуу чыгарууга болот.

Алсыздык BPF программаларында каталарды жана кабыл алынгыс иш-аракеттерди аныктоо үчүн колдонулган текшерүүчүдөгү кемчиликтерден улам келип чыгат. Текшерүүчү коддун аткарылышынын мүмкүн болгон жолдорун санайт, бирок нускамалар топтомунун архитектурасынын семантикасынын көз карашы боюнча кабыл алынгыс тармакталган варианттарды өткөрүп жиберет. BPF программасын аткарууда верификациялоочу тарабынан эске алынбаган мындай бутактандыруу варианттары процессор тарабынан туура эмес болжолдонуп, спекулятивдүү режимде аткарылышы мүмкүн. Мисалы, "жүктөө" операциясын талдоодо, текшерүүчү нускама мааниси ар дайым көрсөтүлгөн чектерде болгон дареги бар регистрди колдонот деп күтөт, бирок чабуулчу процессор спекулятивдүү түрдө операцияны аткарууга аракет кыла турган шарттарды түзүшү мүмкүн. текшерүү шарттарына жооп бербеген дарек.

Көйгөй 4.15 ядросу чыккандан бери пайда болуп, тактар ​​(1, 2, 3, 4) түрүндө чечилген. Алсыздык бөлүштүрүүдө (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch) такталбаган бойдон калууда.

Кошумчалай кетсек, Spectre алсыздыктарынан коргоо үчүн инструменттердин эффективдүү таасири жөнүндө эскертмени белгилей аласыз. Эскертүү бир жолу Mozillaда Firefoxто кайталанууга кыйын каталарды оңдоо үчүн түзүлгөн rr (Жазуу жана кайра ойнотуу) мүчүлүштүктөрдү оңдоочу оптималдаштыруунун натыйжаларын жалпылайт. Каталогдордун бар экендигин текшерүү үчүн колдонулган тутум чалууларын кэштөө сыноо долбоору үчүн "rr булактарынын" иштешин 3 мүнөт 19 секунддан 36 секундага чейин кыскартты.

Оптималдаштыруу автору Spectre коргоону өчүргөндөн кийин аткаруунун кандай өзгөрөрүн текшерүүнү чечти. Системаны “мигациялар=өчүрүү” параметри менен жүктөгөндөн кийин “rr булактарын” оптималдаштыруусуз аткаруу убактысы 2 мүнөт 5 секундду (1.6 эсе тез), ал эми оптималдаштырууда 33 секундду (9% тезирээк) түздү. Кызыгы, Spectre коргоону өчүрүү ядро ​​​​деңгээлинде кодду аткаруу убактысын 1.4 эсеге (2м9 секунддан 1м32 секундага чейин) кыскартпастан, ошондой эле колдонуучу мейкиндигинде аткаруу убактысын эки эсеге кыскартты (1м9 секунддан 0м33 секундага чейин), кыязы, CPU кэшинин жана TLBнин эффективдүүлүгүнүн төмөндөшүнө байланыштуу. Spectre коргоо иштетилгенде баштапкы абалга келтирилет.

Source: opennet.ru

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