Meltdown и spectre. разбираем фундаментальные уязвимости в процессорах
Содержание:
Программные исправления
Существует надежный программный способ борьбы с атакой, при котором в таблице страниц пользовательских процессов не отображаются страницы памяти ядра ОС (за исключением небольшого количества служебных областей памяти ядра), технология Kernel page-table isolation (KPTI). При этом несколько замедляются вызовы со сменой уровня привилегий (в частности, системные вызовы), так как им приходится дополнительно переключаться на другую таблицу страниц, описывающую всю память ядра ОС.
- Корпорация Microsoft выпустила экстренное обновление Windows 10 для предотвращения атаки 3 января 2018, ожидается выход аналогичных патчей для других поддерживаемых версий ОС Windows в следующий Вторник Патчей.
- Разработчики ядра Linux предложили набор патчей по имени Kernel page-table isolation (KPTI, рабочие названия KAISER, UASS, FUCKWIT), который вошёл в ядро версии 4.15 в начале 2018 года и портирован в ядро версии 4.14.11.
- Ядро macOS получило исправление в версии 10.13.2.
В некоторых случаях исправление может снижать производительность ряда функций, например, приложений, очень часто выполняющих системные вызовы. В то же время тесты Phoronix показывают отсутствие замедления в играх, запущенных на Linux с KPTI-патчем.
Механизм
Атака может быть проведена примерно следующим образом.
Для того, чтобы прочитать бит 0 из защищённой области памяти Ap, атакующий:
- Очищает кеш для адресов A0u и A1u (из адресного пространства атакующего, доступного для чтения/записи)
- Выполняет ветвление по условию, заведомо известному атакующему
- В ветке кода, которая, по условию, никогда выполняться не должна (но будет выполнена при спекулятивном выполнении):
- Читает значение V(Ap) из защищённой области памяти по адресу Ap
- Посредством выполнения побитовой операции над значением V(Ap) получает адрес A0u либо A1u
- Читает память по полученному адресу (A0u или A1u)
При обычном выполнении шаг 4 вызывает ошибку защиты, однако на этапе спекулятивного выполнения на уязвимых архитектурах эта ошибка временно игнорируется, продолжая выполнение шагов 5 и 6. В результате в кеш загружается одно из значений — с адреса A0u или A1u. Выяснив условие ветвления, процессор аннулирует все результаты выполнения шагов 4, 5 и 6, но состояние кеша остается неизменным.
После этого атакующему достаточно прочитать «свои» адреса A0u и A1u, измеряя время доступа к ним. И на основании замеров определить, какой бит (0 или 1) был прочитан из защищённой области памяти Ap.
Повторяя этот алгоритм для других битов значения V(Ap), можно получить всё содержимое защищённой области памяти целиком.
Works well with…[edit]
- can reveal enemies on low health anywhere on the map (and provide True Sight). Spectre can then Haunt to a low health enemy for an easy kill.
- can increase her damage from Radiance and Desolate.
- Spectre can use Haunt to reach a Tracked enemy anywhere on the map.
- Gold from killing Tracked enemies will allow Spectre to snowball and become unstoppable quickly.
- can heal Spectre from anywhere on the map
- In the late game, Chen can push lanes by himself, and Spectre will be able to protect him from anywhere on the map with Haunt.
- Ganks from the jungle will allow Spectre to snowball quickly, and he can protect her in lane from enemy ganks.
Clockwerk
Haunt can reveal potential Hookshot targets without making him waste Rocket Flare.
Earthshaker
Echo Slam deals more damage the more units hit by it. This forces the enemy team to split up and risk being killed by Haunt illusions.
Enigma
Black Hole is devastating to heroes grouped together. The enemy team will be given the choice of being affected more by Haunt if spread out or Black Hole if grouped.
- and both provide excellent AOE lockdown to allow Spectre and her illusions to stick onto targets.
- can aid Spectre heavily in destroying towers, funneling her gold and creating space for her to farm.
- Magic damage from compliments Spectre’s physical and pure damage.
- Due to the AOE nature of Leshrac’s spells, enemies will be discouraged from clumping up, which will make them more susceptible to Haunt ganks.
- is very effective versus heroes close together. The enemy team is forced to split to avoid this and is more exposed to Desolate from Haunt illusions.
- can give bonus damage and cleave to Spectre to hasten her farm.
- can deal massive damage in an area. If the enemy heroes spread out, they risk being killed by Haunt illusions.
- Enemies will have to make a tough decision during teamfights: either clump up and risk getting hit by a big ultimate from one of the heroes above, or spread out and be picked off by Haunt.
- can help Treant scout out enemies for potential Haunt ganks.
- will heal Spectre and her illusions, also providing a slow in case Spectral Dagger is on cooldown.
- can be used to heal Spectre while she farms the jungle. It can also be used to heal towers, stalling the push of enemies and biding time for Spectre to farm her items.
- holds enemies in place. If enemies are rooted but far away enough from each other, Haunt illusions can be very devastating as then all of their attacks will be amplified by Desolate.
- keeps Spectre healthy in lane. Having more health also means more reflected damage with Dispersion.
- further increases damage of Haunt on a group of enemies.
Pudge
Can use Meat Hook on invisible heroes after Spectre hits them with Spectral Dagger.
Mercurial, the Spectre[edit]
| Recommended Roles |
| Carry Durable Escape |
Just as higher states of energy seek a lower level, the Spectre known as Mercurial is a being of intense and violent energy who finds herself irresistibly drawn to scenes of strife as they unfold in the physical world. While her normal spectral state transcends sensory limitations, each time she takes on a physical manifestation, she is stricken by a loss of self—though not of purpose. In the clash of combat, her identity shatters and reconfigures, and she begins to regain awareness. She grasps that she is Mercurial the Spectre—and that all of her Haunts are but shadows of the one true Spectre. Focus comes in the struggle for survival; her true mind reasserts itself; until in the final moments of victory or defeat, she transcends matter and is restored once more to her eternal form.
You are here
Срывы (meltdown) и отключения (shutdown) у людей с аутизмом
теги:
мелтдаун,
симптомы и проявления
Все мы в той или иной степени испытываем стресс в повседневной жизни. Многие люди с аутизмом испытывают более высокий уровень стресса и тревоги, что может осложнять деятельность ещё сильнее. Это означает, что они могут быстрее достичь критической точки. Иногда эта критическая точка проявляется через срывы (meltdown) или отключения (shutdown). Каждый человек будет переживать свою критическую точку по-разному.
теги:
личный опыт,
мелтдаун,
сенсорные особенности,
симптомы и проявления
«Что ты бесишься?»
«Успокойся».
«Воспитывай ребёнка лучше, тогда и истерик не будет».
«Какой избалованный ребёнок!»
«Ну и поведение!» (говорится с осуждением)
К сожалению, эти и подобные им фразы люди с аутизмом и их близкие слышат едва ли не каждый день. Почему так происходит? Потому что люди с аутизмом часто испытывают состояние сенсорной перегрузки — одновременное поступление слишком большого количества сенсорных стимулов. Нахождение в помещении, где много людей, громкие звуки из телевизора, концентрированные запахи, люминесцентное освещение — всё это и сотни других факторов могут вызвать данное состояние. Также оно связано с такими диагнозами как расстройство сенсорной обработки, посттравматический стресс, фибромиалгия, синдром хронической усталости, однако при определённых условиях его может испытать любой человек. Нередко срыв (мелтдаун) — единственный способ выйти из состояния сенсорной перегрузки. А сторонние наблюдатели воспринимают его как обычную истерику.
Для ясности: срыв (мелтдаун) не то же самое, что истерика. В отличие от истерики срыв не выбирают.
Как успокоить аутичного человека
теги:
мелтдаун,
сенсорные особенности
Если аутичные люди расстроены или перегружены, то у них часто случаются срывы, отключения (уход в себя вплоть до потери сознания), зависания (моменты кризиса)
Находясь в такие моменты рядом с ними, важно знать, как их успокоить.
теги:
мелтдаун,
симптомы и проявления
У взрослого человека с синдромом Аспергера или высокофункциональным аутизмом может случиться мелтдаун (далее «срыв»), как у ребенка с тем же расстройством?
Ответ: да. Однако поведение при срыве взрослого выглядит несколько иначе, чем в детстве. В состоянии достаточно сильного стресса любой спокойный и собранный человек может оказаться «вне контроля» и даже на грани насилия. Но некоторые люди испытывают повторяющиеся срывы, при которых напряженность растет до тех пор, пока не наступает взрывной выход.
Гевин Боллард: «Потеря самообладания у Аспи — взгляд изнутри»
теги:
мелтдаун,
симптомы и проявления
Потеря самообладания (нервный срыв, истерика, англ. meltdown) – ситуация, когда Аспи (Аспи – обладатель синдрома Аспергера) временно теряет контроль над собой из-за эмоциональной реакции на факторы окружающей среды. Обычно кажется, что аспи теряет контроль при столконовении с какой-то отдельной и специфической ситуацией, однако на самом деле это редко оказывается правдой. Обычно проблема состоит в накоплении большого числа раздражителей, которые могут копиться на протяжении длительного периода времени, особенно если учесть то, что для аспи часто характерна хорошая долговременная память.
После произошедшего
Потратьте некоторое время на обсуждение случившегося с аутичным человеком, если он в состоянии. Выясните, что вызывало такую реакцию (он может вспомнить, что стало «последней каплей» — это можно использовать как отправную точку для дальнейшего совместного анализа ситуации) и каких действий он хотел бы от вас, если это произойдёт в будущем. Если он вёл себя так, что мог пораниться сам или травмировать окружающих, попытайтесь помочь ему найти более безопасные способы выхода стресса. Например, дайте ему перчатку для кусания вместо кусания собственной руки.
Если коммуникативные способности человека, которому вы оказываете поддержку, ограничены, то удостоверьтесь, что вы дали ему все возможности для сообщения о своих нуждах (карточки, компьютерные приложения, язык жестов и т.п.).
Сделайте подробные записи о ситуации перед, во время и после случившегося и обсудите эти ситуации с людьми, которые хорошо знают этого человека. Всегда помните: человек с аутизмом является главным в каких-либо дискуссиях по поводу его здоровья и благополучия.
Equipment
| Cyanide cigarettes (Dr. No) — Cigarettes containing cyanide. Used by Jones, an operative of Dr. Julius No. In a bid to escape interrogation by Bond, he bites down on a cigarette and dies seconds later. Although it doesn’t appear in the novel, Bond is sent a cyanide-laced basket of fruit by Dr. No. | |
| Garotte watch (From Russia with Love) — A wristwatch from which a wire garrote can be drawn. It is used by Red Grant to strangle a fake Bond as part of a training exercise in the opening scene. He later attempts to strangle the real 007 in the film’s climax, only to have it turned against him. Later seen in On Her Majesty’s Secret Servicewhen Bond cleans out his office. | |
| Dagger shoes (From Russia with Love) — A shoe with a retractable, poison-tipped blade concealed in the toe-cap. In the film, the poison caused death within seven seconds. Dr. No, the novel’s sequel, notes that the shoe spike was coated with the poison tetrodotoxin. In the film, they were worn by SPECTRE operatives Rosa Klebb and Morzeny, whereas in the novel they were worn only by Klebb. Seen again in Die Another Day. | |
| Largo’s remote control (Thunderball) — A remote control device disguised as a cigarette case. The device allows access to SPECTRE‘s Paris conference room, concealed in the ‘Centre international d’assistance aux personnes déplacées’ (‘The International Brotherhood for the Assistance of Stateless Persons’). | |
| Electric chair (Thunderball) — With the flick of a switch on Blofeld’s control console, any seat can become electrified, killing its occupant. The seat then drops down into the floor, disposing of the dead body. Blofeld uses this equipment to execute No. 9, who he believes is guilty of embezzlement. | |
|
Lipstick gas grenade (You Only Live Twice) — A gas grenade disguised as a makeup applicator. While flying Bond in a light aircraft Helga Brandt catches the spy off guard by dropping the device, locking him in his seat and parachuting to safety. Within seconds the cabin is filled with a disorienting gas, leaving 007 fighting for his life in a pilot-less plane. |
|
|
Piranha pool (You Only Live Twice) — Blofeld’s trap door that he uses to dispose of failures to his organization and unwelcome guests. Operated by a foot pedal concealed behind Blofeld’s desk, part of the foot-bridge over the piranha-infested pool collapses, sending the unsuspecting victim to his or her death. |
|
|
Bo with retractable spear (You Only Live Twice) — Used by a SPECTRE assassin who infiltrated Tanaka’s Samurai training school in an attempt to assassinate Bond. |
|
| Blofeld’s gifts (On Her Majesty’s Secret Service) — Blofeld’s gifts to the Piz Gloria girls; in reality, they are transmitting devices which would enable the spread of his biological weapon. | |
| Voice algorithm recorder (Diamonds Are Forever) — Used primarily by Blofeld to disguise his voice as that of Willard Whyte. Bond later uses a similar device (Courtesy of Q) to fool Blofeld into divulging Willard Whyte’s location. |
Frequently Asked Questions
-
Does it work on Windows / Ubuntu on Windows (WSL) / Mac OS?
No. This PoC only works on Linux, as it uses properties specific to the Linux kernel, such as the direct physical map.
-
Can I run the PoC in a virtual machine?
Yes, the PoC also works on virtual machines. However, due to the additional layer introduced by a virtual machine, it might not work as good as on native hardware.
-
The KASLR program () does not find the offset!
The tool only does very few measurements to be fast. If it does not find the offset, there are two possibilities:
- change the number of retries in :
- use the kernel module in to directly read the offset from the kernel. Install the kernel headers for your kernel () and run
-
You said it works on uncached memory, but all your demos ensure that the memory is cached!
-
It just does not work on my computer, what can I do?
There can be a lot of different reasons for that. We collected a few things you can try:
- Ensure that your CPU frequency is at the maximum, and frequency scaling is disabled.
- If you run it on a mobile device (e.g., a laptop), ensure that it is plugged in to get the best performance.
- Try to pin the tools to a specific CPU core (e.g. with taskset). Also try different cores and core combinations.
- Vary the load on your computer. On some machines it works better if the load is higher, on others it works better if the load is lower.
- Try to disable hyperthreading in the BIOS. On some computers it works a lot better if hyperthreading is disabled.
- Use a different variant of Meltdown. This can be changed in in the line . Try for example instead of , which works a lot better on some machines (but not at all on others).
- Try to create many interrupts, e.g. by running the tool with (or other values for the parameter, depending on the number of cores).
- Try to restart the demos and also your computer. Especially after a standby, the timing are broken on some computers.
- Play around with the parameters of libkdump, e.g. increase the number of retries and/or measurements.
Бомба замедленного действия
Сама идея внеочередного исполнения инструкций была предложена IBM в 1963 году. Рядовые пользователи столкнулись с ней только в 1995 году, когда появился первый Pentium Pro. С тех пор линейный конвейер канул в Лету, а все современные процессоры используют архитектуру с внеочередным (out-of-order) и одновременно упреждающим (или спекулятивным — speculative) механизмом исполнения команд.
Как же это работает? Для программиста все выглядит просто. Он отправил очередь инструкций на вход и получил ее исполнение на выходе. Однако внутри процессора творится своя магия. Современное процессорное ядро использует многоуровневый конвейер с нелинейными путями. Все входящие инструкции в нем кешируются и декодируются по нескольку штук за такт. Они дробятся на микрооперации, которые переупорядочиваются в собственном буфере (ROB, Re-Order Buffer). Ни одна из них не работает с реальными адресами памяти и физическими регистрами процессора. Блок управления памятью транслирует виртуальные адреса и определяет параметры доступа к ним.
После ROB микрооперации отправляются в станцию резервации, где обрабатываются параллельно на разных исполнительных блоках. Вдобавок современные процессоры используют разные типы кешей для ускорения обработки данных, изначально загружаемых в не слишком быструю оперативную память. Простейший кеш для инструкций применялся еще в 1982 году, а кеш данных используется с 1985 года. Сейчас они оба относятся к базовому кешу первого уровня (L1), помимо которого появились L2 и L3 общего назначения.
Все эти архитектурные навороты создавались для уменьшения времени простоя отдельных исполнительных блоков процессора. Пока один блок ожидает загрузки данных из оперативной памяти для своей инструкции, другой параллельно обрабатывает следующие. В этом ему помогает MMU (Memory Management Unit) и общая архитектура конвейера, который старается работать на упреждение и постоянно подгружает наиболее востребованные данные в кеш.
Ключевой момент в этой схеме состоит в том, что в большинстве процессоров все проверки легитимности исполнения инструкций и даже контроль за разделением доступа к памяти в самом MMU происходят уже на заключительном этапе обработки инструкций, когда начинается выстраивание промежуточных результатов в порядке исходной очереди команд. Запрещенные операции игнорируются (вызывают исключение), а невостребованные данные при этом остаются в кеше. Собственно, это и есть главная проблема.
В большей мере задержками в проверке условий и длинным забеганием вперед по ветвям инструкций грешат процессоры Intel с длинным конвейером (кроме Itanium и первых Atom), но AMD и даже ARM это тоже касается — просто в эксплоитах для них потребуется более точный таймер, другие размеры массивов и техники забивания кеша. Если Meltdown для них пока не смогли убедительно воспроизвести, то Spectre — вполне.
Целых 27 лет ведущие разработчики считали, что скорость обработки инструкций важнее безопасности, а все проверки можно делать уже после пробного исполнения команд «на выходе» из конвейера. В том или ином виде внеочередное исполнение сегодня реализовано во всех процессорах. Из-за параллельной работы исполнительных блоков задержка в обработке исключения, лаг MMU и очистки кеша тоже есть всегда, просто в случае микроархитектуры Core они заметнее и ими проще воспользоваться.
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!
Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
Часть 2
Эта часть является развитием предыдущей и будет посвящена раскрытию проблемы потери самоконтроля у взрослых
Как долго обычно продолжается срыв?
Большинство нервных срывов у детей продолжаются примерно от 5 до 15 минут, хотя я слышал о случае, когда он длился 45 минут. Нижняя временная граница, возможно связана с тем количеством энергии, которое Аспи тратит на срыв сам по себе. Дети постарше сильнее и будут очевидно способны продолжать находиться в этом состоянии в течение более длительного времени, чем более младшие.
Теперь перейдём к вопросу, проявляют ли себя приступы потери самообладания у взрослых, которые очевидно намного сильнее детей.
Мне на него довольно сложно ответить, потому что какое-либо чувство времени исчезает на протяжении срыва. Однако я думаю, что никогда не переступал 45-минутную черту. Я не уверен, может ли вообще продолжаться такой выплеск эмоций в течение более длительного времени.
Агрессивная потеря самообладания у взрослого
Хотя и можно представить себе то, что потеря самообладания у взрослого человека с выплеском агрессии может привести к насилию и убийствам, есть очень веские основания считать, что сам по себе синдром Аспергера к этому не приводит. И в подобных случаях, сообщения о которых иногда появляются в западной прессе, обычно действуют какие-то иные факторы, не связанные с синдромом: неверная постановка диагноза (в т.ч. подтверждаемая судмедэкспертом), низкий интеллект, иные психические нарушения (см. англоязычный оригинал).
Как превратить обычный срыв в буйный
Лично у меня было очень мало случаев потери самоконтроля с буйством или насилием. И хотя мебель или стены обычно были главными «жертвами», были ситуации, когда я ударял других людей.
Что приводит к тому, что взрослый аспи при потере самообладания начинает кидаться на людей?
- Другие взрослые применили физическую силу первыми
- Другие взрослые первыми начали швыряться предметами
- Взрослые кидаются ругательствами в потерявшего самообладание аспи
- Взрослые дразнят или смеются над потерявшим самообладание аспи
- Взрослые отказываются покинуть личное пространство потерявшего самообладание аспи
Я думаю, из этого списка должно быть достаточно очевидным то, что если другие взрослые ведут себя легкомысленно рядом с аспи, который вышел из себя, они могут лишь усугубить проблему.
Что может/должен сделать Аспи, потерявший самообладание?
Отойдите от каких-либо нетолерантных взрослых людей. Предпочтительно удалиться в запираемую (самим аспи) отдельную комнату. Если аспи вовлечён в деятельность, которая приводит к срыву (например, неправильно работающий компьютер), то он должен её отложить на следующий день и возобновить её уже «на свежую голову».
Как защититься от Meltdown и Spectre в Linux
Разработчики Linux очень сильно потрудились над решением проблемы и эта работа все еще продолжается. Версия ядра 4.14.2 содержит все доступные на данный момент исправления. Через несколько дней выйдет версия 4.14.13 с дополнительными исправлениями багов. Патчи исправлений также были добавлены для стабильных версий ядра 4.4 и 4.9, но эти патчи очень сильно отличаются оттого, что есть в 4.14 и 4.15 и закрывают намного меньше проблем.
Если вы используете Linux с более старым ядром, то патчей для вас нет и не будет. Грег Кроах-Хартман сказал что отсутствие исправлений Meltdown настолько незначительно по сравнению с другими проблемами в этих ядрах, что выпускать его бессмысленно. Если вы используете процессор ARM64 то патчей пока нет, но они будут доступны в ядре 4.15 через несколько недель. Для ARM исправления будут бэкпортированы в ветки 3.18, 4.4 и 4.9. Все что было написано выше — решает уязвимость Meltdown (CVE-2017-5754).
Spectre — это совсем другая история. Универсальных патчей для исправления Spectre пока нет. Это объясняется тем, что все разработчики ядра работали над решением более серьезной проблемы — Meltdown. А также у разработчиков было недостаточно информации о том, что представляет из себя эта уязвимость. Разработчикам потребуется несколько недель чтобы решить эти проблемы. Все усложняется тем, что здесь недостаточно применить одно исправление на уровне ядра, нужно вносить изменения в каждое приложение отдельно. И что-то мне подсказывать что разработчики многих продуктов просто забьют на все это.
Если вы используете Linux не на x86 или ARM, то будьте очень осторожны. Для других платформ патчей пока нет и не предвидеться. Известно что уязвимы не только чипы Intel и AMD, но и Power 8, Power 9, System z и SPARC.
Что касается дистрибутивов, то Red Hat, CentOS, Ubuntu, Debian, ArchLinux, LinuxMint, OpenSUSE и другие уже выпустили патчи для защиты от Meltdown. Вы можете уже сейчас обновить систему или хотя бы ядро и быть спокойным по поводу этой атаки.

Далее, еще можно обновить видео драйвер NVIDIA до версии 384.111. Это пока что все, что доступно для защиты.