Кратко
- Поддельный сертификат Flame строил цепочку до корня Microsoft без кражи его закрытого ключа. Предсказуемые поля выдачи лицензий и коллизия MD5 с выбранными префиксами позволили подписи над допустимым сертификатом проверяться и над другим — без критического расширения, мешавшего подписывать код для новых версий Windows.
- Исправление потребовало отозвать целый класс полномочий. Microsoft объявила недоверенной всю прежнюю иерархию лицензирования, вынесла замену под отдельный корень, которому не доверяли обычные клиенты, убрала подпись кода, ограничила новый путь лицензированием и ускорила доставку запретов клиентам.
Верная цепочка ответила не на тот вопрос
В июне 2012 года Microsoft обнаружила файл, цифровая подпись которого строилась до корневого центра Microsoft. На первый взгляд проверка отвечала: «Это выпустила Microsoft». Но криптографическая процедура подтверждала более узкие утверждения — конкретный ключ подписал дайджест, а клиент принял цепочку делегирования.
Из этого не следует, что инфраструктура Remote Desktop Licensing вправе разрешать программный код или обновление операционной системы. Такое право возникает на пересечении правил выдачи, Key Usage, Extended Key Usage, критических расширений, политики приложения и локального состояния доверия.
Security Advisory 2718704 сообщил об активных атаках с несанкционированными сертификатами, производными от центра Microsoft. След привёл к Terminal Server Licensing Service. Сервис обслуживал ограниченную коммерческую функцию, но пользовался старым алгоритмом и находился в иерархии, способной выдавать сертификаты для подписи кода.
Проблема не сводилась к наличию MD5. Доступная извне процедура лицензирования достигала корня, авторитет которого учитывался при гораздо более важных решениях. Принадлежность одной компании стала технической взаимозаменяемостью полномочий.
Поэтому инвентаризация корня как просто «доверенного» мало что даёт. Нужно перечислять решения, которые способны вызвать подчинённые цепочки: исполнение кода, идентификация сервера, регистрация устройства, активация продукта, приём обновления. Если низкорисковый издатель запускает высокорисковое действие, в графе доверия существует повышение привилегий.
Предсказуемая выдача стала оракулом подписи
Для запроса лицензирующего сертификата не требовался доступ к внутренней PKI Microsoft. Подпись использовала md5RSA, сроки действия были известны, а серийные номера с высокой вероятностью предсказывались. Это позволяло выполнить расчёт до легитимной операции подписи.
При коллизии с выбранными префиксами злоумышленник готовит два разных начала. Одно описывает нормальный объект, который увидит издатель. Другое — желаемый сертификат. Вычисленные окончания приводят оба полных объекта к одному MD5-дайджесту. Центр подписывает нормальную версию, но та же подпись проходит проверку и на второй.
Это не произвольное редактирование уже выданного сертификата и не восстановление закрытого ключа. Нужно заранее влиять на структуру, предсказать достаточно полей и заставить настоящий центр выполнить подпись. Лицензирующая служба предоставляла именно такую привилегированную операцию.
Обычный реестр держал бы алгоритм, портал регистрации, шаблон и корень в разных разделах. Flame показал риск их произведения: слабая к коллизиям функция, формируемые заявителем данные, предсказуемая выдача и широкий корень вместе создают ценное полномочие.
Любой настоящий разрыв изменил бы атаку: устойчивый дайджест, непредсказуемые поля, корень вне доверия обычных клиентов или принудительное ограничение назначения. Безопасность PKI определяется не числом записанных мер, а способностью, остающейся после их композиции.
Коллизия не была похищением ключа
Криптоаналитик CWI Марк Стивенс установил, что Flame применил ранее неизвестный вариант коллизии с выбранными префиксами. Это была не простая реализация опубликованной в 2009 году конструкции, хотя прежняя работа уже показывала возможность дополнить два разных префикса X.509 до одного MD5.
Различие влияет на защиту. Источники не говорят, что корневой или промежуточный ключ Microsoft был извлечён. Законный центр хранил ключ и выполнил обычную операцию. Нарушилась смысловая однозначность: одобрение одного объекта одновременно стало одобрением другого, с иным назначением.
Но сохранность ключа не делает происшествие малым. Хранилище ключа — лишь одна граница. Если CA подписывает данные под влиянием противника функцией без нужной устойчивости к коллизиям, полномочие покидает защищённую среду, даже когда секрет остаётся внутри.
RFC 6151 ещё в 2011 году назвал MD5 неприемлемым там, где требуется устойчивость к коллизиям, включая цифровые подписи, и отдельно рассмотрел HMAC-MD5. Поэтому поиск строки MD5 недостаточен. Надо спрашивать, кто формирует сообщение, какое криптографическое свойство нужно и какое решение наследует коллидирующий объект.
Критическое расширение означало обязанность отказать
Обычный лицензирующий сертификат содержал CRL Distribution Point, Authority Information Access и критическое расширение Microsoft Hydra. В сертификате Flame ожидаемых расширений не было.
«Критическое» в X.509 — не оценка важности, а инструкция проверяющей стороне: неизвестное критическое расширение требует отклонить сертификат. RFC 5280 также определяет совместное ограничение назначения через Key Usage и Extended Key Usage.
Windows Vista и более новые системы исполняли Hydra-связанное правило отказа. Поэтому нормальный лицензирующий сертификат не годился для подписи кода. По анализу Microsoft, коллизия понадобилась, чтобы создать альтернативный сертификат без критического ограничения, сохранив подписанный MD5. На системах до Vista атака могла работать без коллизии. Это различие относится к названным поколениям Windows и не переносится автоматически на другие реализации X.509.
Расширение в шаблоне ещё не контроль. Оно должно находиться в подписанной части, не исчезать в вариантах выдачи, быть критическим там, где это необходимо, и измеримо приводить к отказу у всех значимых клиентов. Flame не заставил современный клиент проигнорировать правило — он предъявил объект, где правила не было.
Испытания должны включать отрицательные варианты: расширение отсутствует, неизвестно, испорчено или перемещено. Доказательство ограничения назначения — наблюдаемый отказ клиента, а не замысел автора шаблона.
Подписи всё ещё требовался канал доставки
Microsoft объяснила, что для имитации Windows Update одного сертификата было мало: требовалась позиция посредника, способная доставить подписанный пакет механизму обновления. Источники не описывают захват центральных серверов Windows Update.
Соединились три ограниченные способности. Сертификат дал приемлемо выглядящее происхождение. Сетевая позиция позволила заменить ответ. Правило агента обновлений решило, достаточно ли подписи под широким корнем Microsoft для права на установку.
Разложение исключает два заблуждения. Запрет сертификата не устраняет всякую враждебную доставку. Укрепление канала не решает проблему, пока принимается неправомерная подпись кода. Личность подписанта, его право на конкретный продукт и целостность транспорта — отдельные границы.
Корпоративные прокси, кэши, WSUS, SCCM, TLS-инспекция и внутренняя DNS создают дополнительные позиции доставки. Это не утверждение об их роли в Flame, а вопрос контроля: кто может положить объект перед проверяющим и какой подписи там достаточно?
Microsoft лишила доверия всю иерархию
Экстренное обновление поместило в Windows Untrusted Certificate Store три промежуточных сертификата: два Microsoft Enforced Licensing Intermediate PCA и один Microsoft Enforced Licensing Registration Authority CA (SHA1). Затем Microsoft признала недействительной всю нынешнюю и прошлую иерархию Terminal Server Licensing.
Мера намеренно была шире обнаруженного сертификата. Когда быстро и полно очертить шаблоны, родственные сертификаты и историю невозможно, точечный запрет сохраняет неизвестные соседние способности. Широкое недоверие уменьшало риск копирования атаки, принимая больший операционный эффект.
Замещающая архитектура стала уже. Отдельному корню не доверяли обычные клиенты Windows; сертификаты подписи кода исчезли; новый Extended Key Usage, не применявшийся для кода, ограничил цепочку лицензированием Terminal Server. Бизнес-функция сохранилась без унаследованной власти общего корня.
Microsoft также укрепила Windows Update и добавила автоматическое обновление Disallowed Certificate Trust List. Клиенты получили отдельный быстрый способ узнать о новых запретах. Отказ стал распространяемой эксплуатационной возможностью, а не только центральным решением.
У удаления полномочия есть цена
Существующие Terminal Server Client Access Licenses не были аннулированы. Однако при настройке или повторной активации сервера, а также установке нового пакета CAL администратору требовалась реактивация: сертификаты Product Activation Clearinghouse изменились.
Эта деталь вскрывает скрытую зависимость. Широкое доверие кажется дешёвым до момента его удаления. Если организация не знает, какие законные операции зависят от корня, в кризис она выбирает между известной угрозой и неизвестным простоем.
Выход проектируется заранее: учёт изолированных клиентов, независимая доставка недоверия, замена корня, реактивация, инструкции администраторам и доказательство, что новая цепочка не возвращает подпись кода. Возможность быстро отозвать власть — свойство архитектуры.
Принцип Хэна Лу о первичности исполняемого кода обращает внимание на фактическое состояние клиентов. Объявленная политика не удаляет всё ещё принимаемую цепочку, а разосланный список не защищает устройство, которое его не получило. Практическая власть над доверием — способность изменить состояние принятия во всей значимой популяции.
Границы доказательств
Официальные материалы подтверждают активное злоупотребление, поддельный сертификат и техническую реакцию, но не дают полного числа жертв или всех установок Flame. Использованные документы не приписывают операцию государству, организации или человеку; атрибуция вне темы.
Коллизия не означает восстановления ключа или произвольной правки любого выданного сертификата. Граница Vista специфична для описанного Microsoft поведения. Сценарию обновления требовалась доставка; он не был документирован как компрометация центрального сервиса.
SHA-1 в новой иерархии — исторический факт, который нельзя задним числом приравнивать к MD5-коллизии 2012 года. RFC дают стандартный контекст, а не хронологию. Тексты Lu Heng применены как объявленная аналитическая рамка, не как свидетельство события.
Источники
- Microsoft Security Advisory 2718704
- Публикация Security Advisory 2718704
- Разбор коллизионной атаки Flame
- Детали коллизии и развёртывания обновления
- Обновление списка доверия и бюллетени июня 2012
- Зачем потребовалась реактивация лицензирующих серверов
- CWI о новом варианте атаки в Flame
- Технический отчёт CWI
- RFC 5280
- RFC 6151
- Lu Heng о первичности исполняемого кода
- Lu Heng о суверенитете данных
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров