Windows имеет внутренний список неудаляемых корневых сертификатов

    В Windows, согласно этой информации обновление корневых сертификатов производится с помощью Certificate Trust List — CTL. Хотя из статьи следует, что это какая то примочка для кеширования списка сертификатов на локальном сервере, поиск услужливо подсказывает, что существует authrootstl.cab, подписанный Microsoft, которому Windows, начиная с 7, доверяет безоговорочно, и обновляет его каждую неделю, а в случае установки обновления KB3004394 — каждый день.


    В консоли (MMC) можно добавить сертификаты, к которым нет доверия, но вот удалить корневой сертификат не так то просто.



    Вдохновившись недавним скандалом с объединением WoSign и StartCom, решил удалить какой-нибудь стремный сертификат из Windows 7. Выбор пал на Izenpe.com (‎06 e8 46 27 2f 1f 0a 8f d1 84 5c e3 69 f6 d5), ибо баски и SHA-1. Но не тут-то было. После удаления корневого сертификата и захода на https://www.izenpe.com из Chrome 55.0.2883.87 m сертификат появился в списке сторонних корневых центров сертификации, и, соответственно, в списке доверенных корневых центров сертификации. Что, в принципе, ожидаемо.


    Google Chrome attempts to use the root certificate store of the underlying operating system to determine whether an SSL certificate presented by a site is indeed trustworthy, with a few exceptions.
    https://www.chromium.org/Home/chromium-security/root-ca-policy

    Повторить трюк с Firefox 50.1.0 не вышло, те используют внутри браузера свое хранилище сертификатов. С Internet Explorer 11.0.9600.18163 трюк повторяется.


    Казалось бы, виновники найдены. Но нет, берем https://opensource.apple.com/source/security_certificates/security_certificates-55036/roots/Izenpe-RAIZ2007.crt и открываем через Расширения оболочки шифрования, то бишь двойным щелчком.


    И видим, что сертификат доверенный.


    Это как вообще? Заходим в консоль и видим, что злосчастный сертификат есть в списке доверенных корневых центров сертификации.


    А может Windows все неизвестные корневые сертификаты подтягивает в доверенное хранилище? Берем OpenSSL, генерируем корневой сертификат, открываем. Недоверенный.


    А я уже раскатал губу, что удастся подписывать своим CA сертификаты для гитхаба. Хотя ни одна из записей реестра, описанная в статье на technet не существует по умолчанию ни в Windows 7, ни в Windows Server 2012, по всему видно, что имеется захардкоженный список доверенных сертификатов, не видимый ни в реестре, ни в групповых политиках, ни в консоли управления.

    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 33
      +5
      Бекдор для АНБ? :)
        +11
        Для ??Б.
        –1
        Точно, и все сис.админы про это знают, особенно работающие на гос. и военком. структуры
          0
          У них должен стоять сертифицированный дистрибутив, обновления к которому тоже проверяются.
        +3
        Это же известная фича, если я правильно понял описание. Windows по умолчанию установлена с небольшим количеством сертификатам в store и новые сертификаты берутся либо через Windows Update по необходимости, либо из ресурсов Crypt32.dll (например когда нет связи с Windows Update).
        +3
        Разработчики Огнелиса весьма предусмотрительно создали и эксплуатируют собственное хранилище сертификатов.
          0
          Которое использует и Node.js
            +1

            Это как вообще?

              0
              If the 'ca' option is not given, then Node.js will use the default publicly trusted list of CAs as given in http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt.
              Документация

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

              Несколько странный уровень доверия, не так ли?

              И только в недавнем пулл реквесте добавили опцию, для указания собственного (пользовательского) бандла.
                0

                Вот именно, они собирают свой бандл. Который не обращается к хранилищу сертификатов браузера.

            0

            Mozilla и The BAt в почтовиках делает точно так же — свои хранилища.
            Я долго возился, когда внедрял корпоративные сертификаты и ЦА и удивлялся, что не все почтовые клиенты их видят по умолчанию, пока не полез достаточно глубоко в настройки чтобы обьяснить Mozilla TB что ему для почты надо использовать и системное хранилище сертификатов

              0
              В линуксовых приложениях часто используют набор УЦ от Мозиллы. А свои хранилища ещё есть в JRE и WAS.
              +1
              И Огнелис и браузеры Chrome от Google
              создали и эксплуатируют собственное хранилище сертификатов

              на базе NSS (Network Security System)
                +1
                На Винде Хром использует системное хранилище.
                  0
                  Да, это именно так. Спасибо. Все время этот Windows
              0

              Один раз имел с этим небольшой секс, везде работает, в лисе невалидный сертификат на одном из линков. И да, я тогда еще не знал, что у них свое хранилище.

              0
              Автоматическое обновление можно отключить через ГП, также с ним при недоступности CDN и протухании CTL возможны интересные эффекты.
              А тут исследователь ведёт список добавляемых сертификатов, у него вообще много интересного по теме.
                0
                Ну так то предустановленные корневые сертификаты используются для проверки валидности ПО и драйверов для самой ОС. Что само по себе вполне рабочий вариант, не считая постоянных дырок для обхода этих проверок.
                  0

                  хм… я правильно понимаю, что чтобы внедрить национальный HTTPS MITM достаточно договориться с Microsoft?

                    –1
                    Хром настучит при первом запуске и сертификат отзовут.
                      0

                      Почему настучит? И кому настучит? И кто отзовет? Предположим некая спецслужба "договаривается" с Microsoft, та в очередном обновлении добавляет любезно предоставленный спецслужбой сертификат в это "неубиваемое" хранилище кроневых сертификатов. После этого все сертификаты выпущенные спецслужбой становятся как бы "легальными".
                      Или хром при каждом запуске проверяет содержимое этого хранилища и сравнивает с каким-то своим списком?

                        0
                        В Хроме захардкожены сертификаты для некоторых сайтов (GMail, Paypal и т.п.) и при подмене сертификата публичным CA идёт уведомление.
                        Отзовёт сам Microsoft: наверняка реакция прописана в правилах CA/B Forum и из-за угрозы перехвата данных за пределами РФ.
                          0

                          Как показали недавние события с Google тоже можно договориться.


                          Насчет угрозы перехвата за педелами РФ, понятное дело, что сертификат внесут только в русскую версию. Microsoft обычно идет на сотрудничество с национальными правительствами. Во французской версии, например, свои заморочки на тему криптографии.

                      +1
                      К счастью договорится с MS в наших реалиях проблематично. Но в наших казахских степях у большинства стоят корневые сертификаты местного центра. Без них не работает онлайн сервис всяких справок, а без него жизнь сильно усложняется.
                      Самое веселое — у всей страны один пароль на личный сертификат. Безопасность на уровне!
                        0

                        Ну почему же проблематично. Не перевелись еще мастера делать "предложения, от которых невозможно отказаться".

                          0

                          Ну… при паранойе нижнего уровня, я бы сделал как-то так:


                          #!/bin/sh
                          #export HOME=/some/path
                          export profile="$HOME/some-profile-path"
                          exec firefox --profile "$profile" "$@"

                          Засунуть это в gosfirefox и сделать ему chmod +x… Затем добавить туда корневой сертификат местного центра и использовать этот "бандл" для работы с гос-сайтами.


                          Дефолтный firefox использовать для обычной жизни.


                          По мере роста параноидальности, можно разбавить:


                          1. Убрать комментарий с экспорта HOME
                          2. Запускать вообще от отдельного пользователя
                          3. Запускать из chroot
                          4. Виртуалки

                          5. N. ..

                          А по поводу пароля… Его же вроде средствами OpenSSL поменять можно, не?

                            0
                            Вы абсолютно правы, вариантов много и разных. Только вот большинство населения этим заниматься не будут ввиду отсутствия элементарных навыков. Правильнее было бы генерировать рандомный пароль для каждого выданного сертификата, а не 123456. Ой, кажется я допустил утечку государственного масштаба! =)
                        0
                        Интересно, чем вам баски-то не угодили?
                          0
                          Обновление корневых сертификатов можно отключить в компонентах Windows или в групповой политике.
                          https://technet.microsoft.com/en-us/library/cc734054(WS.10).aspx
                          Есть несколько required сертификатов, но в целом никаких секретных мест больше вроде бы нет. Но их тоже можно удалить. Вот список для старой ОС:
                          https://support.microsoft.com/en-us/help/293781/trusted-root-certificates-that-are-required-by-windows-server-2008-r2,-by-windows-7,-by-windows-server-2008,-by-windows-vista,-by-windows-server-2003,-by-windows-xp,-and-by-windows-2000

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое