В начале года в процессорах самых разных производителей – Intel, AMD, в платформах ARM и даже MIPS были обнаружены сразу две архитектурные уязвимости, связанные со спекулятивным исполнением команд. Уязвимости в принципе относятся к не очень опасному классу разглашения информации, но, к сожалению, для процессоров они оказались критическими. В частности, разработаны методы атаки, которые позволяет получить информацию для переключения между режимом пользователя и ядра, что равнозначно взлому системы разграничения доступа, причем в различных операционных системах.
Спекулятивное выполнение команд было придумано для ускорения процессов, но обернулось проблемами с безопасностью. Когда производители операционных систем отчитались об исправлении ошибки, то производительность ОС пришлось ограничить: вставить лишние команды, которые конвейер не успеет пройти за время отрицательной проверки, лиmj предусмотреть очистку кэша. Не совсем понятно, что при этом сделали производители операционных систем реального времени – это тема для отдельного исследования. Я же хотел понять, насколько таким уязвимостям подвержены процессоры российского производства.
Сразу можно сказать, что «Эльбрус» – вне подозрений. Он построен по архитектуре длинного командного слова (VLIW), в которой не используются конвейер и спекулятивное исполнение кода. В данной архитектуре ускорение достигается за счет нескольких потоков команд, оптимизированных компилятором. Следует отменить, что по этой же причине обнаруженным уязвимостям не подвержены процессоры Itanium, построенные на том же принципе, естественно, со своими командами. Кроме того, архитектуры ARM и MIPS – они и лежат в основе наиболее известных российских процессов – не подвержены уязвимости Meltdown. То есть к мельдониевому скандалу российские процессоры не причастны. Только Spectre – только хардкор.
В отличие от горы, в глубинах озера «Байкал» можно обнаружить признаки присутствия чудовищ. Тут следует различать два разных семейства процессоров: Baikal T, построенное на архитектуре MIPS, и Baikal M, основанное на архитектуре ARMv8. Процессоры T1, производимые сейчас, используют микроядерную архитектуру P5600, которая указана в блоге MIPS как уязвимая для Spectre. Базовой микроархитектурой ядра для Baikal M является процессор Cortex A57, который также находится в списке уязвимых к Spectre. Так что здесь «отечественность» не позволила избежать уязвимости – обе линейки процессоров «Байкал» находятся как минимум под подозрением.
Есть еще один российский процессор, который производит компания «Элвис», – «Мультикор». По названию понятно, что это мультиядерный процессор, но с необычной архитектурой – у него одно, управляющее ядро MIPS и несколько сигнальных ядер ARM. Поскольку про ядро MIPS известно только его название – RISCore32, но не первоисточник микроархитектуры, то подтвердить его уязвимость не представляется возможным. Однако ядра ARM основаны на Cortex A9, которое опять же указано как уязвимое для Spectre. В результате срабатывает принцип слабого звена: уязвимо одно ядро – уязвим и весь процессор.
В России также производятся процессоры «Комдив», базовой системой команд для которых являются MIPS32 и ее развитие MIPS 64. Утверждается, что микроархитектура ядра при этом собственная, однако конвейер в процессоре есть, а, значит, спекулятивное выполнение команд реализуется. Кэш, с помощью которого подбирается информация в Spectre, тоже в наличии. Однако на сайте MIPS никаких сведений об уязвимости «Комдива» найти не удалось, а проводить собственное исследование – работа непростая. Поэтому придется констатировать не полную закрытость данного вопроса.
Следует отметить, что даже если производитель платформы указывает, что какая-то микроархитектура является уязвимой, это еще не говорит о том, что эту уязвимость можно эксплуатировать. Все-таки Spectre достаточно сложная уязвимость, эксплуатация которой требует высокой квалификации и стечения определенных обстоятельств. Как минимум, нужно предоставить нападающему возможность проникнуть в систему с помощью другой уязвимости или подключиться как легальный пользователь. Но даже в этом случае злоумышленнику нужно иметь возможность исполнения кода, которую не всегда предоставляют, например, коммутаторы и другое телекоммуникационное оборудование. В целом, может оказаться, что при использовании уязвимого ядра вся система останется неуязвимой. Однако чтобы удостовериться в этом, стоит каждый раз проводить исследование безопасности конкретного устройства, причем желательно независимое. Всем разработчикам бортовой электроники, особенно используемой в ОПК, рекомендуется подобное исследование провести, иначе куш могут сорвать «независимые исследователи безопасности», и тогда ущерб может оказаться серьезнее. Таков мой вам совет – на всякий случай.