Уязвимость Shim делает большинство систем Linux уязвимыми для атак
Это низкоуровневое программное обеспечение является связующим звеном, позволяющим Linux работать на ПК с безопасной загрузкой, и у него есть неприятная проблема.
Еще один день, еще одна потенциальная проблема безопасности Linux. На этот раз это критическая уязвимость в shim — ключевом звене между Linux и прошивкой вашего компьютера во время загрузки. Если не устранить проблему, сетевой злоумышленник может обойти безопасную загрузку и получить контроль над вашей системой.
Перво-наперво: рассматриваемая прокладка не является частью Linux как таковая. Это мост между современными ПК и безопасной загрузкой Unified Extensible Firmware Interface (UEFI) серверов и Linux. Если оставить в стороне технические аспекты, вы должны использовать его для загрузки Linux, так что это очень важно.
Shim существует потому, что Secure Boot, стандарт компьютерной безопасности, заменяющий прошивку BIOS старых компьютеров, не работал с большинством дистрибутивов Linux, когда он был представлен в 2012 году. Secure Boot использовал и до сих пор использует дружественную к Windows базу данных защищенных ключей. и для дистрибутивов Linux нет простого способа установить его. Мэтью Гарретт, известный разработчик Linux и систем безопасности, создал исправление. Это была прокладка, подписанный загрузчик, который может добавлять ключи в свою собственную базу данных.
Перенесемся на дюжину лет вперед: Билл Демиркапи из Центра реагирования безопасности Microsoft обнаружил дыру в безопасности — CVE-2023-40547 — классическое переполнение буфера. При переполнении буфера злоумышленник может проникнуть в систему и потенциально установить вредоносное ПО по своему выбору.
В частности, уязвимой частью кода оболочки является та, которая касается систем, использующих HTTP для загрузки с центрального сервера в сети. Поскольку вы живете и работаете в 21 веке и никогда не загружаетесь с сервера, на котором работает небезопасный HTTP, вам не о чем беспокоиться, верно? Неверно.
В Твиттере. Демиркапи объяснил: «Распространенное заблуждение, с которым я столкнулся, состоит в том, что это влияет только на вас, если вы используете загрузку по HTTP. Если бы это было правдой, это не было бы критической ошибкой».
Короче говоря, для использования этой уязвимости требуется определенный набор условий. Злоумышленнику потребуется возможность направить систему на загрузку из источника HTTP, что может включать в себя компрометацию сервера или выполнение атаки «человек посередине». Тогда, чтобы воспользоваться этим, злоумышленнику придется преодолеть несколько препятствий, таких как получение физического доступа к устройству или административного контроля; это вполне возможно, особенно если злоумышленник уже проник за периметр сети.
Итак, насколько это плохо на самом деле? Как рассказал Гарретт Ars Technica.
Теоретически это не должно давать злоумышленнику возможности скомпрометировать саму прошивку, но на самом деле это дает ему возможность выполнить код до ExitBootServices (передача управления между прошивкой, все еще работающей над оборудованием, и операционной системой), а это означает гораздо большая поверхность атаки на прошивку - обычно предполагается, что до ExitBootServices работает только доверенный код. Я думаю, что это по-прежнему будет называться загрузочным комплектом — он способен модифицировать загрузчик ОС и ядро перед выполнением. Но это не будет полностью постоянным (если вы очистите диск, он исчезнет).
Национальная база данных уязвимостей (NVD), которая считает, что это ужасно, сначала присвоила этой уязвимости почти высший рейтинг по Общей системе оценки уязвимостей (CVSS) — 9,8.
Red Hat, которая поддерживает прокладку, придерживается более разумной точки зрения. Мощный Linux дает CVE-2023-40547 оценку 8,3 — это все еще плохо, но не ужасно.
Почему такой высокий балл, ведь это сложно осуществить? Shim присутствует практически во всех дистрибутивах Linux уже более десяти лет. Это много потенциальных целей.
Чтобы это исправить, вам нужно исправить прошивку во всех ваших системах Linux. Или, если вы никогда не загружаетесь по сети, вы можете просто отключить опцию сетевой загрузки. Это тоже сработает.