Fractal OS упрощает поиск аппаратных уязвимостей безопасности.




Современные операционные системы имеют множество функций, чтобы усложнить жизнь злоумышленникам. Это касается и исследователей, которые ищут уязвимости в аппаратном обеспечении, — даже если их намерения благи. Некоторые механизмы при этом лишь косвенно мешают и затрудняют исследователям поиск проблем. С помощью собственных патчей они затем пытаются обойти эти ограничения.

Именно это надоело Джозефу Равичандрану, аспиранту CSAIL (Лаборатории компьютерных наук и искусственного интеллекта) Массачусетского технологического института (MIT). Поэтому он разработал Fractal — операционную систему (откроется в новом окне), которая должна облегчить работу специалистам по безопасности. Fractal имеет функции, которых по уважительным причинам нет в других операционных системах.

Так, операционная система позволяет выполнять один и тот же код без так называемого переключения контекста с правами ядра операционной системы. Кроме того, в ней реализована так называемая кооперативная многозадачность. Здесь выполняемый поток сам решает, когда освободить процессор. Обычно реализуется вытесняющая многозадачность, при которой операционная система по истечении определенного времени выделяет процессор другому потоку.

Беспрепятственно использовать уязвимость

Суть в том, что для обнаружения аппаратных уязвимостей часто требуются длинные, целенаправленно разработанные последовательности команд.

То же самое касается анализа принципов работы компонентов процессора, таких как предсказатель переходов (g+). Если используемые последовательности команд прерываются, например, потому что операционная система выделяет процессор другому потоку, работа была проделана напрасно. Благодаря кооперативной многозадачности это можно предотвратить, а другие концепции, лежащие в основе Fractal, призваны избежать влияния на другие компоненты, такие как TLB (буфер ассоциативной трансляции).

Равичандран разработал Fractal в основном для Apple Silicon. На M1 он уже смог показать с помощью своей собственной операционной системы, что этот процессор уязвим для механизма, лежащего в основе уязвимости Phantom. M1, хотя и может быть отправлен по ложному пути, загружает только соответствующую команду, но не выполняет ее.

Помимо M1 и M4, эта операционная система, содержащая более 31 000 строк кода на ассемблере, C и C++, также работает на Raspberry Pi, а также на процессорах RISC-V и 64-битных x86. Исходный код доступен на Github (откроется в новом окне), Равичандран также опубликовал Fractal в рамках симпозиума IEEE по безопасности и конфиденциальности (PDF) (откроется в новом окне).