Настройка com порта vmware

Обновлено: 04.07.2024

_________________
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела.

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

To add a parallel port to the virtual machine's configuration, take these steps with the virtual machine powered off.

Windows Hosts
Open the Configuration Editor.
Settings > Configuration Editor

Click Add to start the New Hardware Wizard.
Select Parallel Port, then click Next.
Make the appropriate selection to use a physical parallel port or connect the virtual parallel port to a file. If you want the parallel port output to go to a file, enter the path and filename or browse to the location of the file.
Click Finish.

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

может он спрашивал про доступ на уровне драйвера для прямого доступа? на уровне файла оно может и работает

_________________
тематические ответы только в форуме, в приват не пишите

Приглашаем всех желающих 25/11/2021 г. принять участие в вебинаре, посвященном антеннам Molex. Готовые к использованию антенны Molex являются компактными, высокопроизводительными и доступны в различных форм-факторах для всех стандартных антенных протоколов и частот. На вебинаре будет проведен обзор готовых решений и перспектив развития продуктовой линейки. Разработчики смогут получить рекомендации по выбору антенны, работе с документацией и поддержкой, заказу образцов.

Ну ёпт.
Там можно выбрать и физический хоста (все драйверы уже встроены до нас): Make the appropriate selection to use a physical parallel port or connect the virtual parallel port to a file.

Приглашаем 30 ноября всех желающих посетить вебинар о литиевых источниках тока Fanso (EVE). Вы узнаете об особенностях использования литиевых источников питания и о том, как на них влияют режим работы и условия эксплуатации. Мы расскажем, какие параметры важно учитывать при выборе литиевого ХИТ, рассмотрим «подводные камни», с которыми можно столкнуться при неправильном выборе, разберем, как правильно проводить тесты, чтобы убедиться в надежности конечного решения. Вы сможете задать вопросы представителям производителя, которые будут участвовать в вебинаре

ты не понял
софт может использовать порт и открывать его как файл
а может через специальный драйвер, который загружается от имени пользователя и обращается на физический адрес
трансляция адреса может работать криво

_________________
тематические ответы только в форуме, в приват не пишите

софт может использовать порт и открывать его как файл Зачем это делать?
Гостевая система напрямую видит LPT хоста через драйвер vmware.


ну например ком порт открывается как файл, используя винапи и стандартный драйвер
для лпт тоже есть такой и вмварь ставит свой в гостевую, заменяя стандартный
какой-то софт древний может использовать лпт как файл и гнать данные напрямую
например принтер матричный
а можно через драйвер

например для ком порта если работать через драйвер, то есть полный доступ к регистрам мелкасхемы юарт
я помню софт, который работал напрямую с железом из 98, а в хп не работал
так была написана прога для трансляции адреса стандартного лпт в адрес пци карты с лпт
так оно не заработало
так же не заработало и на железном лпт со стандартным адрес 378

у меня вон усб принтер не заработал
81 видит даже его как принтер, но драйверов нет
гостевая хп увидела, но не печатает
пришлось использовать принтсервер в роутере

_________________
тематические ответы только в форуме, в приват не пишите

Configuration Wizard создает универсальную для многих случаев конфигурацию. Более детальная настройка делается с помощью Configuration Editor. Запусти VMWare, выбери из списка созданную конфигурацию и нажми OK. Твоя конфигурация загружена и ее можно редактировать. Выбери в меню Settings пункт Configuration Editor.

