ntvdm exe что это такое
Что такое NTVDM.EXE? Это безопасно или вирус? Как удалить или исправить это
Что такое NTVDM.EXE?
ntvdm.exe это исполняемый файл, который является частью Microsoft Windows, разработанный Корпорация Microsoft, Версия программного обеспечения для Windows: 5.1.2600.5512 обычно 2330384 в байтах, но у вас может отличаться версия.
NTVDM.EXE безопасен, или это вирус или вредоносная программа?
Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, для NTVDM.EXE его путь будет примерно таким: C: \ Program Files \ Microsoft Corporation \ Microsoft Windows \ NTVDM.EXE.
Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.
Наиболее важные факты о NTVDM.EXE:
Если у вас возникли какие-либо трудности с этим исполняемым файлом, вы должны определить, заслуживает ли он доверия, перед удалением NTVDM.EXE. Для этого найдите этот процесс в диспетчере задач.
Найти его местоположение и сравнить размер и т. Д. С приведенными выше фактами
Если вы подозреваете, что можете быть заражены вирусом, вы должны немедленно попытаться это исправить. Чтобы удалить вирус NTVDM.EXE, необходимо скачайте и установите приложение полной безопасности, как это, Обратите внимание, что не все инструменты могут обнаружить все типы вредоносных программ, поэтому вам может потребоваться попробовать несколько вариантов, прежде чем вы добьетесь успеха.
Могу ли я удалить или удалить NTVDM.EXE?
Не следует удалять безопасный исполняемый файл без уважительной причины, так как это может повлиять на производительность любых связанных программ, использующих этот файл. Не забывайте регулярно обновлять программное обеспечение и программы, чтобы избежать будущих проблем, вызванных поврежденными файлами. Что касается проблем с функциональностью программного обеспечения, проверяйте обновления драйверов и программного обеспечения чаще, чтобы избежать или вообще не возникало таких проблем.
Однако, если это не вирус, и вам нужно удалить NTVDM.EXE, вы можете удалить Microsoft Windows с вашего компьютера, используя его деинсталлятор. Если вы не можете найти его деинсталлятор, то вам может потребоваться удалить Microsoft Windows, чтобы полностью удалить NTVDM.EXE. Вы можете использовать функцию «Установка и удаление программ» на панели управления Windows.
Распространенные сообщения об ошибках в NTVDM.EXE
Наиболее распространенные ошибки NTVDM.EXE, которые могут возникнуть:
Как исправить NTVDM.EXE
Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.
Чтобы помочь вам проанализировать процесс NTVDM.EXE на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.
Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:
Загрузите или переустановите NTVDM.EXE
Вход в музей Мадам Тюссо не рекомендуется загружать заменяемые exe-файлы с любых сайтов загрузки, так как они могут содержать вирусы и т. д. Если вам нужно скачать или переустановить NTVDM.EXE, то мы рекомендуем переустановить основное приложение, связанное с ним. Microsoft Windows,.
Основные возможности 5 в Windows 10
Информация об операционной системе
Ошибки NTVDM.EXE могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:
990x.top
Простой компьютерный блог для души)
ntvdm.exe что это такое и почему грузит процессор? (NT Virtual DOS Machine)
Приветствую друзья! Вы знаете, я иногда пишу о неизвестных процессах. И часто у меня получается узнать что к чему.. Но вот сегодня столкнулся с процессом ntvdm.exe, о котором люди писали в интернете как год назад, так и десять.. Причины, почему он грузит проц — также много, нет одной единственной, поэтому ситуация сложная…((
Разбираемся
ntvdm.exe — процесс виртуальной дос-машины NT Virtual DOS Machine. Он запускается тогда, когда используются дос-программы. Что самое интересное, процесс может остаться висеть в памяти, даже если уже не работает дос-программа на тот случай, если виртуальная дос-машина снова потребуется.
На вики написано что компонент содержится только в 32-битных версиях виндовса:
Также из информации выше мы видим что.. один процесс ntvdm.exe отвечает за выполнение одной дос-программы.
В общем все понятно — ntvdm.exe это процесс/компонент, который нужен чтобы запустить старую дос-программу, другими словами эмулятор.
Почему ntvdm.exe грузит процессор? Прерывание INT 16H
Старые досовские программы постоянно обрабатывают прерывание INT 16H, которое ожидает нажатие клавиш даже если пользователь ничего не делает. Это как одна из причин, почему ntvdm.exe грузит ПК.
Но тут проблема в другом.. некоторые пользователи жалуются — у них без причины стал появляться ntvdm.exe, иногда после включения компа, при этом грузит процессор нереально. Если процесс завершить — то тормоза исчезают.
Вот примерно такая картина может наблюдаться. Оч важно понимать — если при этом вы завершаете процесс и после этого нет проблем, то.. я для вас написал способ внизу как отключить процесс навсегда))
Часто нахожу упоминание ntvdm.exe на антивирусных форумах, поэтому можно сделать вывод.. что иногда под процессом скрывается вирус. Другими словами — маскируется, чтобы вы подумали что это виртуальная машина для досовских прог..
Единственное что мне еще пришло в голову — может написана специальная вирусная прога в формате досовской и она запускается в виртуальной машине. Смысл в том, что таким образом антивирус может не понять что это вирус..
В общем ребят, я понял одно — четкого ответа как решить проблему с загрузкой в интернете нет. Кроме как завершить процесс. Это может быть как вирус, так и системный глюк.
У одного чела процесс начал грузить после того как он в проге Frigate запускал консоль — она тупо потом падала, а процесс ntvdm.exe грузил ПК на 99%.
На самом деле все сложнее, чем я думал
Все дело в том, что:
И что же делать?
Я напишу то, чтобы сделал я в таком случае:
Какими утилитами я советую проверить ПК (название утилиты это ссылка на офф сайт):
Хм, интересную картинку нашел:
Возможно компонент NTVDM можно вполне легально отключить в компонентах. Чтобы открыть: зажимаете Win + R, пишите команду appwiz.cpl, нажимаете ОК > откроется окно, там будет кнопка Включение или отключение компонентов Windows > попробуйте там поискать NTVDM.
Переустановка Windows. Тут особо нечего говорить — дело нудное, собственно не так переустановка, как потом устанавливать повторно все проги, настраивать их.. Дам только такой совет — по возможности ставьте проги, скачанные с офф сайтов либо из безопасных источников. И после установки винды поставьте сразу антивирус хороший, не реклама, но лично я советую Каспера, тем более что есть полностью бесплатная версия его. Или на крайняк Аваст.
Принудительное отключение процесса
Отключение ntvdm.exe в корне. Да, можно отключить в корне этот процесс. Нужно просто его переименовать. Но так, как он системный — у вас это сделать не получится. Нужна спец прога — Unlocker, она бесплатная, ходовая версия — 1.9.2, в интернете есть на каждом углу, но советую качать с проверенного софт-портала. Теоритически способ подойдет и для Windows XP, ибо утилита поддерживает эту операционку.
Очень важно создать точку восстановления. Да, небольшой риск есть что начнутся глюки несовместимые с комфортной работой за ПК)) Поэтому создаем точку — зажимаем Win + R, пишем команду:
Нажали ОК. Далее появится окошко — активируете вкладку Защита системы и выбираете системный диск:
Если в колонке Защита у вас будет отключено — нажмите настроить и включите защиту.
Теперь нажимаем кнопку Создать:
И пишем название точки. Советую писать на понятном языке, например:
До отключения ntvdm.exe через Unlocker
На самом деле точка восстановления — оч полезный инструмент, которые многие почему-то игнорируют..((
Нажали Создать и точка быстренько создалась:
Вернемся к нашему делу. Устанавливая Unlocker будьте внимательны — лично у меня еще хотел установиться какой-то Дельта тулбар:
Поэтому снимаем галочки чтобы эта ерундовина не ставилась))
Утилита установится за секунду. Теперь самое главное — будем успокаивать процесс ntvdm.exe. Но у меня этого процесса нет. Поэтому для примера я возьму.. процесс SearchIndexer.exe:
Процесс относится к индексированию, запущен от имени система, вам лично не советую его отключать. Это только в целях эксперимента))
Итак, утилита у нас установлена. Процесс в диспетчере — нашли. Теперь нажимаем по нему правой кнопкой и выбираем пункт Открыть место хранения файла:
Откроется папка, в ней будет выделен файл:
Если у вас вдруг проблема с ntvdm.exe будет на Windows 10 — то действия аналогичны.
Нажимаем правой кнопкой по файлу и выбираем пункт Unlocker:
Теперь выбираем Переименовать:
Далее нужно указать имя. Советую указывать так, чтобы сохранилось оригинальное, назовите например так:
В моем случае это будет:
Нажали ОК. Потом еще раз нажали ОК. Результат:
Файл переименован. Теперь он никак не сможет запуститься. Вообще. Тоже самое вам нужно сделать с ntvdm.exe.
Внимание! У вас файл может быть не ntvdm.exe, а просто ntvdm — означает что скрыт показ расширений файлов. Тогда просто переименуйте в ntvdm_off и все.
У вас при переименовании может потребоваться перезагрузка. Это нормальное явление.
Таким образом вы можете полностью отключить ntvdm.exe, но.. могут ли быть проблемы? В принципе да:
А так в принципе проблемы могут отсутствовать. Но увы, это все зависит от установленного софта на вашем ПК. Именно поэтому сделать точку восстановления — просто обязательно.
Вывод
Надеюсь информация помогла. Удачи и добра!
ntvdm.exe что это такое и почему грузит процессор? (NT Virtual DOS Machine) : 5 комментариев
Рад что помог.
Удалить можно. Но вдруг она вам еще пригодится.
Спасибо за быстрый отзыв уважаемый 990х. Нет, саму утилиту я уже поместил в папку «проверенные программы» и оставил как важную «на века». Я имел в виду лишь деинсталяцию. В диспетчере она тоже отображается как непрерывно работающая. ПК не грузит, просто актуальна ли она без конкретной цели (ежедневно)?
1. Я точно не помню, но Unlocker не должен висеть в диспетчере. После использования — утилита не должна висеть в диспетчере.
2. Переименованные файлы либо удаленные при помощи Unlocker останутся такими же и после удаления Unlocker.
«просто актуальна ли она без конкретной цели» — неактуальна.
filecheck .ru
Вот так, вы сможете исправить ошибки, связанные с ntvdm.exe
Информация о файле ntvdm.exe
Важно: Некоторые вредоносные программы маскируют себя как ntvdm.exe, особенно, если они расположены не в каталоге C:\Windows\System32. Таким образом, вы должны проверить файл ntvdm.exe на вашем ПК, чтобы убедиться, что это угроза. Мы рекомендуем Security Task Manager для проверки безопасности вашего компьютера.
Комментарий пользователя
1 адрес которого совпадает с тем, что был у ntvdm. я не понимаю, что это за.. завершила задачу. удалила папку. подскажите как эта Мейл.ру вообще появляется на компе?
Малина
Малина
Павел
Малина
Лучшие практики для исправления проблем с ntvdm
Если у вас актуальные проблемы, попробуйте вспомнить, что вы делали в последнее время, или последнюю программу, которую вы устанавливали перед тем, как появилась впервые проблема. Используйте команду resmon, чтобы определить процесс, который вызывает проблемы. Даже если у вас серьезные проблемы с компьютером, прежде чем переустанавливать Windows, лучше попробуйте восстановить целостность установки ОС или для Windows 8 и более поздних версий Windows выполнить команду DISM.exe /Online /Cleanup-image /Restorehealth. Это позволит восстановить операционную систему без потери данных.
ntvdm сканер
Security Task Manager показывает все запущенные сервисы Windows, включая внедренные скрытые приложения (например, мониторинг клавиатуры или браузера, авто вход). Уникальный рейтинг надежности указывает на вероятность того, что процесс потенциально может быть вредоносной программой-шпионом, кейлоггером или трояном.
Бесплатный aнтивирус находит и удаляет неактивные программы-шпионы, рекламу, трояны, кейлоггеры, вредоносные и следящие программы с вашего жесткого диска. Идеальное дополнение к Security Task Manager.
Reimage бесплатное сканирование, очистка, восстановление и оптимизация вашей системы.
Получаем системные привилегии с помощью ошибок в NTVDM
Обратная совместимость — вещь хорошая, но использовать ее надо в разумных пределах. Ведь до сих пор в ядре Windows можно найти код, разработанный еще в прошлом веке. Говорить о его высокой безопасности было бы глупо. И мы докажем это на примере трех privilage escalation уязвимостей, прижившихся в подсистеме виртуальной машины DOS
В 1978 году компания Intel выпустила первый процессор семейства х86, модели 8086, который предоставлял довольно ограниченную среду для исполнения 16-битного кода, известную под названием «режим реального времени» (Real mode). Вскоре после этого началась активная разработка программных решений для новой аппаратной платформы, причем как операционных систем, так и работающих в них обычных программ. Система Disk Operating System (DOS) от Microsoft быстро утвердилась в качестве ведущей рабочей среды для десктопных ПК, а приложения под эту ОС создавались и выходили на рынок в течение более десяти лет. В качестве самых известных примеров можно привести Norton Commander, ChiWriter или Quattro Pro. При разработке в 1992 году архитектуры NT для операционной системы Windows, которая использовала преимущества уже более мощного и безопасного защищенного режима (Protected Mode), одним из ключевых решений стало сохранение обратной совместимости с DOS, то есть обеспечение возможности безопасного запуска старых программ в новом графическом окружении.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
NTVDM
Созданный в Windows специальный режим совместимости получился очень функциональным. Из-за того, что он был довольно сложным компонентом как с технической стороны, так и со стороны логики работы, его появление открыло локальным пользователям много новых возможностей проведения атак, направленных на повышение своих прав в операционной системе. В NTVDM уже не раз находили и исправляли проблемы безопасности, но до сих пор в ядре остается много интересных и неисследованных возможностей. В следующем разделе мы детально рассмотрим одну из них — специфичную обработку исключений, возникающих в хост-процессе NTVDM.EXE. Тут, правда, стоит отметить, что любой потенциальный баг, который может обнаружиться в подсистеме совместимости DOS, затронет только 32-битные платформы Windows, так как 64-битные версии системы не поддерживают VDM из-за особенностей реализации режима Long Mode, в котором исполняется 64-битный код на процессорах Intel. В новых операционных системах Windows 8 и 8.1 воздействие потенциальных уязвимостей ядра нивелируется за счет того, что там эта подсистема отключена по умолчанию, а для ее запуска необходимы административные права. Тем не менее эти уязвимости можно успешно задействовать без участия пользователя на системах от Windows XP до Windows 7 32-бит (а на данный момент такие системы предположительно составляют около 50% парка всех десктопных ОС).
Режим реального времени
Поддерживать обратную совместимость с 16-битными приложениями для современного 32-битного окружения очень сложно с технической точки зрения из-за фундаментальных различий в функционировании между реальным и защищенным режимом. Сюда входят и режимы работы процессора, и ширина слов и адресов, и кодирование инструкций, и много других моментов. Иначе говоря, стандартными средствами современных операционных систем запустить устаревшие программы из 80-х не получится. С другой стороны, переключение процессора в реальный режим каждый раз при запуске 16-битной программы тоже не выход, поскольку это лишает смысла базовые установки защищенного режима, такие как разделение прав. Передача управления потенциально недоверенному коду, который работает в практически неограниченной среде исполнения и имеет прямой доступ ко всей периферии компьютера, не только создает потенциальную угрозу безопасности системы, но и лишает операционную систему контроля над компьютером, так как решение о возврате в предыдущий рабочий контекст будет приниматься именно этим старым приложением.
Режим Virtual 8086
Инженеры Intel, которые прекрасно понимали эти и многие другие связанные с обратной совместимостью проблемы, разработали еще один совершенно новый режим исполнения, назвав его Virtual 8086 (V8086), который стал важной составляющей защищенного режима. Основная особенность режима V8086 состоит в том, что для работающего в нем кода он совершенно неотличим от реального режима, но при этом полностью управляется основной операционной системой. Это позволяет запускать старые приложения в 32-битном окружении с сохранением безопасности и без негативных побочных эффектов. Эту технологию можно рассматривать в качестве механизма виртуализации для ПО DOS, в котором операционная система выполняет роль монитора виртуальной машины (Virtual Machine Monitor — VMM). VMM отвечает за создание рабочей среды и обработку критичных и привилегированных инструкций, которые использует гостевое приложение, при этом 16-битный код выполняется в специальном режиме и с нативной скоростью. Типичный, разработанный Intel порядок исполнения для операционной системы, использующей V8086, показан на рис. 1.
Рис. 1. Передача управления операционной системой при выполнении устаревших 16-битных приложений
В случае Microsoft Windows сущность «операционная система» далее распадается на два компонента: ядро и процесс NTVDM.EXE, работающий на уровне пользователя. Поддержка описанной подсистемы имеется на обоих уровнях — некоторые события, происходящие внутри устаревшего ПО, обрабатываются напрямую ядром, в то время как другим требуется некоторая помощь на уровне ring 3 (см. рис. 2). Благодаря тому что исполнение кода старого ПО изолировано в специальный процесс, ядро может легко определить, нуждается ли конкретное событие процессора в отдельной обработке, в зависимости от того, исходит оно от VDM-хоста или нет. В результате большинство процедур уровня ring 0 предоставляют дополнительные функциональные возможности при вызове их из особых процессов; в качестве одного из ярких примеров можно отметить обработчики системных прерываний (trap handlers) для x86 (такие как nt!KiTrap0c, nt!KiTrap0d, nt!KiTrap0e), системные вызовы NT (например, nt!NtVdmControl) и системные вызовы win32k.sys (например,nt!NtUserInitTask). Важно отметить, что, хотя процесс NTVDM.EXE и обрабатывается системой особым образом, он все равно наследует токен безопасности локального пользователя; это, в свою очередь, позволяет атакующему исполнять произвольный код в рамках процесса, используя всего лишь две документированные функции API — OpenProcess и CreateRemoteThread — для того, чтобы воспользоваться гипотетической уязвимостью в тех частях ядра, которые отвечают за поддержку VDM.
Рис. 2. Пример управления выполнением время исполнения устаревших 16-битных приложений в Microsoft Windows
Наконец, нельзя забывать, что NTVDM поддерживает основную часть спецификаций интерфейса защищенного режима DOS (DOS Protected Mode Interface — DPMI), то есть в дополнение к реализации режима Virtual 8086, он также может предоставлять среду исполнения (например, создавать сегменты памяти) и выполнять код защищенного режима. Следовательно, вполне может появиться код с поддержкой обработки 32-битных инструкций в ядре в дополнение к простой 16-битной эмуляции.
CVE-2013-3196 (write-what-where в nt!PushInt)
General Protection Fault
Рис. 3. Таблица диспетчеризации инструкций режима Virtual 8086, используемая обработчиком #GP
Рис. 4. Таблица диспетчеризации инструкций защищенного режима, используемая обработчиком #GP
Где собака зарыта
Базовая роль функции обработчика nt!OpcodeINTnn состоит в том, что она извлекает операнд imm8 инструкции, вызвавшей сбой, а дальше вызывает другую внутреннюю процедуру nt!PushInt. Ее основная задача заключается в том, чтобы получить базовый адрес пользовательского ss: сегмента и положить адрес обработчика системных прерываний в стек (в адресном пространстве пользователя), используя полный адрес указателя стека ss:esp. Полученный путем обратного инжиниринга С-код, ответственный за помещение в стек трех 16- или 32-битных слов (в зависимости от гостевого режима исполнения), приведен ниже.
Благодаря тому факту, что одна из 32-битных переменных хранится ядром в произвольно выбранном исключении eip, ситуация превращается в простое write-what-where условие с незначительными ограничениями, которыми можно пренебречь (например, что непосредственное значение не может иметь установленным старший бит). Имея в своем распоряжении такую удобную базовую возможность, становится возможным «угнать» управление выполнением (control flow) ядра, переписав один из указателей функций, например широко известный указатель nt!HalDispatchTable+4, вызываемый из пространства пользователя через системный вызов nt!NtQueryIntervalProfile.
Рис. 5. Успешная реализация write-what-where в nt!PushInt
Рис 6. Бинарные различия между первоначальной реализацией nt!PushInt и после патча
CVE-2013-3197 (write-what-where в nt!PushException)
Рис. 7. Граф функции nt!Ki386VdmReflectException
Причина головной боли
При типичных обстоятельствах (то есть для любого обычного процесса) исполнение, как правило, завершается в одном из вариантов nt!CommonDispatchException, который отправляет событие к обработчику исключений пространства пользователя. В случае VDM ядро сначала пытается с помощью nt!PushException создать фрейм-ловушку в стеке пространства пользователя и перенаправить управление по адресу cs:eip, который берется из полей VfCsSelector и VfEip структуры NtCurrentTeb()->Vdm->VdmIntDescriptor[trap_no] (см. рис. 8); и только если эта процедура не срабатывает, исключение обрабатывается обычным способом. И, подобно предыдущему случаю, при создании эмулированного фрейма-ловушки ядро не проверяет, что указатель стека находится действительно в рамках адресного пространства пользователя. Это опять приводит к возможности использовать write-what-where условие, только размером 16 или 32 байта вместо 6 или 12. Задействовать уязвимость так же просто, для этого достаточно установить esp на произвольный адрес в пространстве ядра и вызвать исключение (например, #DE через инструкцию div edx) с нормальными реквизитами полностью инициализированной среды VDM и пользовательскими сегментами cs: и ss: в момент возникновения ошибки.
Рис. 8. Внутренние структуры пространства пользователя, которые задействуются для возобновления исполнения NTVDM, прерванного исключением
И в этот раз благодаря тому, что одно из записанных в контролируемый адрес значений — это eip ошибки, та же методика использования указателя функции (function pointer exploitation technique) может использоваться для получения полного контроля над компьютером. Правда, из-за ограничений на значение LDT воспользоваться этой уязвимостью можно только на системах начиная с Windows Vista. В обновлении безопасности Microsoft просто вставили два простых блока, которые отвечают за проверку указателя в стеке пространства пользователя для ветвей создания фрейма ловушки и для 16, и для 32 бит.
CVE-2013-3198 (write-what-where в nt!VdmCallStringIoHandlerPushException)
В дополнение к обработке привилегированных инструкций VDM ядро также эмулирует выполнение критичных инструкций, то есть таких инструкций, которые могут выполняться, только если CPL cs: и es: (причем базовый адрес последнего сегмента указывает на память ядра для перезаписи), инициализировать регистр di значением 0x0 и dx значением 0x3b0, а потом вызвать инструкцию insb; разумеется, все операции необходимо проводить внутри процесса NTVDM.EXE. Если мы установим базу сегмента es: в 0xaaaaaaaa и запустим эксплойт на непропатченной системе, то должно произойти следующее:
Мысли вслух
Все три уязвимости для повышения привилегий, о которых шла речь в этой статье, были возможны благодаря условию write-what-where, которое возникает в силу того, что предоставляемые пользователем данные не проходят никакой валидации. В других ситуациях уязвимости этого типа для базового образа ядра NT (ntoskrnl.exe) встречаются крайне редко. И хотя Microsoft за последние годы смогла внутренними силами отследить и устранить большинство таких проблем, они каким-то образом упустили код эмуляции ввода/вывода, исключений и инструкций в VDM; скорее всего, из-за того, что инструменты статического анализа, очень эффективные для высокоуровневого кода С и С++, в настоящее время не поддерживают ассемблер или плохо взаимодействуют с ним. Стоит отметить, что возможность использовать эти уязвимости появилась только после небольшого несвязанного изменения в коде входного контроля LDT, которое впервые появилось в Windows Vista. Из-за этого изменения внутренняя функция nt!PspIsDescriptorValid оказалась лишена проверок, связанных с базой и ограничениями ввода. Впрочем, это не более чем удачное совпадение. Реальной причиной, которая лежит в основе этой уязвимости, стали не различия в контроле сегментов, а тот факт, что код эмуляции использовал полные адреса ss:esp, ds:si и es:di в операциях памяти, хотя и одна из ключевых особенностей безопасности для ядра Windows гласит: привилегированный код никогда не должен доверять любым сегментам памяти со стороны пользователя.
Резюмируя
На примере этих трех открытий мы еще раз ясно видим, что многие уязвимости ядра обусловлены существованием кода, написанного чуть ли не в начале 90-х годов. Тогда безопасность не рассматривалась в качестве важного приоритета (в отличие от нашего времени), что приводило к созданию плохого кода, и никто его не пересматривал с точки зрения обеспечения безопасности с тех пор, как он был написан двадцать лет назад. При этом большие участки кода используются и в самых последних версиях Windows, включая новейшие Windows 8.1 и Server 2012. Современный исходный код ядра, который пишется в 2013 году, должен соответствовать руководствам по безопасной разработке и тщательно тестироваться перед выпуском. Поэтому мы считаем, что вместо того, чтобы копаться в новых функциональных элементах, которые были внедрены в последних версиях системы, гораздо эффективнее искать ошибки в тех ключевых компонентах, которые были созданы давным-давно.
Ну и последнее, что стоит отметить, — отключение по умолчанию обратной совместимости с приложениями DOS в Windows 8 было отличным решением Microsoft. Благодаря ему большинство еще не обнаруженных ошибок либо невозможно использовать, либо нет смысла искать, потому что атакующий не получит от их использования достаточных дивидендов. К тому же это решение позволило полностью отключить любые страницы NULL (раньше их наличия требовал хост-процесс VDM), а благодаря этому полностью исчезают либо значительно сокращаются ошибки типа NULL pointer dereference, которые часто встречаются и в ядре, и в драйверах устройств. По общему влиянию на будущие защитные свойства это одно из самых серьезных улучшений со стороны Microsoft за все время. Ну а сейчас вперед — найди свой собственный баг в ядре!
Автор: Mateusz «j00ru» Jurczyk.
Впервые опубликовано в журнале «Хакер» от 01/2014.
- Лимфоузел средостения что это
- valentina victoria кто такая