Драйвера, подписанные Microsoft, можно устанавливать и без разрешения владельца ноутбука, достаточно сертификата Microsoft (Источник: xkcd.com)

В прошлом году корпорация Microsoft объявила о том, что с выходом Windows 10 все новые драйвера режима ядра будет необходимо подтверждать в Windows Hardware Developer Center, для получения цифровой подписи Microsoft. Из-за ряда проблем это нововведение не вступило в силу, оставшись лишь уведомлением.

Теперь компания решила реализовать это изменение. Начиная с версии 1607 операционной системы Windows 10, ОС не будет загружать новые драйверы режима ядра, не подписанные в Windows Hardware Developer Center. Речь идет только о чистых установках операционной системы, а не об апгрейдах прежних версий Windows OS на Windows 10. В этом случае версию 1607 не затрагивают изменения в политиках.

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

Если вы разработчик драйверов, то для подписания своего драйвера необходимо выполнить следующие действия:
1. Убедиться в том, что вы отправили драйвер Microsoft через Windows Hardware Developer Center.
2. Начать процесс сертификации драйвера по процедуре Extended Validation (EV) Code Signing Certificate. Все драйверы, которые планируется загрузить для проверки, должны быть подписаны сертификатом EV.

Microsoft опубликовала и ряд ответов на дополнительные вопросы, которые могут возникнуть у разработчика или пользователя.

Один из вопросов касается исключений и драйверов с кросс-сертификатами:
  • Как и говорилось выше, изменения в политике подписания драйверов касаются только чистых установок Windows 10, а не обновлений с предыдущих версий ОС. В последнем случае валидны и кросс-сертификаты драйверов;
  • ПК с отключенным режимом Secure Boot также будут пропускать установку таких драйверов;
  • Драйвера, получившие кросс-сертификат до 29 июля 2015 года, остаются валдиными.

Что касается иных версий Windows, то изменения актуальны только для Windows 10 версии 1607. При этом загрузить драйвер на Windows Hardware Developer Center можно будет только при наличии EV сертификата.

В любом случае, теперь, если разработчик решил проверить работу драйвера на тестовой машине, ему придется выключать режим Secure Boot и подписывать сертификат самостоятельно, устанавливая драйвер при помощи соответствующего инструмента.
Как вы относитесь к этой инициативе?

Проголосовало 710 человек. Воздержалось 187 человек.

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

Поделиться с друзьями
-->

