Aleksey Salow (w00dy) wrote,
Aleksey Salow
w00dy

Category:

Meltdown

Почитал про этот ваш Meltdown. В двух словах - мы все умрём :D

В общем баг простой как валянок. Когда делаем загрузку из памяти, в нутри декодер разбивает её на, условного говора, два мю-опса: fetch и check. Первый собсна загружает из памяти в кеш что нужно, второй делает security check. По хорошему сначала всё нужно проверить, а потом уж грузить. Если проверка не прошла, то и все последующие инструкции не должны быть выполнены. Но в суровой реальности всё намного сложнее и на сцену выходит Out-of-Order Execution.

Берём следующий код:
1 ; rcx = kernel address
2 ; rbx = probe array
3 retry:
4 mov al, byte [rcx]
5 shl rax, 0xc
6 jz retry
7 mov rbx, qword [rbx + rax]


По хорошему он упадёт ещё на 4-й строчке, ибо нам читать из защищённого адресного пространства нельзя. Но есть несколько возможностей таки засунуть его в процессор, заставить спекулятивно выполнить, при этом нужный кусок из нашего тестового массива будет загружен в кеш что и позволит косвенным методом определить значение байта по нужному адресу памяти (банальная timing attack). Для новых процессоров это использовать TSX, для старых - засрать мозги предсказанию переходов.

Что доступно при такой атаке - на винде только виртуальное адресное пространство текущего процесса (user space + замапленный в него kernel space, что тоже не мало). На линупсе - вся физическая память (там сидят говноеды, но вы это и сами знаете).

Кто уязвим - интел точно. ARM и AMD потенциально, товарищи с ними не игрались, код для интела на них не работает, но всё указывает что потенциально возможно ибо работает у всех одинаково.

Как лечить - меньше мапить в адресное пространство кишков и не мапить физическую память (как это делают линупсоиды).

Что делать - поставить патчи когда выйдут. Ну и не стоит паниковать. Баг страшный, баг архитектурный, на линупсах, особенно в PV контейнерах, вообще полнейший анус. Но блин, это ж не в первый раз. Плюс описание бага в открытом доступе доступно уже пол года, и если оно нигде не всплыло, значит ценность его в целом так себе.
Subscribe

  • Ремонт: часть 3, электрификация всей страны

    Советы по электрической части. Без философских рассуждений, строго по делу. Выбирая вот это всё, я руководствовался двумя простыми правилами: не…

  • Ремонт: часть 2, генплан

    В основе ремонта должен быть план. Что где стоит, куда подключено, куда сливает, и ответы на прочие насущные вопросы. Так уж получилось, что…

  • Ремонт: часть 1, хоп, мастерок

    Ремонт кто-то должен делать. И тут возникает вопрос: где ж взять этих мастеров, да ещё желательно чтобы нормальные были. Особенно остро эта проблема…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 19 comments

  • Ремонт: часть 3, электрификация всей страны

    Советы по электрической части. Без философских рассуждений, строго по делу. Выбирая вот это всё, я руководствовался двумя простыми правилами: не…

  • Ремонт: часть 2, генплан

    В основе ремонта должен быть план. Что где стоит, куда подключено, куда сливает, и ответы на прочие насущные вопросы. Так уж получилось, что…

  • Ремонт: часть 1, хоп, мастерок

    Ремонт кто-то должен делать. И тут возникает вопрос: где ж взять этих мастеров, да ещё желательно чтобы нормальные были. Особенно остро эта проблема…