После запуска ты увидишь перед собой окно с древовидным меню в левой части. Пункты с "+" в начале имеют подпункты, появляющиеся при нажатии на "+" и исчезающие при нажатии на "-", заменяющий "+" при раскрытии ветви дерева. Короче, как в Windows'овском проводнике. ) Каждый из пунктов отвечает за конфигурацию определенного устройства в виртуальной машине. Любое устройство подключается и отключается с помощью кнопок Install и Remove - Install - делает устройство видимым в виртуальной машине, Remove убирает его из поля видимости.Запомни: если устройство на твоей реальной машине, к которому ты хочешь дать доступ из своей виртуальной машины, не сконфигурировано в Linux'е, оно не будет работать и в виртуальной машине!

    Предназначен для настройки IDE устройств (жестких дисков и CD-ROM'а). Имеет четыре подпункта P-M - настройка Primary Master, P-S - настройка Primary Slave, S-M - Secondary Master и S-S - Secondary Slave. Изначально напротив P-M у тебя стоит Virtual Disk, это означает, что виртуальный диск, созданный с помощью Configuration Wizard будет виден из установленной под VMWare операционной системой как жесткий диск, присоединенный как Master к первичному IDE контроллеру. Напротив S-M стоит CD-ROM, значит CD-ROM у тебя под виртуальной машиной установлен как Master на вторичном IDE контроллере. Напротив P-S и S-S стоит Not Installed - эти устройства пусты. Все четыре устройства конфигурируются идентично. При выборе одного из устройств, справа в окне появляется диалог с несколькими опциями настройки. Первая из них - Device Type - тип устройства. Остальные опции диалога зависят от типа устройства. Устройства бывают 4 видов:

    Виртуальный диск - это, как уже упоминалось, файл размером не более 2GB, который используется для эмуляции жестких дисков в виртуальной машине. Не зависимо от размера, при создании файл виртуального диска занимает 3k. По мере заполнения его операционной системой, установленной в виртуальной машине, он увеличивается в размере, пока не займет отведенное ему пространство или пока не закончится место на занимаемой им партиции. Во втором случае VMWare выдаст ошибку и попросит освободить место. В поле Name вводиться имя файла, который и будет являться виртуальным файлов. Кнопка Choose позволяет выбрать существующий файл. В поле Capacity (MB) вводится размер виртуального диска в мегабайтах. Нередактируемое поле Available (MB) показывает свободное место на партиции, на которой ты пытаешься создать файл виртуального диска. При нажатии на кнопку Create виртуальный диск создается. При помощи кнопки Shrink можно сжать файл виртуального диска на свободное на нем пространство. Есть еще выпадающее меню режимов записи. О них попозже.:)

    Примерно тоже самое, что и виртуальный диск, но может быть размером более 2GB. В поле Name вводится имя файла диска и нажимается Create plain disk. После этого тебе будет задан вопрос, где будет располагаться создаваемый диск:

    Созданный диск будет располагаться в файлах на Linux'овом диске. Тебе будет предложено ввести размер файла, после чего будет запущен редактор диска. В редакторе диска представлен список партиций создаваемого диска в виде таблицы, каждая партиция - отдельный файл, имя которого указано в первом столбце таблицы. Второй столбец - это номер первого блока партиции, третий - его длина в блоках по 512 байт. С помощью четвертого можно сделать партиции доступной только для чтения для виртуальной машины. Кнопка Delete - удаляет указанную партицию. После нажатия OK начнется создание диска. Это может занять несколько минут.
    Диск будет состоять из существующих партиций реального диска. Тебе будет предложено ввести имя файла существующего диска (/dev/hda,/dev/hdb,/dev/sda и т.д.), после чего будет запущен редактор диска, как и в случае Files in the host system, но вместо имен файлов здесь будет представлен список существующих партиций выбранного диска. Кнопка Delete в этом случае не удаляет партицию, а делает ее невидимой для виртуальной машины.
    Предназначен для предоставления прямого доступа к существующему диску из виртуальной машины. В поле Name вводиться либо имя файла диска (/dev/hda,/dev/hdb и т.д.), либо имя файла, в котором будут храниться данные подключаемого диска. Во втором случае надо нажать Create raw disk. затем тебе будет предложено ввести имя файла диска, после чего будет запущен редактор диска, в котором нужно выбрать тип доступа виртуальной машины к каждой партиции выбранного диска - нет доступа (No Access), доступ только на чтение (Read Only) или доступ на чтение-запись (Read/Write). В дальнейшем эти параметры можно будет изменить с помощью кнопки Edit raw disk.
    Дает прямой доступ виртуальной машине к реальному CD-ROM'у, установленному в Linux. В поле Name вводится имя файла устройства в Linux'е. Как уже упоминалось, обычно это /dev/cdrom. Checkbox Start connected показывает, будет ли виден CD-ROM при загрузке операционной системы под VMWare (отмечен) или нет (разотмечен). Режимы записи для CD-ROM'ов не поддерживаются.
    Все изменения, произведенные на диске операционной системой немедленно записываются на непосредственно на диск.
    Все изменения, произведенные операционной системой, фиксируются на диске, но не записываются. В данной сессии виртуальной машины они отражаются и создается впечатление, что файлы или структура каталогов изменены, но на самом деле при выключении виртуальной машины все изменения теряются и диск приводится в то, состояние, в котором он был до загрузки виртуальной машины.
    Все изменения на диске, произведенные операционной системой, записываются не на сам диск, а во временный файл (.REDO) на Linux'овой партиции. При выключении виртуальной машины, пользователю предоставляется выбор: 1) записать изменения на диск, 2) отменить все изменения и 3) оставить все изменения во временном файле, для того, чтоб следующие сессии могли дозаписывать туда свои изменения.
    Предназначен для настройки SCSI дисков для виртуальной машины. Поддерживаются 6 SCSI дисков. Параметры настройки те же, что и у IDE Drives.

    Позволяет настраивать устройства чтения дисков. Поддерживает два дисковода - под Windows 98 это будут диски A: и B: соответственно. Тип диска можно выбрать один из двух:

    Дает виртуальной машине прямой доступ к Linux'овому устройству чтения дисков. В поле Name вводится путь к файлу устройства дисковода. В RedHat Linux это /dev/fd0 - первый дисковод и /dev/fd1 - второй дисковод.
    Позволяет в качестве дискеты использовать файл образа. Можно использовать существующий или создать новый с помощью кнопки Create.
    Пункт предназначен для настройки сетевых карт в виртуальных машинах. Поддерживаются до трех карт. Опция настройки всего одна у каждой карты - Connection Type - тип сетевого соединения. Типов сетевого соединения три - Bridged - см. пред. страницу.,Host-only - см. пред. страницу. и Custom - можно задать напрямую файл устройства виртуальной сети - /dev/vmnet0, /dev/vmnet1 и т.д..

    Через этот пункт меню настраиваются последовательные порты - COM1, COM2, COM3 и COM4 для виртуальной машины. Для использования COM-порта в виртуальной машине надо выбрать его тип из трех возможных:

    Обеспечивает прямой доступ к файлу COM-порта реальной машины. В поле Name введите путь к файлу устройства - /dev/cua0(COM1), /dev/cua1(COM2) и т.д.
    Весь вывод с COM-порта виртуальной машины будет записываться в файл, имя которого задается в поле Name.

    Основное отличие VMware версии 2.0 от VMWare версии 1.0, то, что она поддерживает не только вывод в параллельный порт, но и ввод с него. Благодаря этому под виртуальной машиной будут работать Scanner'ы, IDE-устройства, SCSI-устройства, работающие через LPT-порт. Все это обеспечивает модуль vmppuser, поставляемый с VMWare. Этот пункт меню позволяет настроить параллельные порты для виртуальной машины. LPT-порты под VMWare бывают двух типов:

    Позволяет дать прямой доступ к файлу параллельного порта реальной машины. В поле Name вводится имя файла LPT-порта, но не /dev/lp0,/dev/lp1 и т.д., а /dev/parport0 для LPT1 и /dev/parport1 для LPT2. Checkbox Bidirectional задает тип обмена данными с портом - двунаправленный (отмечен) или однонаправленный (разотмечен).
    Весь вывод с LPT-порта виртуальной машины будет записываться в файл, имя которого задается в поле Name.
    Настройка мыши. Тип мыши можно задать напрямую, выбрав в выпадающем меню Host Mouse Type - PS/2, Mouseman serial, Microsoft serial, Intellimouse PS/2 и Mouse Systems, или дать возможность VMWare самому определить тип мыши, выбрав в выпадающем меню Host Mouse Type - autodetect. Файл мыши можно также заставить определить VMWare, выбрав в Host Mouse Device Autodetect, или выбрать Specify и самому задать этот файл. В RedHat Linux это /dev/mouse.
    С помощью этого пункта ты можешь дать доступ виртуальной машине к твоей звуковой карточке. В поле Name введи имя файла звуковой карточки (обычно, /dev/dsp).
    Здесь выбирается операционная система, которая установлена или будет установлена в этой виртуальной машине.

    Как следует из названия в этом пункте меню задаются различные параметры работы виртуальной машины.

    Если отмечено, то комбинации клавиш типа CTRL+ALT+клавиша для виртуальной машины надо вводить с нажатым SHIFT'ом.
    Если отмечено, то при старте VMWare сразу будет загружаться операционная система без нажатия на кнопку Power On.
    Если отмечено, то при запуске операционной системы,VMWare будет переходить в полноэкранный режим.
    Если отмечено, то при выключении или приостановлении работы виртуальной машины, VMWare будет выгружаться автоматически без нажатия на кнопку закрытия.
    Если отмечено, то приостановка работы виртуальной машины будет производиться при помощи APM операционной системы загруженной в VMWare, иначе при помощи VMWare. Советую оставить неотмеченной, т.к. Windows 98 вылетает или виснет при использовании его APM, а у Linux'а он еще слабо развит. APM - Advanced Power Management - Расширенное управление питанием.
    По умолчанию, при приостановке работы виртуальной машины, ее состояние записывается в файл в тот же каталог, где и файл конфигурации с тем же именем, но с расширением .std, если отметить этот пункт, то состояние виртуальной машины будет храниться в ОЗУ. Не советую отмечать, т.к. при перезагрузке все данные о состоянии будут утеряны, да и зачем зря забивать ОЗУ?:)
    Скрывать от виртуальной машины тип партиций, доступных только для чтения.
    Выбирает лучшее разрешение (по мнению VMWare. )) для работы в полноэкранном режиме.

