Все драйверы режима ядра для Windows 10 (1607) теперь должны быть подписаны Microsoft



    Драйвера, подписанные 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 и подписывать сертификат самостоятельно, устанавливая драйвер при помощи соответствующего инструмента.

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

    Как вы относитесь к этой инициативе?
    Поделиться публикацией
    Комментарии 104
      +7
      Это ж сколько ценного старого (или просто опенсорсного) софта перестанет работать…
        0
        На устройствах Microsoft Surface, где SecureBoot неотключаем.

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

          на Surface Pro Secure Boot прекрасно отключается. Не отключается только на тех, которые на армах, но про них уже все давно забыли.
          0
          Драйвера, получившие кросс-сертификат до 29 июля 2015 года, остаются валдиными.
          +5
          Вот теперь я точно не буду обновлять Windows — 99% драйверов в моей системе точно никогда не получат подпись — просто потому, что это драйвера для крайне специфичных девайсов, которые уже давно не поддерживаются производителем, а альтернативы неадекватно дорого, если вообще есть…
            +1
            для обновления нету такого ограничения, в статье об этом написано…
              +2
              Интересно, если для обновления нет такого, то скорее всего это некий флаг, хранящийся скорее всего в реестре. Что помешает инсталляшкам при установке просто сбрасывать его?
                +1
                Что помешает МС запретить его менять? Другое дело, что может появится некое стороннее ПО от третьих лиц, благодаря которому это станет возможным.
                  +1
                  Что мешает МС сделать это ограничение и для уже установленных драйверов?
                    0
                    Помешать врядли удастся. psexec достаточно забандлить, и можно выполнять команды от имени SYSTEM (благо для инсталляции драйверов всё равно нужны права админа, а для psexec этого вполне достаточно для получения прав SYSTEM). Вы думаете, что и от SYSTEM заблокируют изменение флага? Как, интересно? От SYSTEM-а можно и права доступа переписывать как душе удобно.
                  +1
                  не факт, что в версии 1608 это не будет неизменным.
                    0
                    Версии вида 1511 и 1607 означают год и месяц выпуска Windows 10, а следовательно версии 1608 не может быть в принципе. Если уж влезаете в подобную тему, то потрудитесь хотя бы изучить вопрос.
                      0
                      Не понял. А почему не может быть?
                        +2
                        Т.е. августа в этом году не будет?
                          0
                          Т.е. 1511 и 1607 это месяца подписания сборок и в 1608 точно не будет таковой, следующая будет примерно 17(03-05)
                    0
                    Не проще ли не включать SecureBoot?

                    ПК с отключенным режимом Secure Boot также будут пропускать установку таких драйверов;
                    +4
                    Пока ребята выпускают в продуктив ТАКИЕ дыры, эта ОС не станет безопасной)

                    Новый метод обхода UAC в Windows 10 позволяет подключить вредоносную DLL-библиотеку
                    http://www.securitylab.ru/news/483201.php
                      +2
                      И это мы даже копаем неглубоко, взять тот же PowerWare через макросы MS Office и дальше в powershell.
                      Ну как можно при запрещенном явно ps.exe все равно запускать его через cmd.exe

                      — У нас дыра в безопасности!
                      — Ну хоть что-то у нас в безопасности!!! ©
                      +4
                      Чем больше читаю новостей про эту десятку, тем чаще в голове возникает мысль «какое счастье что в мире есть линукс!»
                        +3
                        Линукс есть и в Десятке :)
                          0
                          А гуи в нем работает? Когда последний раз проверял, убунту на нем пускали как консольный сервер, к которому подсоединялись через VNC. Я такое уже давно делал через XMing, пока это для консольных утилит, не более.
                        +7
                        вообще-то в ядре линукса есть аналогичный флаг, запрещающий загружать неподписанные модули при включенном Secure Boot. И например, в Ubuntu 16.04 он установлен
                          0
                          Вот только с линуксом 1) практически все драйвера идут вместе с ядром 2) всякие принтеры работают в юзерспейсе через libusb 3) остальные ядерные модули тоже поставляются через штатный репозиторий. Проблемы подписать практически все нужное нет.

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

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

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

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

                              То есть ключи дефолтные там уже прошиты должны быть в железе, обычно только от мс. В биосе так же обычно есть возможность добавить другие ключи.
                              Подозреваю опция убунты, это способ обхода через выбитый у мс подписанный загрузчик, когда то видел такие новости.
                              Так что это как раз винда палки в колеса вставляет.
                                0
                                http://www.opennet.ru/opennews/art.shtml?num=44950

                                Всё, можно отключать Secure Boot (:
                                0
                                «Всякие принтеры» и в винде могут работать в юзерспейсе через UMDF. Когда я последний раз проверял, UMDF-драйверы принудительно подписывать было не нужно.
                                0
                                У линукса есть fuse. И все нестандартное(да и много чего стандартного) работает через него.
                                  +1
                                  В линуксе можно установить или собрать неподписанное ядро, и оно загрузится в Secure Boot, просто граб закроет доверенную сессию. И все модули можно будет грузить, как обычно. А Windows такой возможности не предоставляет (точнее, предоставляет, но с отключением части функций и показом водяного знака).
                                +2
                                А возможность отключить проверку сетрификатов при загрузке остается?
                                Пользователям конечно без подписи уже давно не отшипишь, но хоть для отладочных целей.
                                Увы теперь даже такие элементарные вещи:
                                Аналог strace — нужен драйвер.
                                Песочница для произвольного кода — нужен драйвер.
                                А в самом дравере надо как-то обходить PatchGuard или как там сейчас это делается.

                                А ведь я помню еще времена когда strace под виндой был и работал.
                                А теперь, разве что drmemory с динамической ретрансляцией кода остался, и то сейчас пробую drstrace.exe — крашится.
                                Увы, увы, увы.
                                  +5
                                  В полупривате, кстати, гуляет один интересный набор из отозванного китайского сертификата и программы, позволяющей подписать им драйвер. Так вот, подписанный этим способом драйвер загружается на данный момент в любых 64-разрядных Windows со всеми включёнными защитами. Несмотря на то, что сертификат давно протух и отозван.
                                    +1
                                    Возможно (это уже мои домыслы), недоработка Windows, которую использует эта программа (потому что никак не должен признаваться валидным файл, подписанный просроченным и отозванным сертификатом), настолько фундаментальна, что проще запретить загрузку непроверенных Microsoft-ом драйверов, чем исправлять её.

                                    Ещё разок о масштабах проблемы: можно взять сколь угодно вредоносный драйвер, подписать его практически общедоступной утилитой и Windows, не пикнув, загрузит его.
                                      0
                                      По каким словам гуглить? Самостоятельно смог найти только ваши сообщения о том что такая утилита есть.
                                    +4
                                    С выходом 10-ки и правда все чаще задумываюсь о миграции на Linux.
                                    Второй Apple мне не нужен.
                                      +2
                                      Ну кто-то же должен писать нормальный софт под Линукс. Как напишете пакет софта для повседневных бытовых задач, от которого не хочется плеваться — позовите ;)
                                        +3
                                        Когда говорят про повседневные бытовые задачи — у меня на уме 2 вещи: Libre Office и Steam.
                                        И то и другое есть, Libre Office я использую уже давно и на винде, (уф, про таблицы на VB можно забыть).

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

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

                                        А вам конкретно чего не хватает?
                                          +4
                                          Удобного файлового менеджера нет (Krusader — почти, но иногда бесит невозможность выполнить элементарные действия).
                                          Удобного аудиоплеера с медиабиблиотекой нет (3 года назад не было, когда я последний раз искал, если быть точным). Спасал АИМП под Wine, но работал он не без глюков.
                                          Нормальной IDE для разработки на С++ не было! Не знаю, что там сейчас CLion может, а вот Qt Creator регулярно использую. Там отличный редактор, но как доходит до отладки — можно сразу вешаться.
                                          Ну и для игр однозначно нужна Винда, если хочешь следить за новинками и играть во всё.
                                            +1
                                            И вообще, мне не нравится программировать под Линукс. Не спрашивайте, почему, это просто размытое собирательное ощущение от 5 лет попыток, конкретные примеры уже забылись. Если нужно запрограммировать что-то системное, то на Винде я уверен, что найду решение либо в MSDN, либо на StackOverflow, и оно будет работать. На Линуксе — как повезёт. Из свежего — нужно сделать file system watcher, и в Линукс-версии своего приложения я пока что эту затею бросил. На Винде это делается достаточно легко за 1.5 часа с отладкой и многопоточностью.
                                              +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
                                                  Коллега, на 100% согласен. Сам пришёл к такому же сценарию работы.
                                                  Не знаю, в GDB ли проблема, или в обёртках над ним, но ни одного нормально работающего GUI для отладки через GDB я ещё не видел :(
                                                    0
                                                    QtCreator вполне пристоен, и может использоваться для не-Qt-проектов. До Студии, конечно, не дотянет, но пользоваться можно.
                                                      +1
                                                      Им и пользуюсь, но с отладкой там туго. Она есть, но всё время хромает и спотыкается.
                                                        +2
                                                        Не знаю, у меня все совершенно ок под gdb + qtcreator. ЧЯНД?
                                                          0
                                                          А если в вектор заглянуть? А если в нём ещё и лежит что-то посложнее, чем int?
                                                            0
                                                            Для кастомных типов я смог решить эту проблему с помощью debug helpers
                                                            http://plohrmann.blogspot.ru/2013/10/writing-debug-visualizers-for-gdb.html

                                                            Для стандартных типов QT/C++ в последних QTCreator проблем быть не должно, хотя помнится там был нюанс с опцией «Load system GDB pretty printers».
                                                              0
                                                              Он у меня на всех машинах (не меньше трёх) систематически глючит и вообще отказывается показывать переменные. Либо показывает только адрес переменной в памяти, а значения нет.
                                                                0
                                                                А версию из репозиттария используете или отсюда? https://www.qt.io/ru/download-open-source/
                                                                В репах уж больно старое.
                                                                  0
                                                                  Последнюю через Qt Maintenance Tool. Я не настоящий Линукс-разработчик, сборкой из репозиториев не развлекаюсь :) Либо инсталлятор, либо apt-get.
                                                              0
                                                              Куда угодно. Питоновские хелперы цепляются к gdb запросто. (Посмотрите, как устроены хелперы для классов Qt).
                                                              Сперва тоже неоднозначно относился, к тому, как работает gdb, потом разобрался и все стало вполне юзабельно.
                                                              Хожу по ядру linux из-под qtcreator — очень удобно.
                                                              Сожалею, но более комментировать не буду — ограничение на 1 коммент в час.

                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                          0
                                                          У gdb в отличие от его виндовых товарищей cdb/ntsd расширяемость гораздо выше. Плюс отсутствие наркоманского синтаксиса и прочих причуд встроенного макроязыка. Единственный плюс этой пары — возможность по символам скачать исходники автоматом.
                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                        0
                                                        С аудио пеерами никогда проблем не знал, неужто ни один не приглянулся? http://www.tecmint.com/best-linux-audio-music-players/
                                                        По всему остальному согласен. Far и под wine приспособил, следующий наиболее подходящий — Double Commander, отладка в Qt Creator тоже менее удобна, в определенной степени я пробелмы решил, но из коробки ситуация хуже.
                                                          –1
                                                          > Удобного файлового менеджера нет
                                                          Попробуйте Double Commander
                                                            0
                                                            >Удобного файлового менеджера нет
                                                            Вот замечательный http://silk.apana.org.au/fc2development.html
                                                              +1
                                                              Мне Clementine нравится как плеер. Заодно без iTunes легко заливает музыку из своих файлов на iPod. Коллеге понадобилось вдруг.
                                                                0
                                                                Неплохой, но что-то мне в нём не понравилось (смотрел года два назад). Скорее всего, что-то у него с lossless-форматами не срослось. Возможно, .cue плохо парсил.
                                                                  0
                                                                  Что-то было, да.
                                                                    0
                                                                    С Lossless и вариациями .cue я до сих пор не могу найти альтернативны всеядному аимпу даже на винде, который парсит всякие вариации на тему «в cue указано wav/flac, а по факту flac/ape» и другую экзотику, которую может выдать EAC с некоторыми дисками. Как-то пытался пересесть на фубар (тут еще сыграла роль нативной передачи PCM и DSD на ЦАП, аимп не умеет мешать скажем 44,1 и 96, чтобы на каждом файле менялась выдаваемая частота дискретизации) — но увы, некоторые .cue он не читал, потом на Clementine (привлекла хорошая библиотека, плюс кросплатформенность с планами по переходу на Linux) — аналогично :(
                                                                      0
                                                                      О да, вот эти корявые .cue выводят из себя. Спасибо, в 99% случаев АИМПу всё-таки удаётся догадаться, что там должно было быть :)
                                                                      А насколько проще было бы, если бы правилами популярных торрент-трекеров были запрещены раздачи с неправильными .cue…
                                                                    0
                                                                    image
                                                                  +1
                                                                  Если же говорить про программерские задачи, аналога strace на винде не подскажите?
                                                                  procmon.exe
                                                                    0
                                                                    Пользуюсь им, хорошая утилита, но это не вывод вызова всех ядерных функций.
                                                                    Вывод аналога strace должен показать вызовы всех syscalls из SDT. Вот примерно такой вывод должен быть:
                                                                    http://drmemory.org/docs/page_drstrace.html

                                                                    drstrace единственная извесная мне оставшаяся альтернатива, однако она использует ретрансляцию кода и рабоатет это весьма медленно, перехват не гарантирован, если ретранслятор немного запутать. Ну и попросту оно начало крашиться.
                                                                    Вообще подобные утилиты уже давно выходят из строя с завидной регулярностью.
                                                                      0
                                                                      Существует API Monitor, но я его серьёзно не исследовал.
                                                                        0
                                                                        Я исследовал. Он хукает Ntdll.dll, вобщем работает, но при остановке монитора подопытный процесс крашится.
                                                                        Проблема в том, что то что я мониторю, вызывает syscalls напрямую, минуя обертки Nt*.
                                                                        strace мониторит именно что syscalls, нужно тоже самое в винде.
                                                                      0
                                                                      Есть ограниченное логирование всех системных вызовов штатными средствами: флаг 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
                                                                        Да, плюсы этого метода — он не требует драйвера, не поломается в ближайшем будующем.
                                                                        Минусы — это скорее аналог 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
                                                                        }
                                                                        



                                                                        Но увы, работает это не всегда. Так же буффера могут переполняться и теряться, если их недостаточно быстро обрабатывать\сохранять, то есть 100%ных гарантий тут никаких.
                                                                  0
                                                                  Браузеров и VLC (SMPlayer по вкусу) под Linux уже давно наделали. Это для повседневностей.
                                                                –2

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

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

                                                                    Что до самой процедуры, то давно пора было. Включить все проверки по-умолчанию и лишь оставить возможность отключения вручную. Secure Boot до самых драйверов. Кому сильно надо, тот secure boot отключит и будет работать с неизвестными железками дальше.
                                                                      +1
                                                                      Как быть с 0day в драйверах антивирусов и другого софта?
                                                                        0
                                                                        Я все еще не вижу проблемы. Сделают заплатку, подпишут, выпустят. Для рядового пользователя ничего не изменилось и этих изменений он не заметит. Разработчики драйверов всего лишь будут проходить небольшой этап перед релизом. Собственно, крупные разработчики и так свое подписывали. Что драйвера, что бинарники.
                                                                          0
                                                                          Тогда к чему это всё?
                                                                            0
                                                                            Ключи не смогут украсть или подписывать ими драйвера, не одобренные напрямую MS.
                                                                            Например, есть ключ для подписи драйверов у ReactOS, им подписывали драйвер утилиты Process Hacker.
                                                                            Теперь не будет такой возможности.
                                                                              0
                                                                              Никакого одобрения там нет. Подписывание происходит в течение нескольких минут, поэтому очевидно, что там не человек проверяет, а работает некий скрипт, который всё подписывает автоматом.

                                                                              Максимум, там может присутствовать какая-нибудь проверка по чёрному списку, но если у MS были бы претензии к конкретным драйверам, они бы первым делом заблокировали сертификаты, которыми эти драйверы подписывались.
                                                                        0
                                                                        несколько дней на сертификацию затеряются напрочь
                                                                        Нужна не сертификация, а просто идентификационная подпись от Microsoft, она получается почти автоматом в течение 5–10 минут, никакой сертификации не требуется.
                                                                          0
                                                                          Вроде же на самом сайте написано, что EV требует не просто подписи, а именно сертификации и прохождения на ряд требований.
                                                                            +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 это не является необходимым требованием.
                                                                      0
                                                                      2. Начать процесс сертификации драйвера по процедуре Extended Validation (EV) Code Signing Certificate. Все драйверы, которые планируется загрузить для проверки, должны быть подписаны сертификатом EV.

                                                                      1. Не «начать процесс сертификации», а отправить драйвер на подписывание. Это разные процедуры.
                                                                      2. EV-сертификатом надо подписывать не сами драйверы, а CAB-архив, в который они упаковываются для отправки на подпись.
                                                                        0
                                                                        На работе и дома ArchLinux, на всех компьютерах. Навязывать или советовать не берусь, но и жаловаться мне не на что ))) А почитаешь, что про ubuntu, что про windows — так убеждаешься в правильности выбора лишний раз.
                                                                          0
                                                                          На Kubuntu все норм) последний релиз очень хорош.
                                                                            0
                                                                            Имея узкие потребности (или непритязательный характер), можно сидеть хоть в DOS. Увы, чем дольше работаешь с компом, тем шире круг задач и разбаловавшись простотой GUI, уже не полезешь кодировать фильм с 50 аргументами командной строки.

                                                                            Хотя… чего все так кудахчут с этой десяткой? Поставь Win7 и живи счастливо!
                                                                              0
                                                                              Ну вроде как многие так и делают, Win7 до сих пор самая популярная. Но это можно лишь временно, придет время, поддержка закончится, перестанут приходить секурити обновления, куда-то деваться придется.
                                                                                0
                                                                                Семерка быстро сдает позиции и в том же стиме уже довольно сильно отстает от 10, которая занимает первое место. И данная новость ровным счетом никак и ничем не отпугивает. Наоборот, такое решение можно только приветствовать.
                                                                                  0
                                                                                  та… эти обновления! Немного толку, если ДО СИХ ПОР венда дырява для любой опытной команды хацкеров. Куда важнее, если не будет дров! Но тут уже производителям думать — гадить себе в продажи «ущемлением» семёрки или дружно с M$ (за откаты, конечно) тянуть всех в десятое измерение.
                                                                                    +1
                                                                                    Наоборот — старая железка не работает на десятке. Хочешь Win10 — купи новую железку. Пиаришь Win10 — растут продажи.
                                                                                      0
                                                                                      Хм… вы сами свою логику понимаете?
                                                                                      Есть громадная база юзеров на старом железе и семёркой. Производители принтеров, хардов, клавиатур, моников — им всем пофиг десятка — им важны ВСЕ юзеры, с которыми совместимо их железо. Зачем делать 10-only решение, когда можно охватить практически весь рынок??
                                                                                        0
                                                                                        Вот есть у меня принтер, работающий под Win7. MS месяц назад обновила мне Win7 до 10 и я не заметил, что принтер отвалился.
                                                                                        Если бы драйвера были под все ОСи, я бы скачал новый драйвер и всё. А так, мне надо покупать новый принтер (откатить Win назад — не вариант, по разным причинам)
                                                                                          0
                                                                                          Им не пофиг. Под одну систему (с вариациями) поддерживать дрова или под две (хотя до конца гарантии Win7 ещё как бы будет поддерживаться). Хард и клава скорее всего работать будут. Принтер (особенно если софтовый) — лотерея.
                                                                                            0
                                                                                            Проблема в том, что намного дешевле держать даже полудохлый, но «семёрочный» драйвер (охватывая миллионы юзеров-покупателей), чем сидеть с одним «десятым» и молиться, чтобы юзер не запросил семёрковые дрова.
                                                                                            Плюс, сама десятка — без году неделя, сравните это с годами семёрки и сколько «специалистов по программированию дров» она наплодила!
                                                                                            Элементарная экономика: чем шире охват аудитории, тем выше вероятность, что твой товар купят. Это в России ввиду полной «бесплатности» венды люди меняют её как перчатки. Буржуи, купив семёрку, тысячу раз дёрнут производителя «а у вас для 7-ки дрова есть?».
                                                                                            Ну и плюс очевидный фэйл винды-10 — железоклепатели не могут этого не видеть, поэтому я за семёрку спокоен.
                                                                                              +2
                                                                                              Семерка стремительно теряет рынок, потому спокойствия тут не получится, а в игровом секторе она уже уступила лидерство. И РФ здесь не при чем.
                                                                                                0
                                                                                                > Семерка стремительно теряет рынок

                                                                                                Правда? Это вам в отделе маркетинга MS рассказали? :) А я как ни посмотрю, народ ставит 10-ку, плюётся, сносит, ставит заново 7 и продолжает жить дальше. Это не говоря про ЛИЧНОЕ высказывание какой-то шишки из MS про «не очень впечатляющие» продажи десятки. Хотите поспорить с MS?
                                                                                    0
                                                                                    Потребности более чем широкие, что касается меня. Зачем 50 аргументов, когда есть куча gui-морд для ffmpeg? Так вам простоту GUI или широкий круг решаемых задач? Это часто вещи противоположные.
                                                                                  0
                                                                                  Вот буквально чуть менее недели назад столкнулся с ситуацией «под (актуальную) винду работоспособных дров нет, завели под (актуальный) линукс» (принтер Epson L100). А с нововведениями ситуация с драйверами в винде ещё сильнее ухудшится, что бы там ни говорили.

                                                                                  Например, вот что будет с паравиртуальными драйверами KVM от проекта Fedora?
                                                                                    0
                                                                                    Red Hat их давно подписал и кросс-сертификат Verisign действует до 2020 года. Но даже без него с KVM [пока] проблем не будет из-за отсутствия поддержки Secure Boot — он пока есть только в Hyper-V и должен появиться в ESXi 6.5.
                                                                                      +1
                                                                                      Нашел отличный FAQ по подписыванию бинарников в Windows:
                                                                                      Practical Windows Code and Driver Signing
                                                                                        0
                                                                                        «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.»

                                                                                        Нормально так, для независимых разработчиков самое то)
                                                                                          0
                                                                                          Про USB есть другой FAQ: производители чипов бесплатно дают клиентам PID под своим VID и есть диапазон от Lakeview Research.
                                                                                            0
                                                                                            Да ладно, я вот https://github.com/obdev/v-usb/blob/master/usbdrv/USB-IDs-for-free.txt использовал (конечно, когда игрался с V-USB).

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

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