FP күйін қалпына келтіру - Lazy FP state restore

ФПУ-дің жалқау жағдайы (CVE -2018-3665 ), сондай-ақ деп аталады Lazy FP мемлекеттік қалпына келтіру[1] немесе LazyFP,[2][3] Бұл қауіпсіздіктің осалдығы әсер етеді Intel Core CPU.[1][4] Осалдығы кемшіліктердің жиынтығынан туындайды алыпсатарлық орындау зардап шеккен орталық процессорлардағы технология [1] және белгілі бір операциялық жүйелер қалай жұмыс істейді контекстті ауыстыру үстінде өзгермелі нүкте бірлігі (FPU).[2] Осы осалды пайдаланып, жергілікті процесс басқа процеске жататын FPU регистрлерінің мазмұнын аша алады. Бұл осалдық байланысты Спектр және Еру 2018 жылдың қаңтарында көпшілікке жария етілген осалдықтар.

Бұл туралы жарияланды Intel қызметкерлерімен анықталғаннан кейін 2018 жылғы 13 маусымда Amazon, Cyberus Technology және SYSGO.[1][a]

Сонымен қатар пайдаланылады өзгермелі нүктелік арифметика, FPU регистрлері басқа мақсаттарда, оның ішінде криптографиялық мәліметтерді сақтау кезінде қолданылады AES нұсқаулар жинағы, көптеген Intel процессорларында бар.[3] Бұл осалдықтың мүмкін болатындығын білдіреді негізгі материал ымыраға келу.[3]

Механизм

Өзгермелі нүкте және SIMD регистрлер үлкен, оларды жүйеде барлық тапсырмалар (немесе ағындар) қолданбайды. Контексті ауыстыруды тезірек ету үшін, ең көп таралған микропроцессорлар жалқау күйге ауысуды қолдайды. Контексті ауыстыру кезінде толық күйді сақтаудан гөрі, амалдық жүйе FPU-ны ауыстырылған тапсырмаға қажет болмайды деген үмітпен жай ғана «жоқ» деп белгілей алады. Егер амалдық жүйе дұрыс болжаған болса, уақыт үнемделеді. Егер болжам қате болса, бірінші FPU немесе SIMD нұсқауы амалдық жүйеге тұзақ әкеледі, содан кейін ол күйді алдыңғы тапсырмаға сақтап, ағымдағы тапсырма үшін дұрыс күйді жүктей алады.

Жылы жұмыс істемейтін процессорлар, «FPU жоқ» күйі бірден анықталмайды. (Шындығында, бұл дерлік мүмкін емес дереу анықтаңыз, себебі бір уақытта орындалатын бірнеше ақаулық тудыратын нұсқаулар болуы мүмкін және процессор оны қабылдауы керек бірінші тәртіптік орындалу елесін сақтау үшін пайда болған ақаулық. Бұл туралы ақпарат бірінші кезекте қол жетімді емес кезеңге дейін қол жетімді емес.) Процессор нұсқаулықты алыпсатарлықпен орындайды. алдыңғы тапсырманың регистр мазмұнын пайдаланужәне кейбір нұсқаулықтарды орындап, FPU қол жетімді емес күйін кейінірек анықтайды. Барлық архитектуралық күй ақаулық нұсқаулығының басталуына қайтарылғанымен, FPU күйінің бір бөлігін жадтағы жүктемедегі адрес ретінде қолдануға болады, бұл процессордың кэшіне жүктемені тудырады. Содан кейін қанау барлық Specter-отбасылық осалдықтарымен бірдей схемаға сәйкес келеді: кэш күйінде емес архитектуралық күй (кэш тек жылдамдыққа әсер етеді, дұрыстыққа емес), кэш жүктемесі емес қайтарылған және мекен-жай, оның ішінде алдыңғы тапсырманың регистр күйінің бөлігі, кейінірек әр түрлі жад адрестеріне кіруге кеткен уақытты өлшеу арқылы анықталуы мүмкін.

Бұл қатені кез-келген амалдық жүйенің қақпандарын пайдаланбай пайдалануға болады. FPU-ға қол жеткізуді мәжбүрлі көлеңкеде орналастыру арқылы саланы қате болжау (мысалы ретполин ) процессор кодты спекулятивті түрде орындайды, бірақ қате болжанған тармаққа қайта оралады және ешқашан амалдық жүйенің қақпағын орындайды. Бұл шабуылдың тез қайталануына, бүкіл FPU және SIMD регистр күйін тез оқып шығуға мүмкіндік береді.

Жеңілдету

Амалдық жүйеде осалдығын азайтуға болады және гипервизор процестердің контексттерін ауыстыру кезінде әрқашан FPU күйін қалпына келтіру арқылы деңгейлер.[6] Мұндай түзетумен, жоқ микробағдарлама жаңарту қажет. Кейбір амалдық жүйелер әдепкі бойынша FPU регистрлерін жалқаулықпен қалпына келтіре алмады, егер бұл негізгі аппараттық құрал болған болса да, сол амалдық жүйелерді әсер етілген аппараттық платформаларда қорғады.[6] 3.7 немесе одан жоғары ядроны қолданатын Linux операциялық жүйесінде ядроны FPU регистрлерін асыға қалпына келтіруге мәжбүр етуге болады: eagerfpu = қосулы ядро параметрі.[3] Сонымен қатар, көп жүйелік бағдарламалық жасақтама сатушылар мен жобалар, оның ішінде Linux таратылымдары,[7] OpenBSD,[8] және Ксен[4] осалдығын жою үшін патчтарды шығарды.

Ескертулер

  1. ^ The OpenBSD жоба осалдықты өз бетінше анықтады деп мәлімдейді.[5]

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ а б c г. «Жалқау ФП күйін қалпына келтіру». Intel. 2018-06-13. Алынған 2018-06-18.
  2. ^ а б Стеклина, Джулиан; Пресчер, Томас (2018-06-19). «LazyFP: микроархитектуралық бүйірлік арналарды қолдана отырып, FPU регистрінің күйін жіберу». arXiv:1806.07480 [cs.OS ].
  3. ^ а б c г. Пресчер, Томас; Стеклина, Джулиан; Галович, Яцек. «Intel LazyFP осалдығы: FPU-дың жалған күйін ауыстыру». Киберус технологиясы. Алынған 2018-06-18.
  4. ^ а б «Xen Security Advisory CVE-2018-3665 / XSA-267, 3 нұсқа». 2018-06-13. Алынған 2018-06-18.
  5. ^ де Раадт, Тео (2018-06-14). «Брайан Кантрилдің қабынуы». openbsd-tech (Тарату тізімі). Алынған 2018-06-18 - арқылы marc.info.
  6. ^ а б «Lazy FPU сақтау / қалпына келтіру (CVE-2018-3665)». RedHat. 2018-06-14. Алынған 2018-06-18.
  7. ^ «CVE-2018-3665». Дебиан. Алынған 2018-06-17.
  8. ^ «OpenBSD 6.3 қателіктер». OpenBSD. Алынған 2018-06-18.

Сыртқы сілтемелер