Redo Log Directory Здесь задается каталог для .REDO-файлов (см. режим записи Undoable чуть выше).

    Здесь выбирается уровень записи логов - нормальный (Normal) или подробный (Debug).

После того, как ты выбрал все параметры для своей виртуальной машины - жми Save, чтоб сохранить сделанные тобой изменения. Теперь ты можешь запустить свою виртуальную машину и установить на нее Windows 98.:)

©Ерижоков А.А., 2000.
Использование данного документа разрешено только с согласия автора и с указанием первоисточника: DH's Linux Site

Настройка и использование виртуального последовательного порта VMware

Содержание этой статьи частично переведено из справочного документа VMware.

окружение:

Виртуальная машина: Fedora12

На виртуальную машину можно добавить до четырех виртуальных последовательных портов. Настроить виртуальные последовательные порты можно несколькими способами:

Подключите виртуальный последовательный порт к физическому последовательному порту хоста.

Подключите виртуальный последовательный порт к файлу на хосте.

Установите прямое соединение между двумя виртуальными машинами или подключите последовательный порт виртуальной машины к прикладной программе хост-машины.

Добавьте последовательный порт к виртуальной машине

Сначала убедитесь, что виртуальная машина находится в выключенном состоянии, выберите VM-> Settings . в меню, нажмите кнопку Add на вкладке Hardware, выберите SerialPort в диалоговом окне AddHardwareWizard и нажмите Next, как показано на рисунке:


