анализы: Сезонное обострение хактивности
Автор: Киви Берд
Исторически сложилось так, что в майские дни — накануне летних сессий и отпусков — во всем мире проходит множество научных конференций, в том числе и по компьютерной безопасности. На сей раз май выдался необычно плодотворным на доклады по "хакерской" тематике. По-настоящему интересных, можно даже сказать, этапных работ опубликовано не меньше полудюжины. Мы расскажем лишь о трех из них: две были представлены на конференции IEEE по проблемам безопасности и приватности (IEEE Symposium on Security and Privacy), одна — на USENIX.
Команда из четырех человек, работающих в разных университетах США, разработала технологию автоматической генерации кода атаки на такую уязвимость в ПО, которая заранее неизвестна, а вычисляется путем сличения исходной и пропатченной версий программы [1].
Иначе говоря, инструкции для создания нового вредоносного кода предоставляет, по сути, сама программная заплатка, выпущенная с целью латания очередной дыры. Понятно, что в условиях открытых исходных кодов, где из дыр не делают тайны, а про всякий патч известно, что именно он латает, подобную разработку и приложить-то некуда. Но вот для платформ с закрытыми исходниками, вроде Windows, регулярно выпускать патчи, не объясняя, что они там лечат, — обычная и широко распространенная практика.
Разработанная ныне технология APEG (Automatic Patch-based Exploit Generation) позволяет за время от нескольких секунд до нескольких минут сгенерировать код атаки для большинства типов программных уязвимостей. По мнению разработчиков, это означает, что если корпорация Microsoft существенно не изменит способ распространения патчей среди клиентов, то последствия могут оказаться тяжелейшими. Ведь злоумышленники, заполучив в руки систему типа APEG, могут обнаружить уязвимость по свежевыпущенному патчу и провести атаку до того, как этот самый патч будет установлен на атакуемую машину.
Нельзя сказать, что APEG — принципиально новое слово в мире компьютерной безопасности — выявлением дыр по патчам, призванным их залатать, исследователи занимаются уже не первый год (см. врезку), но практически полностью автоматизировать этот процесс действительно удалось впервые.
Для этого разработчики весьма своеобразно применили математические техники автоматического доказательства теорем и подтверждения корректности логики системы.
Можно сказать, что алгоритм APEG работает как доказательство корректности системы, проводимое в обратную сторону. Сначала выявляются различия в исполняемых кодах программы до и после применения заплатки, а затем по ее коду анализируется, для чего она предназначена. Патчи безопасности обычно содержат тест, который определенным образом ограничивает допустимые значения на входе системы, но существует процедура из арсенала формального доказательства теорем, позволяющая пройти по коду и автоматически выявить набор входов, которые отлавливаются тестами нового патча. Когда это сделано, применяется специальный набор правил-эвристик для точной локализации места уязвимости, затем генерируется несколько вариантов кодов, потенциально способных эксплуатировать данную уязвимость, а тестовые испытания устанавливают, какой из кодов реально срабатывает.
Работоспособность APEG была проверена на пяти из недавних патчей Microsoft. После того как выявлялись различия в бинарных кодах исходной и пропатченной программ, системе требовалось от шести секунд до трех минут, чтобы сгенерировать вредоносный код, эксплуатирующий каждую из уязвимостей.
Строго говоря, нельзя утверждать, что APEG создает уже полностью готовые для реальной атаки средства. Не доказано и то, что технология универсальна, то есть может обнаруживать и использовать "в корыстных целях" любой тип уязвимостей. Тем не менее она показывает, что вредоносные коды на основе патчей действительно можно создавать очень быстро.
А это значит, что Microsoft не предпринимает адекватных шагов для затруднения подобных атак (которые, повторим, не столь уж и новы). В качестве возможных шагов для улучшения ситуации с защитой разработчики APEG предлагают Microsoft несколько решений:искусственное "затемнение" кода патча командамипустышками, шифрование патчей при рассылке с последующим распределением ключа для одновременной активации, использование пиринговых технологий для более быстрой повсеместной установки патчей.
Разумеется, ни одно из этих решений не устраняет проблему полностью, однако, по мнению ученых, делает ситуацию менее угрожающей.
В 2005 году, когда корпорация Microsoft в очередной раз выдала публике скупую информацию о латании критической уязвимости в браузере Internet Explorer, специалист по обратной инженерной разработке Халвар Флэйк (Halvar Flake) решил выяснить, в чем там дело. Компания Флэйка SABRE Security разработала на продажу специальный аналитический инструмент BinDiff для выявления различий в бинарных кодах программ, исследователь продемонстрировал эффективность нового инструмента на примере сравнения исходной и пропатченной версии браузера Microsoft.
Специфические отличия в версиях программ, указавшие на уязвимость в обработке графики формата PNG, были обнаружены и проанализированы меньше чем за двадцать минут. Конечно, столь впечатляющая скорость анализа не в последнюю очередь объясняется небольшими размерами PNG-патча, тем не менее демонстрация выглядела весьма эффектно и стала одним из первых наглядных примеров того, как код патча сам предоставляет информацию о скрытой в системе уязвимости.
После этой работы исследователи SABRE опубликовали еще несколько статей, где показали, как с помощью BinDiff по пакетам апдейтов Microsoft за несколько часов можно создавать вредоносные коды, эксплуатирующие разнообразные дыры в системе. Попутно выяснилось, что примерно тем же самым хакеры андеграунда занимались и прежде.
Теперь же инструменты вроде BinDiff или функционально похожей программы IDA Pro с их дружественным пользовательским интерфейсом существенно раздвинули границы как технологии, так и круга лиц, владеющих подобным инструментарием.