Примечательно, что на девайсах с 32-разрядным ROM (A7, A10, A10X, A11 и A11X) указанный механизм не работает, поскольку буфер там аллоцируется всякий раз в одном и том же месте при каждой инициализации USB-стека. Тем не менее, обнаруживший данную уязвимость хакер axi0mX нашел способ обойти такую предопределенность с использованием правильно подобранного сценария эксплуатации Use-afer-Free. Для этого он использовал то обстоятельство, что система одновременно может инициализировать несколько USB-передач. Например, в ответ на некоторые запросы устройство не сможет отправить данные, если получатель занят, до тех пор, пока конечная точка (endpoint) не освободится или не будет сброшен USB, то есть не будут устранены условия блокировки. Отправленные в таком состоянии запросы попадают в очередь. После устранения блокировки выполняется обход очереди и все запросы поочередно завершаются. Информация о конечной точке (endpoint) обнуляется, а запросы нулевой длины остаются в куче. Управляя запросами и тайм-аутами, теоретически можно создать такие условия формирования кучи, которые в итоге повлияют на следующее выделение памяти при создании буфера.
Обобщая, можно сказать, что из-за найденной в SecureROM ошибки в механизме создания и уничтожения USB-стека происходит утечка памяти, которая может использоваться для формирования состояния кучи, дающего возможность управлять выделением памяти при размещении буфера. В результате с помощью UaF можно выполнить запись в выделенную память для получения контролируемого косвенного перехода (controlled indirect branch) при выходе из DFU. Это, в свою очередь, позволяет взломать устройство еще до момента загрузки iOS и получить полный контроль над файловой системой.
В целом, природа уязвимостей может быть различной: некоторые из них связаны с недостатками архитектуры операционной системы или приложения, другие с ошибками разработчиков ПО. Например, какая-либо программа может выполнять проверку недостаточно эффективно или вовсе не проверять обрабатываемые ею и загружаемые в память данные, чем могут воспользоваться злоумышленники, либо передавать в буфер информацию без фактической проверки его границ (атака на переполнение буфера). Для закрытия уязвимостей разработчики операционных систем и прикладных программ периодически выпускают обновления своих продуктов, также порой называемые в обиходе «заплатками», или «патчами» (от англ. patch «заплатка», «пластырь»). Среди уязвимостей принято особо выделять критические уязвимости с помощью которых имеется возможность полностью нарушить работоспособность операционной системы или программы, а также уязвимости нулевого дня уязвимости, уже известные злоумышленникам, для которых производитель ПО или ОС еще не успел выпустить соответствующего обновления, закрывающего данную брешь в безопасности.
Злоумышленники специально выискивают уязвимости в операционных системах и прикладных программах с целью распространения вирусов и троянцев. Самый простой метод такого поиска анализ выпускаемых производителями софта обновлений. Например, киберпреступник может проанализировать содержимое опубликованного корпорацией Microsof критического обновления безопасности для ОС Windows, заменяющего несколько системных динамических библиотек. Сравнив «старую» версию этих файлов с обновленной, злодей может без труда выяснить, в чем именно заключалась ликвидируемая обновлением уязвимость. До тех пор, пока все пользователи Windows не установят это обновление, они являются беззащитными для целевой атаки в данном направлении. А это сотни миллионов компьютеров по всему миру.
Эксплойты
Программа, файл, электронный документ, фрагмент исполняемого кода или последовательность команд, использующая ту или иную уязвимость для реализации различных вредоносных функций, называется эксплойтом, эксплоитом, или сплоитом (от англ. exploit, «эксплуатировать»). Например, возможность устаревших версий текстового редактора Microsof Word автоматически запускать встроенные в документы. doc макросы это уязвимость. А сам документ, в момент открытия сохраняющий при помощи макроса на диск компьютера и запускающий опасного троянца это эксплойт.
В качестве еще одного примера можно назвать уже давно устаревший метод атаки, при которой злоумышленники рассылали пользователям Outlook письма в формате HTML, «прячущие» в себе скрытый фрейм. Поскольку эта почтовая программа ранних версий не умела правильно обрабатывать такие письма, из скрытого фрейма вызывался вредоносный скрипт, который загружал из Интернета троянца на пользовательскую машину и запускал его на выполнение. Это и был эксплойт один из самых распространенных, с которыми многие наши соотечественники сталкивались на практике в начале «нулевых». Можно сказать, что притчей во языцех стали и многочисленные эксплойты, реализованные в виде документов в формате Adobe PDF или встраиваемых в веб-страницы интерактивных элементов в формате Adobe Flash подобные творения злоумышленников появляются с завидной регулярностью, поскольку некоторые (особенно устаревшие) продукты корпорации Adobe с точки зрения информационной безопасности являются лакомой приманкой для злоумышленников.
В качестве еще одного примера можно назвать уже давно устаревший метод атаки, при которой злоумышленники рассылали пользователям Outlook письма в формате HTML, «прячущие» в себе скрытый фрейм. Поскольку эта почтовая программа ранних версий не умела правильно обрабатывать такие письма, из скрытого фрейма вызывался вредоносный скрипт, который загружал из Интернета троянца на пользовательскую машину и запускал его на выполнение. Это и был эксплойт один из самых распространенных, с которыми многие наши соотечественники сталкивались на практике в начале «нулевых». Можно сказать, что притчей во языцех стали и многочисленные эксплойты, реализованные в виде документов в формате Adobe PDF или встраиваемых в веб-страницы интерактивных элементов в формате Adobe Flash подобные творения злоумышленников появляются с завидной регулярностью, поскольку некоторые (особенно устаревшие) продукты корпорации Adobe с точки зрения информационной безопасности являются лакомой приманкой для злоумышленников.
Эксплойты являются популярным предметом купли-продажи на различных подпольных форумах, где общаются представители компьютерного андеграунда. Например, с использованием крайне распространенного у вирусописателей комплекта эксплойтов «Black Hole» («черная дыра») было инфицировано несколько миллионов компьютеров по всему миру. Один из частных случаев применения на практике данной схемы распространения вредоносного ПО выглядит следующим образом. При просмотре некоторых веб-сайтов, не несущих в себе какого-либо подозрительного контента, внезапно происходит открытие нового окна браузера, в котором загружается веб-страница, имитирующая своим оформлением интерфейс популярной службы «Ответы@Mail.ru». Разумеется, данная веб-страница физически располагается на другом сервере, адрес которого может отдаленно напоминать URL службы mail.ru. Уже одного факта открытия этой странички в браузере достаточно, чтобы антивирусное ПО начало выдавать предупреждения о попытках загрузки и установки на компьютер вредоносных программ и запуска подозрительных скриптов. Теоретически вредоносная страница может быть любой и нести в себе совершенно иное визуальное оформление.
Анализ HTML-кода такой странички показывает, что она содержит несколько скрытых фреймов, в которых запускается скрипт, выполняющий переадресацию пользователя на принадлежащий злоумышленникам сайт. Этот сайт в свою очередь эксплуатирует набор эксплойтов «Black Hole», реализующих загрузку на компьютер жертвы вредоносного ПО с использованием известных уязвимостей браузеров и операционной системы. Какие именно троянские программы попадут при этом на компьютер жертвы, зависит от используемой ею версии браузера, версии операционной системы и наличия на ней установленных обновлений безопасности, наличия или отсутствия в атакуемой системе брандмауэра и современного антивирусного ПО.
Особо следует упомянуть об опасности, которой подвергаются пользователи операционной системы Google Android. По данным на март 2020 года, для различных версий данной мобильной платформы известно в общей сложности 2565 уязвимостей (2563 на уровне компонентов самой операционной системы), притом некоторые из них время от времени эксплуатируются разработчиками вредоносных программ. Однако поскольку сама ОС Android является, по большому счету, встраиваемой и распространяется в виде предустановленной заводской прошивки для смартфонов и планшетов, далеко не все производители этих устройств озабочены регулярным обновлением операционной системы. Скорее дела обстоят прямо наоборот: обновления прошивки выпускаются, в основном, для флагманских продуктов наиболее известных и крупных корпораций, а большинство бюджетных моделей мобильных гаджетов, особенно китайского производства, не обновляется вообще. Соответственно, пользователь не в состоянии сам закрыть подобные уязвимости, поскольку они содержатся в системных компонентах, к которым он в обычных условиях не имеет доступа. Самое забавное, что и антивирусные программы для Android также не в состоянии закрыть такие уязвимости, поскольку они не имеют возможности модифицировать компоненты ОС. Антивирусы могут лишь предупредить пользователя о наличии бреши в защите и обезвредить вредоносные программы при попытке запуститься на защищаемом устройстве с использованием той или иной уязвимости.
Кроме того, специалистам широко известны случаи, когда вредоносные программы были внесены в Android-прошивку телефона самим его производителем, и смартфоны поступали в продажу уже зараженными. В особенности это касается дешевых устройств (зачастую имитирующих дорогостоящие модели известных брендов), выпущенных никому не известными небольшими китайскими заводами. Именно таким образом распространялся, например, Android.Becu.1.origin компонент этого вредоносного приложения, способного скрытно загружать и устанавливать по команде с управляющего сервера различные вредоносные программы, «прятался» в одном из системных каталогов, имел цифровую подпись самой операционной системы и потому обладал на инфицированном устройстве поистине неограниченными полномочиями.