Затем выберите Serialporttype, есть три типа:


1. Если вы хотите использовать физическое устройство последовательного порта хоста, выберите Usephysicalserialporton the хост, затем щелкните Затем выберите физический последовательный порт, который вы хотите использовать.

2. Если вы хотите вывести данные последовательного порта в файл, выберите Outputtofile, затем выберите выходной файл, который является текстовым файлом txt. Проведите тест после запуска виртуальной машины и выполните его в командной строке:

Затем откройте выходной файл, вы можете увидеть вывод строки asdf через последовательный порт.

3. Используйте namedpipe для подключения двух виртуальных машин или виртуальных машин и хост-приложений через последовательные порты. Выберите Outputtonamedpipe и нажмите Next, чтобы войти в следующий интерфейс:


Введите имя трубы, для windows host, трубка Формат имени Дао: //./pipe/<namedpipe> , Должен начинаться с //./pipe/ начало 。

Вывести отладочную информацию в приложение на хосте:

В первом раскрывающемся меню выберите Thisendisheserver или Thisendistheclient , Выберите во втором раскрывающемся меню Theotherendisanapplication 。

Вывести отладочную информацию на другую виртуальную машину:

В первом раскрывающемся меню выбирается «Это закончить сервер», а во втором раскрывающемся меню - «То и другое».

