CyberTro1n
01.06.2021, 16:29
Венгерский инженер Кан Бёлюк (Can Bölük) из Verilave (https://verilave.com/) нашёл неиспользованные и не задокументированные операционные коды в системе инструкций процессора x86-64.
Оказывается, такие опкоды действительно существуют! Некоторые команды изначально были мертворожденными, другие больше напоминают пасхалки, а третьи кажутся забытыми багами или частично реализованными командами, которые никогда не увидят свет. Есть и такие опкоды, которые, кажется, открывают целый «Режим бога» (https://hackaday.com/2019/02/03/unlocking-god-mode-on-x86-processors/) и позволяют обойти защиту процессора или даже переписать внутренний микрокод чипа (https://twitter.com/_markel___/status/1373059797155778562). Бёлюк автоматизировал процесс их обнаружения, причём его подход оказался весьма оригинальным.
Проблема обнаружения неиспользованных операционных кодов заключается в том, что при тестировании бывает сложно выявить взаимосвязи. Инструкции могут работать с одними регистрами, но не работать с другими, одни команды поддерживаются режимами памяти, а другие – нет.
Кан Беллюк вывел метод обнаружения практически любой инструкции процессора, используя сторонний канал. Способ интересен тем, что он обращается к нетривиальным возможностям процессора. Полный код доступен тут: haruspex.can.ac (https://haruspex.can.ac/browse/) / Github (https://github.com/can1357/haruspex/).
Подробности тут: https://m.habr.com/ru/company/cloud4y/blog/560438/
Оказывается, такие опкоды действительно существуют! Некоторые команды изначально были мертворожденными, другие больше напоминают пасхалки, а третьи кажутся забытыми багами или частично реализованными командами, которые никогда не увидят свет. Есть и такие опкоды, которые, кажется, открывают целый «Режим бога» (https://hackaday.com/2019/02/03/unlocking-god-mode-on-x86-processors/) и позволяют обойти защиту процессора или даже переписать внутренний микрокод чипа (https://twitter.com/_markel___/status/1373059797155778562). Бёлюк автоматизировал процесс их обнаружения, причём его подход оказался весьма оригинальным.
Проблема обнаружения неиспользованных операционных кодов заключается в том, что при тестировании бывает сложно выявить взаимосвязи. Инструкции могут работать с одними регистрами, но не работать с другими, одни команды поддерживаются режимами памяти, а другие – нет.
Кан Беллюк вывел метод обнаружения практически любой инструкции процессора, используя сторонний канал. Способ интересен тем, что он обращается к нетривиальным возможностям процессора. Полный код доступен тут: haruspex.can.ac (https://haruspex.can.ac/browse/) / Github (https://github.com/can1357/haruspex/).
Подробности тут: https://m.habr.com/ru/company/cloud4y/blog/560438/