Комментарии (102)


  1. VioletGiraffe
    01.08.2016 15:18
    +7

    Это ж сколько ценного старого (или просто опенсорсного) софта перестанет работать…


    1. dartraiden
      01.08.2016 16:07

      На устройствах Microsoft Surface, где SecureBoot неотключаем.

      На практически всех десктопных и мобильных платах он может быть выключен пользователем, которому нужен «ценный старый (или просто опенсорсный) софт».


      1. Laney1
        01.08.2016 16:24

        На устройствах Microsoft Surface, где SecureBoot неотключаем

        на Surface Pro Secure Boot прекрасно отключается. Не отключается только на тех, которые на армах, но про них уже все давно забыли.


    1. SergiusTheBest
      02.08.2016 09:37

      Драйвера, получившие кросс-сертификат до 29 июля 2015 года, остаются валдиными.


  1. Fox_exe
    01.08.2016 15:24
    +5

    Вот теперь я точно не буду обновлять Windows — 99% драйверов в моей системе точно никогда не получат подпись — просто потому, что это драйвера для крайне специфичных девайсов, которые уже давно не поддерживаются производителем, а альтернативы неадекватно дорого, если вообще есть…


    1. MaximChistov
      01.08.2016 15:29
      +1

      для обновления нету такого ограничения, в статье об этом написано…


      1. Evengard
        01.08.2016 15:34
        +2

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


        1. Nexen2
          01.08.2016 15:36
          +1

          Что помешает МС запретить его менять? Другое дело, что может появится некое стороннее ПО от третьих лиц, благодаря которому это станет возможным.


          1. Fox_exe
            01.08.2016 17:10
            +1

            Что мешает МС сделать это ограничение и для уже установленных драйверов?


          1. Evengard
            07.08.2016 01:53

            Помешать врядли удастся. psexec достаточно забандлить, и можно выполнять команды от имени SYSTEM (благо для инсталляции драйверов всё равно нужны права админа, а для psexec этого вполне достаточно для получения прав SYSTEM). Вы думаете, что и от SYSTEM заблокируют изменение флага? Как, интересно? От SYSTEM-а можно и права доступа переписывать как душе удобно.


      1. VladimirAndreev
        01.08.2016 15:35
        +1

        не факт, что в версии 1608 это не будет неизменным.


        1. asvishnyakov
          01.08.2016 18:33

          Версии вида 1511 и 1607 означают год и месяц выпуска Windows 10, а следовательно версии 1608 не может быть в принципе. Если уж влезаете в подобную тему, то потрудитесь хотя бы изучить вопрос.


          1. ProfBiss
            01.08.2016 21:25

            Не понял. А почему не может быть?


          1. induction
            01.08.2016 21:25
            +2

            Т.е. августа в этом году не будет?


            1. BaLeFullPlayEr
              01.08.2016 23:11

              Т.е. 1511 и 1607 это месяца подписания сборок и в 1608 точно не будет таковой, следующая будет примерно 17(03-05)


    1. dartraiden
      01.08.2016 16:05

      Не проще ли не включать SecureBoot?

      ПК с отключенным режимом Secure Boot также будут пропускать установку таких драйверов;


  1. whiplash
    01.08.2016 15:38
    +4

    Пока ребята выпускают в продуктив ТАКИЕ дыры, эта ОС не станет безопасной)

    Новый метод обхода UAC в Windows 10 позволяет подключить вредоносную DLL-библиотеку
    http://www.securitylab.ru/news/483201.php


    1. whiplash
      01.08.2016 18:39
      +2

      И это мы даже копаем неглубоко, взять тот же PowerWare через макросы MS Office и дальше в powershell.
      Ну как можно при запрещенном явно ps.exe все равно запускать его через cmd.exe

      — У нас дыра в безопасности!
      — Ну хоть что-то у нас в безопасности!!! ©


  1. NeoCode
    01.08.2016 15:39
    +4

    Чем больше читаю новостей про эту десятку, тем чаще в голове возникает мысль «какое счастье что в мире есть линукс!»


    1. Goodkat
      01.08.2016 15:54
      +3

      Линукс есть и в Десятке :)


      1. lieff
        01.08.2016 16:11

        А гуи в нем работает? Когда последний раз проверял, убунту на нем пускали как консольный сервер, к которому подсоединялись через VNC. Я такое уже давно делал через XMing, пока это для консольных утилит, не более.


        1. dartraiden
          01.08.2016 16:13

          1. lieff
            01.08.2016 16:25

            Да да, это оно и есть. Mesa и графический стек линукса тут не работает, запускается X сервер в софтварном режиме и VNC клиент.
            Точно такая же схема как тут http://www.straightrunning.com/XmingNotes/
            Помоему уже даже xming не нужен, порт уже добавлен в cygwin.


    1. Laney1
      01.08.2016 16:33
      +7

      вообще-то в ядре линукса есть аналогичный флаг, запрещающий загружать неподписанные модули при включенном Secure Boot. И например, в Ubuntu 16.04 он установлен


      1. tyderh
        02.08.2016 11:17

        Вот только с линуксом 1) практически все драйвера идут вместе с ядром 2) всякие принтеры работают в юзерспейсе через libusb 3) остальные ядерные модули тоже поставляются через штатный репозиторий. Проблемы подписать практически все нужное нет.

        А венда — венда.


        1. Laney1
          02.08.2016 12:25

          например, драйвер моего wifi-адаптера (Mediatek) — не идет. И в репах его нет. Или еще один пример, Intel Media SDK. А если я сам захочу написать какой-нибудь модуль, что кстати не сложно? То, что вы не сталкивались с такими кейсами, не означает что они редко встречаются.

          Проблемы подписать практически все нужное нет

          примерно такая же процедура как в винде.


          1. lieff
            02.08.2016 13:07
            +1

            Вообще то, для Secure Boot это должно быть не опцией, и убунта тут непричем.
            Первая попавшаяся ссылка из гугла: http://www.securitylab.ru/blog/personal/Ennormoz/19457.php

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


        1. grechnik
          02.08.2016 15:17

          «Всякие принтеры» и в винде могут работать в юзерспейсе через UMDF. Когда я последний раз проверял, UMDF-драйверы принудительно подписывать было не нужно.


      1. arheops
        02.08.2016 12:33

        У линукса есть fuse. И все нестандартное(да и много чего стандартного) работает через него.


      1. CaptainFlint
        02.08.2016 13:28
        +1

        В линуксе можно установить или собрать неподписанное ядро, и оно загрузится в Secure Boot, просто граб закроет доверенную сессию. И все модули можно будет грузить, как обычно. А Windows такой возможности не предоставляет (точнее, предоставляет, но с отключением части функций и показом водяного знака).


  1. lieff
    01.08.2016 16:10
    +2

    А возможность отключить проверку сетрификатов при загрузке остается?
    Пользователям конечно без подписи уже давно не отшипишь, но хоть для отладочных целей.
    Увы теперь даже такие элементарные вещи:
    Аналог strace — нужен драйвер.
    Песочница для произвольного кода — нужен драйвер.
    А в самом дравере надо как-то обходить PatchGuard или как там сейчас это делается.

    А ведь я помню еще времена когда strace под виндой был и работал.
    А теперь, разве что drmemory с динамической ретрансляцией кода остался, и то сейчас пробую drstrace.exe — крашится.
    Увы, увы, увы.


  1. dartraiden
    01.08.2016 16:17
    +5

    В полупривате, кстати, гуляет один интересный набор из отозванного китайского сертификата и программы, позволяющей подписать им драйвер. Так вот, подписанный этим способом драйвер загружается на данный момент в любых 64-разрядных Windows со всеми включёнными защитами. Несмотря на то, что сертификат давно протух и отозван.


    1. dartraiden
      01.08.2016 16:23
      +1

      Возможно (это уже мои домыслы), недоработка Windows, которую использует эта программа (потому что никак не должен признаваться валидным файл, подписанный просроченным и отозванным сертификатом), настолько фундаментальна, что проще запретить загрузку непроверенных Microsoft-ом драйверов, чем исправлять её.

      Ещё разок о масштабах проблемы: можно взять сколь угодно вредоносный драйвер, подписать его практически общедоступной утилитой и Windows, не пикнув, загрузит его.


  1. wOvAN
    01.08.2016 16:17
    +4

    С выходом 10-ки и правда все чаще задумываюсь о миграции на Linux.
    Второй Apple мне не нужен.


    1. VioletGiraffe
      01.08.2016 16:27
      +2

      Ну кто-то же должен писать нормальный софт под Линукс. Как напишете пакет софта для повседневных бытовых задач, от которого не хочется плеваться — позовите ;)


      1. lieff
        01.08.2016 16:41
        +3

        Когда говорят про повседневные бытовые задачи — у меня на уме 2 вещи: Libre Office и Steam.
        И то и другое есть, Libre Office я использую уже давно и на винде, (уф, про таблицы на VB можно забыть).

        Если же говорить про программерские задачи, аналога strace на винде не подскажите?

        Вот игры это да, их меньше. Мне лично не хватает Far Manager и ААА игр.
        Хотя игр все больше, по поводу игр рекомендую https://www.gamingonlinux.com/index.php?module=calendar

        А вам конкретно чего не хватает?


        1. VioletGiraffe
          01.08.2016 16:45
          +4

          Удобного файлового менеджера нет (Krusader — почти, но иногда бесит невозможность выполнить элементарные действия).
          Удобного аудиоплеера с медиабиблиотекой нет (3 года назад не было, когда я последний раз искал, если быть точным). Спасал АИМП под Wine, но работал он не без глюков.
          Нормальной IDE для разработки на С++ не было! Не знаю, что там сейчас CLion может, а вот Qt Creator регулярно использую. Там отличный редактор, но как доходит до отладки — можно сразу вешаться.
          Ну и для игр однозначно нужна Винда, если хочешь следить за новинками и играть во всё.


          1. VioletGiraffe
            01.08.2016 16:54
            +1

            И вообще, мне не нравится программировать под Линукс. Не спрашивайте, почему, это просто размытое собирательное ощущение от 5 лет попыток, конкретные примеры уже забылись. Если нужно запрограммировать что-то системное, то на Винде я уверен, что найду решение либо в MSDN, либо на StackOverflow, и оно будет работать. На Линуксе — как повезёт. Из свежего — нужно сделать file system watcher, и в Линукс-версии своего приложения я пока что эту затею бросил. На Винде это делается достаточно легко за 1.5 часа с отладкой и многопоточностью.


            1. lieff
              01.08.2016 17:10
              +1

              О, мониторить ФС это легко. Я делал и на винде (ReadDirectoryChangesW) и на линуксе http://man7.org/linux/man-pages/man7/fanotify.7.html или http://man7.org/linux/man-pages/man7/inotify.7.html
              Увы я сталкивался и с противоположным, делал я веб сервер, получилось 60k rps против 120k rps линух. Делал песочницу для него, на линуксе сделал через ptrace (Можно SeLinux), на винде начал через драйвер и потом забросил.


            1. pfemidi
              01.08.2016 18:25
              +2

              И вообще, мне не нравится программировать под Линукс.

              Коллега!

              Если не требуется использование каких-нибудь фич, присутствующих только в линуксе, а дело ограничивается только POSIX/Qt/Stl, без всяких /dev, /proc и подобного, то я всегда пишу/отлаживаю/добиваюсь работоспособности в Win7, а после уже просто перекомпилирую готовый код под Linux. А всё потому, что под Linux нет ни вменяемых редакторов (типа Microsoft Visual Studio), ни что самое ужасное — нет отладчиков. Извините, но gdb это не отладчик, это насмешка какая-то и самобичевание. Я честно пытался к нему привыкнуть, 15 лет я время от времени повторяю эти попытки, ПЯТНАДЦАТЬ ЛЕТ!!! Но тщетно. Я не могу не уважать себя до такой степени, чтобы начать пользоваться gdb.


              1. VioletGiraffe
                01.08.2016 18:38
                +1

                Коллега, на 100% согласен. Сам пришёл к такому же сценарию работы.
                Не знаю, в GDB ли проблема, или в обёртках над ним, но ни одного нормально работающего GUI для отладки через GDB я ещё не видел :(


              1. CaptainFlint
                01.08.2016 19:13

                QtCreator вполне пристоен, и может использоваться для не-Qt-проектов. До Студии, конечно, не дотянет, но пользоваться можно.


                1. VioletGiraffe
                  01.08.2016 19:16
                  +1

                  Им и пользуюсь, но с отладкой там туго. Она есть, но всё время хромает и спотыкается.


                  1. Uint32
                    01.08.2016 19:42
                    +2

                    Не знаю, у меня все совершенно ок под gdb + qtcreator. ЧЯНД?


                    1. VioletGiraffe
                      01.08.2016 19:44

                      А если в вектор заглянуть? А если в нём ещё и лежит что-то посложнее, чем int?


                      1. lieff
                        01.08.2016 20:38

                        Для кастомных типов я смог решить эту проблему с помощью debug helpers
                        http://plohrmann.blogspot.ru/2013/10/writing-debug-visualizers-for-gdb.html

                        Для стандартных типов QT/C++ в последних QTCreator проблем быть не должно, хотя помнится там был нюанс с опцией «Load system GDB pretty printers».


                        1. VioletGiraffe
                          01.08.2016 21:05

                          Он у меня на всех машинах (не меньше трёх) систематически глючит и вообще отказывается показывать переменные. Либо показывает только адрес переменной в памяти, а значения нет.


                          1. lieff
                            01.08.2016 21:18

                            А версию из репозиттария используете или отсюда? https://www.qt.io/ru/download-open-source/
                            В репах уж больно старое.


                            1. VioletGiraffe
                              01.08.2016 21:55

                              Последнюю через Qt Maintenance Tool. Я не настоящий Линукс-разработчик, сборкой из репозиториев не развлекаюсь :) Либо инсталлятор, либо apt-get.


                      1. Uint32
                        02.08.2016 01:35

                        Куда угодно. Питоновские хелперы цепляются к gdb запросто. (Посмотрите, как устроены хелперы для классов Qt).
                        Сперва тоже неоднозначно относился, к тому, как работает gdb, потом разобрался и все стало вполне юзабельно.
                        Хожу по ядру linux из-под qtcreator — очень удобно.
                        Сожалею, но более комментировать не буду — ограничение на 1 коммент в час.


                1. pfemidi
                  01.08.2016 20:05
                  +1

                  Я это уже проходил, неоднократно. QtCreator в качестве отладчика, i.e. в качестве фронтенда для всё того же пресловутого gdb, можно только демонстрировать на ютубе в видеороликах «Каким НЕ ДОЛЖЕН БЫТЬ отладчик». Извините, ничего личного. Идеал для меня это OllyDbg для системной отладки/реверсинга и встроенный отладчик в Microsoft Visual Studio для отладки своих програм. В Linux, увы, недоступно ни то, ни другое. Поэтому приходится держать VirtualBox с Windows Seven исключительно для девелопинга, всё остальное я прекрасно и в Linux делаю, но вот программы писать — только Windows.


              1. Kobalt_x
                02.08.2016 13:47

                У gdb в отличие от его виндовых товарищей cdb/ntsd расширяемость гораздо выше. Плюс отсутствие наркоманского синтаксиса и прочих причуд встроенного макроязыка. Единственный плюс этой пары — возможность по символам скачать исходники автоматом.


                1. pfemidi
                  02.08.2016 14:23

                  На вкус и цвет. По мне так это в gdb самый натуральный наркоманский синтаксис да и сам gdb предназначен для использования исключительно в период ломки чтобы сравнить и понять что ломка это ещё не самое плохое что может быть. Так что повторюсь, на вкус и цвет.


          1. lieff
            01.08.2016 16:59

            С аудио пеерами никогда проблем не знал, неужто ни один не приглянулся? http://www.tecmint.com/best-linux-audio-music-players/
            По всему остальному согласен. Far и под wine приспособил, следующий наиболее подходящий — Double Commander, отладка в Qt Creator тоже менее удобна, в определенной степени я пробелмы решил, но из коробки ситуация хуже.


          1. snuk182
            01.08.2016 17:15
            -1

            > Удобного файлового менеджера нет
            Попробуйте Double Commander


          1. Uint32
            01.08.2016 18:03

            >Удобного файлового менеджера нет
            Вот замечательный http://silk.apana.org.au/fc2development.html


          1. Meklon
            01.08.2016 19:35
            +1

            Мне Clementine нравится как плеер. Заодно без iTunes легко заливает музыку из своих файлов на iPod. Коллеге понадобилось вдруг.


            1. VioletGiraffe
              01.08.2016 19:50

              Неплохой, но что-то мне в нём не понравилось (смотрел года два назад). Скорее всего, что-то у него с lossless-форматами не срослось. Возможно, .cue плохо парсил.


              1. Meklon
                01.08.2016 20:05

                Что-то было, да.


              1. KorDen32
                02.08.2016 16:30

                С Lossless и вариациями .cue я до сих пор не могу найти альтернативны всеядному аимпу даже на винде, который парсит всякие вариации на тему «в cue указано wav/flac, а по факту flac/ape» и другую экзотику, которую может выдать EAC с некоторыми дисками. Как-то пытался пересесть на фубар (тут еще сыграла роль нативной передачи PCM и DSD на ЦАП, аимп не умеет мешать скажем 44,1 и 96, чтобы на каждом файле менялась выдаваемая частота дискретизации) — но увы, некоторые .cue он не читал, потом на Clementine (привлекла хорошая библиотека, плюс кросплатформенность с планами по переходу на Linux) — аналогично :(


                1. VioletGiraffe
                  02.08.2016 16:38

                  О да, вот эти корявые .cue выводят из себя. Спасибо, в 99% случаев АИМПу всё-таки удаётся догадаться, что там должно было быть :)
                  А насколько проще было бы, если бы правилами популярных торрент-трекеров были запрещены раздачи с неправильными .cue…


            1. Meklon
              01.08.2016 20:05

              image


        1. Kobalt_x
          02.08.2016 09:38
          +1

          Если же говорить про программерские задачи, аналога strace на винде не подскажите?
          procmon.exe


          1. lieff
            02.08.2016 14:11

            Пользуюсь им, хорошая утилита, но это не вывод вызова всех ядерных функций.
            Вывод аналога strace должен показать вызовы всех syscalls из SDT. Вот примерно такой вывод должен быть:
            http://drmemory.org/docs/page_drstrace.html

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


            1. CaptainFlint
              02.08.2016 14:29

              Существует API Monitor, но я его серьёзно не исследовал.


              1. lieff
                02.08.2016 14:42

                Я исследовал. Он хукает Ntdll.dll, вобщем работает, но при остановке монитора подопытный процесс крашится.
                Проблема в том, что то что я мониторю, вызывает syscalls напрямую, минуя обертки Nt*.
                strace мониторит именно что syscalls, нужно тоже самое в винде.


                1. CaptainFlint
                  02.08.2016 14:53

                  Тады ой.


            1. grechnik
              02.08.2016 21:34

              Есть ограниченное логирование всех системных вызовов штатными средствами: флаг EVENT_TRACE_FLAG_SYSTEMCALL в https://msdn.microsoft.com/en-us/library/windows/desktop/aa363784(v=vs.85).aspx. «Ограниченное» значит «только адреса вызываемых функций и возвращаемые значения, без аргументов».

              В сыром виде выглядит примерно так:
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039A5E30
              [2]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF96000127A6C
              [2]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = NTSTATUS=      50
              [2]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039F3090
              [2]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [Thread] Context Switch from 4836. to 0.
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = 0xc0000034(STATUS_OBJECT_NAME_NOT_FOUND)
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039C6430
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = STATUS_SUCCESS
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039A5E30
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = 0xc0000034(STATUS_OBJECT_NAME_NOT_FOUND)
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039A7190
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = STATUS_SUCCESS
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF80003990C40
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = STATUS_SUCCESS
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039C6430
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = STATUS_SUCCESS
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039A5E30
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = STATUS_SUCCESS
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039A5E30
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = 0xc0000034(STATUS_OBJECT_NAME_NOT_FOUND)
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039A5E30
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = STATUS_SUCCESS
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Enter SysCallAddress=0xFFFFF800039ACAD0
              [0]FFFFFFFF.FFFFFFFF::08/02/2016-21:25:37.851 [PerfInfoEvent]System Call Exit NtStatus = 0x8000001a(STATUS_NO_MORE_ENTRIES)
              
              Конкретно это — выдача tracelog -start -eflag 1 0x90 && [пауза] && tracelog -stop && tracefmt -tmf system.tmf LogFile.Etl в формате [CPU]PID.TID::time event. PID/TID, впрочем, придётся отслеживать руками по событиям Context Switch.


              1. lieff
                02.08.2016 22:55
                +1

                Да, плюсы этого метода — он не требует драйвера, не поломается в ближайшем будующем.
                Минусы — это скорее аналог dtrace на маке\фре (где проблема strace тоже полноценно не решается).
                Принципиальное отличие — мы обрабатываем буффер эвентов уже после того как все произошло, когда strace останавливает тред, делает анализ, продолжает тред.
                При этом strace может корректно вынуть все параметры, а вот информации из эвента не достаточно что в ETW что в dtrace.
                Можно пытаться вынуть инфу со стека, надеясь что он еще не испорчен, вот так я пытался протрейсить все exec() с параметром бинари под маком:

                Тык
                #!/usr/sbin/dtrace -C -s
                
                #pragma D option quiet
                
                proc:::exec-success
                {
                printf("\nEXECNAME: %s\n", execname);
                
                this->isx64=(curproc->p_flag & P_LP64)!=0;
                #define SELECT_64_86(x64, x86) (this->isx64 ? (x64) : (x86))
                #define GET_POINTER(base, offset) (user_addr_t)SELECT_64_86(*(uint64_t*)((base)+sizeof(uint64_t)*(offset)), *(uint32_t*)((base)+sizeof(uint32_t)*(offset)))
                
                this->ptrsize=SELECT_64_86(sizeof(uint64_t),sizeof(uint32_t));
                this->argc=curproc->p_argc;
                
                this->isClean=SELECT_64_86(1, (curproc->p_dtrace_argv==(uregs[R_SP],sizeof(uint32_t),sizeof(uint32_t))));
                this->argv=(uint64_t)copyin(curproc->p_dtrace_argv,this->ptrsize*this->argc);
                
                /* printf("%s with args:%d (%p, %p)\n",execname, this->argc, curproc->pdtraceargv, uregs\[R_SP\]); */
                
                printf("EXEC: %s ", (0 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,0)) : "");
                printf("%s ", (1 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,1)) : "");
                printf("%s ", (2 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,2)) : "");
                printf("%s ", (3 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,3)) : "");
                printf("%s ", (4 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,4)) : "");
                printf("%s ", (5 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,5)) : "");
                printf("%s ", (6 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,6)) : "");
                printf("%s ", (7 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,7)) : "");
                printf("%s ", (8 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,8)) : "");
                printf("%s ", (9 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,9)) : "");
                printf("\n");
                
                #undef GET_POINTER
                #undef SELECT_64_86
                }
                


      1. vlivyur
        02.08.2016 09:39

        Браузеров и VLC (SMPlayer по вкусу) под Linux уже давно наделали. Это для повседневностей.


  1. Diaskhan
    01.08.2016 16:36
    -2

    А потом за каждое подписывание драйвера по 5 баксов, нормально так, по еврейски....


  1. planarik
    01.08.2016 18:33
    +4

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


    1. creker
      02.08.2016 01:42
      +3

      Не сильно больше, чем без этой схемы. Что изменилось для больших компаний? Ровным счетом ничего. Они точно так же будут долго писать заплатку и в этом времени несколько дней на сертификацию затеряются напрочь. Это при том, что для получения этого драйвера, пользователю, либо надо идти самостоятельно на сайт производителя, что никто не делает, честно говоря. Либо ждать появления драйвера в windows update, куда, внезапно, попадают только WHQL драйвера, а это и так означает проверку и подпись.

      Что до самой процедуры, то давно пора было. Включить все проверки по-умолчанию и лишь оставить возможность отключения вручную. Secure Boot до самых драйверов. Кому сильно надо, тот secure boot отключит и будет работать с неизвестными железками дальше.


      1. navion
        02.08.2016 11:08
        +1

        Как быть с 0day в драйверах антивирусов и другого софта?


        1. creker
          02.08.2016 15:10

          Я все еще не вижу проблемы. Сделают заплатку, подпишут, выпустят. Для рядового пользователя ничего не изменилось и этих изменений он не заметит. Разработчики драйверов всего лишь будут проходить небольшой этап перед релизом. Собственно, крупные разработчики и так свое подписывали. Что драйвера, что бинарники.


          1. navion
            02.08.2016 22:58

            Тогда к чему это всё?


            1. qw1
              03.08.2016 00:49

              Ключи не смогут украсть или подписывать ими драйвера, не одобренные напрямую MS.
              Например, есть ключ для подписи драйверов у ReactOS, им подписывали драйвер утилиты Process Hacker.
              Теперь не будет такой возможности.


              1. CaptainFlint
                03.08.2016 15:09

                Никакого одобрения там нет. Подписывание происходит в течение нескольких минут, поэтому очевидно, что там не человек проверяет, а работает некий скрипт, который всё подписывает автоматом.

                Максимум, там может присутствовать какая-нибудь проверка по чёрному списку, но если у MS были бы претензии к конкретным драйверам, они бы первым делом заблокировали сертификаты, которыми эти драйверы подписывались.


      1. CaptainFlint
        02.08.2016 13:33

        несколько дней на сертификацию затеряются напрочь
        Нужна не сертификация, а просто идентификационная подпись от Microsoft, она получается почти автоматом в течение 5–10 минут, никакой сертификации не требуется.


        1. creker
          02.08.2016 15:13

          Вроде же на самом сайте написано, что EV требует не просто подписи, а именно сертификации и прохождения на ряд требований.


          1. CaptainFlint
            02.08.2016 15:50
            +1

            На каком именно сайте?
            Подозреваю, вы просто путаете процедуру получения собственно EV-сертификата и процедуру подписывания драйверов. Для получения сертификата, действительно, надо соответствовать определённым, довольно жёстким требованиям, они будут тщательно проверяться поставщиком сертификата (DigiCert, Symantec и т. п.), у разных поставщиков требования разные, но обычно это наличие юр. лица, всякие финансовые и отчётные документы, наличие регистрации в DUNS и тому подобная бюрократия.
            После того, как токен с сертификатом получен, на его использование не накладывается никаких ограничений (не считая очевидных, типа подписывания и распространения малвари, за такое сертификат могут отозвать).

            При наличии токена процедура подписывания драйвера для Windows 10 выглядит так:
            1. Скомпилировать драйвер.
            2. Подписать его каким-нибудь сертификатом компании (можно EV, можно обычным; говорят также, что можно вообще не подписывать, но это я пока не проверял).
            3. Запаковать драйвер или комплект драйверов с INF-файлами в CAB-архив.
            4. Подписать этот CAB своим EV-сертификатом (вот здесь это точно обязательно).
            5. Если ещё не делали, зарегистрировать компанию на портале sysdev и привязать там свой EV-сертификат.
            6. Открыть форму отправки файла на подпись Windows 10, загрузить CAB-архив.
            7. Дождаться, пока автоматическая система обработает архив, подпишет файлы, сгенерирует и подпишет файлы каталогов и выдаст ссылку на итоговый архив.
            8. Скачать архив, распаковать. Всё, у вас драйверы, подписанные ключом Microsoft для использования в Windows 10.

            Кроме этого, существуют ещё отдельные сценарии получения HLK-подписи (необходимой для драйверов в Windows Server 2016) и/или WHQL, но с этими двумя зверьками я пока не смог разобраться, даже не уверен, одна это вещь или две разных. В любом случае, для этого типа подписи надо в дополнение к вышеописанному проходить специальный набор тестов, и вот там всё уже гораздо сложнее. Но для простого обеспечения работоспособности драйвера в Win10 это не является необходимым требованием.


  1. CaptainFlint
    01.08.2016 19:16

    2. Начать процесс сертификации драйвера по процедуре Extended Validation (EV) Code Signing Certificate. Все драйверы, которые планируется загрузить для проверки, должны быть подписаны сертификатом EV.

    1. Не «начать процесс сертификации», а отправить драйвер на подписывание. Это разные процедуры.
    2. EV-сертификатом надо подписывать не сами драйверы, а CAB-архив, в который они упаковываются для отправки на подпись.


  1. psyriccio
    01.08.2016 21:25

    На работе и дома ArchLinux, на всех компьютерах. Навязывать или советовать не берусь, но и жаловаться мне не на что ))) А почитаешь, что про ubuntu, что про windows — так убеждаешься в правильности выбора лишний раз.


    1. Meklon
      01.08.2016 22:13

      На Kubuntu все норм) последний релиз очень хорош.


    1. geekmetwice
      02.08.2016 00:32

      Имея узкие потребности (или непритязательный характер), можно сидеть хоть в DOS. Увы, чем дольше работаешь с компом, тем шире круг задач и разбаловавшись простотой GUI, уже не полезешь кодировать фильм с 50 аргументами командной строки.

      Хотя… чего все так кудахчут с этой десяткой? Поставь Win7 и живи счастливо!


      1. lieff
        02.08.2016 00:58

        Ну вроде как многие так и делают, Win7 до сих пор самая популярная. Но это можно лишь временно, придет время, поддержка закончится, перестанут приходить секурити обновления, куда-то деваться придется.


        1. creker
          02.08.2016 01:47

          Семерка быстро сдает позиции и в том же стиме уже довольно сильно отстает от 10, которая занимает первое место. И данная новость ровным счетом никак и ничем не отпугивает. Наоборот, такое решение можно только приветствовать.


        1. geekmetwice
          02.08.2016 03:41

          та… эти обновления! Немного толку, если ДО СИХ ПОР венда дырява для любой опытной команды хацкеров. Куда важнее, если не будет дров! Но тут уже производителям думать — гадить себе в продажи «ущемлением» семёрки или дружно с M$ (за откаты, конечно) тянуть всех в десятое измерение.


          1. qw1
            03.08.2016 00:52
            +1

            Наоборот — старая железка не работает на десятке. Хочешь Win10 — купи новую железку. Пиаришь Win10 — растут продажи.


            1. geekmetwice
              03.08.2016 17:41

              Хм… вы сами свою логику понимаете?
              Есть громадная база юзеров на старом железе и семёркой. Производители принтеров, хардов, клавиатур, моников — им всем пофиг десятка — им важны ВСЕ юзеры, с которыми совместимо их железо. Зачем делать 10-only решение, когда можно охватить практически весь рынок??


              1. qw1
                03.08.2016 22:38

                Вот есть у меня принтер, работающий под Win7. MS месяц назад обновила мне Win7 до 10 и я не заметил, что принтер отвалился.
                Если бы драйвера были под все ОСи, я бы скачал новый драйвер и всё. А так, мне надо покупать новый принтер (откатить Win назад — не вариант, по разным причинам)


              1. vlivyur
                04.08.2016 13:15

                Им не пофиг. Под одну систему (с вариациями) поддерживать дрова или под две (хотя до конца гарантии Win7 ещё как бы будет поддерживаться). Хард и клава скорее всего работать будут. Принтер (особенно если софтовый) — лотерея.


                1. geekmetwice
                  04.08.2016 23:05

                  Проблема в том, что намного дешевле держать даже полудохлый, но «семёрочный» драйвер (охватывая миллионы юзеров-покупателей), чем сидеть с одним «десятым» и молиться, чтобы юзер не запросил семёрковые дрова.
                  Плюс, сама десятка — без году неделя, сравните это с годами семёрки и сколько «специалистов по программированию дров» она наплодила!
                  Элементарная экономика: чем шире охват аудитории, тем выше вероятность, что твой товар купят. Это в России ввиду полной «бесплатности» венды люди меняют её как перчатки. Буржуи, купив семёрку, тысячу раз дёрнут производителя «а у вас для 7-ки дрова есть?».
                  Ну и плюс очевидный фэйл винды-10 — железоклепатели не могут этого не видеть, поэтому я за семёрку спокоен.


                  1. creker
                    04.08.2016 23:24
                    +2

                    Семерка стремительно теряет рынок, потому спокойствия тут не получится, а в игровом секторе она уже уступила лидерство. И РФ здесь не при чем.


                    1. geekmetwice
                      05.08.2016 20:04

                      > Семерка стремительно теряет рынок

                      Правда? Это вам в отделе маркетинга MS рассказали? :) А я как ни посмотрю, народ ставит 10-ку, плюётся, сносит, ставит заново 7 и продолжает жить дальше. Это не говоря про ЛИЧНОЕ высказывание какой-то шишки из MS про «не очень впечатляющие» продажи десятки. Хотите поспорить с MS?


      1. psyriccio
        04.08.2016 18:00

        Потребности более чем широкие, что касается меня. Зачем 50 аргументов, когда есть куча gui-морд для ffmpeg? Так вам простоту GUI или широкий круг решаемых задач? Это часто вещи противоположные.


  1. merlin-vrn
    02.08.2016 08:43

    Вот буквально чуть менее недели назад столкнулся с ситуацией «под (актуальную) винду работоспособных дров нет, завели под (актуальный) линукс» (принтер Epson L100). А с нововведениями ситуация с драйверами в винде ещё сильнее ухудшится, что бы там ни говорили.

    Например, вот что будет с паравиртуальными драйверами KVM от проекта Fedora?


    1. navion
      02.08.2016 11:23

      Red Hat их давно подписал и кросс-сертификат Verisign действует до 2020 года. Но даже без него с KVM [пока] проблем не будет из-за отсутствия поддержки Secure Boot — он пока есть только в Hyper-V и должен появиться в ESXi 6.5.


      1. navion
        02.08.2016 11:28
        +1

        Нашел отличный FAQ по подписыванию бинарников в Windows:
        Practical Windows Code and Driver Signing


        1. lieff
          02.08.2016 13:42

          «If you are new to the industry and want to start making USB devices, the vendor ID from the USB-IF will cost you $5000 and the code signing certificate will probably cost a few hundred dollars per year.»

          Нормально так, для независимых разработчиков самое то)


          1. navion
            02.08.2016 13:51

            Про USB есть другой FAQ: производители чипов бесплатно дают клиентам PID под своим VID и есть диапазон от Lakeview Research.


            1. merlin-vrn
              02.08.2016 14:47

              Да ладно, я вот https://github.com/obdev/v-usb/blob/master/usbdrv/USB-IDs-for-free.txt использовал (конечно, когда игрался с V-USB).