Подключите две виртуальные машины с последовательными портами:

Установите Fedora12 и ubuntu10.04 на виртуальную машину, добавьте последовательные порты для двух виртуальных машин,

Последовательный порт Fedora 12 настроен на:


Настройка последовательного порта Ubuntu10.04:


После этой настройки Последовательный порт Fedora - serialport1, имя устройства - ttyS0, последовательный порт ubuntu - serialport2, а имя устройства - ttyS1. 。

Выполнить под Fedora:

Выполнить под ubuntu:

Вы можете увидеть полученную строку hello в Fedora, указывающую, что отправка ubuntu и получение Fedora являются нормальными, и вы можете выполнить тот же тест после замены.

Интеллектуальная рекомендация

совместный запрос mysql с тремя таблицами (таблица сотрудников, таблица отделов, таблица зарплат)

1. Краткое изложение проблемы: (внизу есть инструкция по созданию таблицы, копирование можно непосредственно практиковать с помощью (mysql)) Найдите отделы, в которых есть хотя бы один сотрудник. Отоб.


[Загрузчик классов обучения JVM] Третий день пользовательского контента, связанного с загрузчиком классов


IP, сеанс и cookie

В VMware Workstation есть возможность «виртуализации» принтеров, что позволяет нам распечатать документ из гостевой ОС при помощи принтеров, установленных в операционной системе на хосте.

image

Автор: Kostya Kortchinsky (Google Security Team)

В VMware Workstation есть возможность «виртуализации» принтеров, что позволяет нам распечатать документ из гостевой ОС при помощи принтеров, установленных в операционной системе на хосте. В VMware Workstation 11.1 виртуальный принтер добавляет по умолчанию ко всем новым виртуальным машинам, а на современных Windows-хостах, как правило, Microsoft XPS Document Writer используется как принтер по умолчанию. Даже если на гостевой ОС не установлен пакет VMware Tools, порт COM1 может быть использован для общения с прокси-сервером, связанным с печатью, в операционной системой на хосте.

Во время запуска VMWare от имени любого пользователя vmware-vmx.exe на хосте запускает vprintproxy.exe. vmware-vmx.exe и vprintproxy.exe общаются между собой при помощи именованных каналов. При записи в порт COM1 на гостевой ОС пакеты в конечном итоге попадают на обработку в vprintproxy.exe.

Я не буду вдаваться в детали протокола, но скажу, что уровень виртуализации принтеров, по сути, представляет собой копирование файлов EMFSPOOL из гостевой ОС на хост. Файлы в формате EMFSPOOL и вложенные EMF-файлы обрабатываются на хосте при помощи vprintproxy.exe. Кроме того, эти файлы также можно просматривать (там же на хосте) средствами библиотеки TPView.dll. Если мы смастерим специальные файлы в форматах EMFSPOOL и EMF и передадим нашу поделку на порт COM1, то сможем при помощи дыр в процессе vprintproxy.exe выполнить произвольный код на хосте.

Рабочая среда

В качестве операционной системы хоста выступает Windows 8.1 amd64. Гостевая ОС - Windows 7 x86, запущенная на VMware Workstation 11.1 со всеми патчами. Исследования на других платформах не проводились.

В конце статьи приведен эксплоит, протестированный только для вышеуказанной платформы.

Отрицательное целочисленное переполнение при обработке EMR-записей определенных типов

Функция CTPViewDoc::WriteEMF из библиотеки TPView.dll предварительно обрабатывает EMF-файл и перезаписывает некоторые участки посредством замены определенных типов EMR-записей. В отношении EMR-записей с типом 0x8000 и 0x8002 будет выделяться память размером, который определен для конкретной записи. Далее из той записи будет копироваться 8 байт, размер уменьшаться на 8, а затем файл будет динамически считываться в специально подготовленный буфер. Если размер EMR-записи меньше 8, тогда при уменьшении размера будет происходить отрицательное переполнение, что в свою очередь приведет к переполнению кучи.




Рисунок 1: Участок функции CTPViewDoc::WriteEMF, отвечающий за обработку EMR-записи 0x8000

В вышеуказанном участке кода нет проверки, что размер записи не менее 8. Отрицательное целочисленное переполнение на 1 приведет к тому, что большое количество байт будет считываться в буфер меньшего размера, чем требуется, и куча переполнится.

При обработке EMR-записи 0x8000 происходит ровно то же самое.

Множественные уязвимости при обработке EMR-записи 0x8002

В случае с обработкой EMR-записи 0x8002 в библиотеке не происходит проверка размеров и смещений, поступающих от соответствующих структур, и выполняются небезопасные вызовы функции memcpy().


Рисунок 2: Множественные небезопасные вызовы memcpy()

В вышеуказанном участке кода содержимое регистров esi и ebx полностью под контролем пользователя и соответствует содержимому структуры EMR-записи 0x8002. Размер памяти, выделяемый под регистр ebx, должен быть не менее 0x50 байт, но такой проверки не проводится, что может привести к переполнению кучи и нежелательной перезаписи памяти.

Множественные уязвимости при обработке EMR-записи 0x8000

По-видимому, EMR-запись 0x8000 содержит структуру, описывающую сжатое изображение в формате JPEG2000. При вычислении размера динамически выделяемой памяти происходит несколько целочисленных переполнений, что может привести к переполнению кучи.


Рисунок 3: Участок кода, связанный с обработкой EMR-записи 0x8000

Программа выполняет небезопасные 32-битные вычисления, приводящие к ошибке при проверке размера перед вызовом функции memcpy(), что в свою очередь приводит к переполнению кучи. Из-за предыдущих арифметических операций проверка размера выделяемой памяти сама по себе может стать причиной заворачивания (wrap). К тем же самым проблемам может привести и последующее добавление (см. рисунок ниже):


Рисунок 4: Проверка размера перед выделением памяти

Переполнение стека при обработке изображений в формате JPEG2000

Эта уязвимость очень похожа на CVE-2012-0897 [3]. Весьма вероятно, что в обоих случаях использовалась одна и та же самая библиотека. Просто в TPView.dll соответствующие функции оставались непропатченными в течение последних двух лет. При обработке записи 0xff5c (Quantization Default) пользователь может вызвать переполнение буфера, работающего по принципу стека, в функции, где нет защитного механизма «stack cookie», что в свою очередь приведет к полному контролю над регистром EIP.


Рисунок 5: Участок кода, обрабатывающий изображение в формате JPEG2000

Здесь парсер формата JPEG2000 будет считывать только слова, поскольку размер записи 0xff5c разрешает это делать. Загвоздка в том, что принимающий буфер может вместить максимум 0xc4 байт.

Множественные уязвимости при обратном вызове функции для подсчета EMF-записей

Функция CEMF::EnhMetaFileProc из библиотеки TPView.dll используется для обратного вызова функции EnumEnhMetaFile. Кроме того, EnhMetaFileProc обрабатывает EMR-записи некоторых типов прежде, чем «поиграться» с ними. Проверка корректности обрабатываемых записей оставляет желать лучшего, что приводит к множественному чтению и записи вне допустимых границ памяти.


Рисунок 6: Обработка записи EMR_SMALLTEXTOUT

Длина записи EMR_SMALLTEXTOUT должна быть не менее 0x34 байт. Перед тем, как проводить операцию над полями структуры, должна проводиться проверка длины. Но этого не делается.


Рисунок 7: Обработка записи EMR_EXTTEXTOUTW

При обработке записи EMR_EXTTEXTOUTW возникает та же самая проблема.

Произвольное обнуление памяти при проверке контрольной суммы у шрифта TrueType

При извлечении шрифта TrueType из файла EMFSPOOL перед дальнейшей обработкой в библиотеке TPView.dll проверяется контрольная сумма. Сначала в конце каждой таблицы исключаются все пробелы, после чего вычисляется контрольная сумма. Во время вычисления контрольной суммы содержимое поля «offset» не проверяется, а сразу же добавляется к указателю на буфер шрифта. Несмотря на то, что существует проверка, чтобы мы не промахнулись мимо окончания буфера шрифта, ничто не мешает нам обнулить и указать на память перед буфером, поскольку 32-битная арифметика «завернется».


Рисунок 8: Защитные проверки от перепрыгивания конца буфера

Вышеуказанные проверки обходятся при помощи «отрицательного» смещения, что приводит к вызову kk_MemsetAndChecksum:


Рисунок 9: Результат использования отрицательного смещения

В итоге становится возможным обнуление от 1 до 3 байт (размер отступа) в произвольном месте относительно буфера со шрифтом, поскольку буфер находится до обнуляемого участка.

Дополнительные соображения

Даже при запуске на 64-битной платформе vprintproxy.exe работает как 32-битный процесс. Следует отметить, что несколько модулей, загружаемых vprintproxy.exe, не поддерживают ASLR. Например:

  • iconv.dll
  • TPClnt.dll
  • TPClntloc.dll
  • TPClnVM.dll
  • TPView.dll

Поскольку все вышеуказанные DLL’ки используются один и тот же адрес загрузки в память (0x10000000), только iconv.dll будет загружаться по этому адресу. Остальные библиотеки будут загружаться по случайным адресам.

Кроме того, обработка формата JPEG2000 происходит внутри конструкции try-catch, и все исключения отлавливаются. Это позволяет злоумышленнику «подобрать» способ успешного проникновения, поскольку процесс vprintproxy.exe будет оставаться живым даже при нарушениях прав доступа.

Что предпринять для защиты от угрозы

Отключите виртуальный принтер или вообще удалите это устройство в настройках VMware. После этого vprintproxy.exe запускаться не будет.

Версии настоящего документа

1.0: Первая версия

1.1: Добавлен раздел «Произвольное обнуление памяти при проверке контрольной суммы у шрифта TrueType».

1.2: Добавлен раздел «Отрицательное целочисленное переполнение при обработке EMR-записей определенных типов».

Хронология событий

6 марта 2015 года: VMware Security Response Centre подтвердил факт получения отчета.

12 марта 2015 года: отправлен обновленный отчет.

17 марта 2015 года: VSRC указал примерное время исправления уязвимостей.

17 марта 2015 года: отправлен обновленный отчет.

18 марта 2015 года: в VSRC отправлена информация о новых уязвимостях.

10 апреля 2015 года: в VMware сообщили предполагаемую дату (9 июня) обнародования всех уязвимостей.

21 апреля 2015 года: в VMware выпустили 5 бюллетеней, касающихся найденных уязвимостей (CVE-2015-2336 - 2340).

9 июня 2015 года: выпущен VMware Workstation 11.1.1 для Windows и VMSA-2015-0004.

Эксплоит, показанный ниже, позволяет выполнить произвольный код на хосте при помощи уязвимости, связанной с переполнением стека, возникающего во время обработки изображения в формате JPEG2000. В гостевой ОС на порт COM1 отсылаются специально сформированные файлы в формате EMFSPOOL и EMF. Административных привилегий на гостевой ОС не требуется.

Помимо формирования нужных файлов в формате EMFSPOOL и EMF единственной сложность состояла в создании ROP-цепи на базе библиотеки iconv.dll. Эта DLL’ка не очень подходит для решения данной задачи.

Предполагается, что в системе используется iconv.dll версии 1.9.0.1 и библиотека TPview.dll версии 8.8.856.1, но поскольку в парсере формата JPEG2000 отлавливаются все исключения, при многократных попытках могут появиться дополнительные цели.

Читайте также: