Но спустя неделю Марк Дауд опубликовал на сайте IBM ISS статью, в которой описал, что представляет собой выявленная уязвимость и как именно ее можно эксплуатировать на Wintel-системах. Из этой работы специалистам, хорошо понимающим суть дела, стало ясно, что история с flash-плеером представляет собой далеко не рядовой случай, а, похоже, открывающий новую страницу в противостоянии средств компьютерной обороны и все более усложняющихся методов атак.
С присущей компьютерам проблемой переполнения буфера памяти мир безопасности вплотную познакомился в 1996 году, когда появилась работа хакера Aleph One "О сокрушении стека памяти ради забавы и прибыли" ("Smashing the Stack for fun and Profit", documents.iss.net/whitepapers/IBM_X-Force_WP_final.pdf). Статья не только наглядно демонстрировала, как можно эксплуатировать эту уязвимость, но и стала основой для множества последовавших атак этого типа. Многие годы борьбы с этой напастью позволили создать и отточить эффективные средства защиты от злонамеренных нарушений в работе памяти. Однако нынешняя статья Дауда показывает, по свидетельству экспертов, что проблема не исчезла, а просто переместилась на более сложный и, можно даже сказать, изощренный уровень.
В самом простом изложении техническая суть открытия Дауда сводится к очень тонкой работе с NULL pointer, особым указателем адреса памяти с несуществующим значением. В большинстве случаев приложение должно остановиться и обрушиться, если почему-то вдруг происходит обращение к значению NULL в памяти. Однако обнаружено, что в данной ситуации есть возможность заставлять некоторые приложения обращаться к произвольным адресам памяти и выполнять соответствующие коды всякий раз, когда происходит доступ к NULL pointer. Правда, добиться этого в реальности чрезвычайно сложно, а в общей ситуации для разных приложений практически невозможно. Так, во всяком случае, считалось до работы Марка Дауда, открывшей новый класс уязвимостей, свойственных чуть ли не всем компьютерным платформам.
Возникает закономерный вопрос: если эти самые NULL-указатели так опасны, почему их до сих пор используют в кодах программ, вместо того чтобы от них отказаться? К сожалению, эта проблема программирования имеет слишком глубокие корни, уходящие к аппаратным кодам, которые непосредственно управляют работой регистров памяти. Иначе говоря, опора на NULL-указатели, чрезвычайно полезные для начальных установок переменных, заложена в основы взаимодействий компьютера с программными приложениями.
Поскольку эта опасность известна давно, в современных ОС предпринят ряд мер для защиты от угрозы и предельного сокращения времени, в течение которого может действовать вредоносный баг. По этой причине опасные в прошлом баги стали ненадежны с точки зрения атак, и их, вообще говоря, перестали воспринимать как существенную угрозу. Теперь же работа Дауда показала, что, сконцентрировавшись на единственном, но широко распространенном приложении вроде flash-плеера, злоумышленники по-прежнему могут эффективно использовать переполнение буфера. В частности, продемонстрировано, что встроенная в плеер виртуальная машина (ActionScript Virtual Machine) может быть очень полезна не только для быстрого выполнения скриптов в онлайновой рекламе, но и для хитроумных атак злоумышленников. Дауд изготовил вредоносный SWF-файл (Shockwave Flash), способный одновременно и без следов поражать компьютеры как с браузерами Internet Explorer, так и Firefox, не вызывая сбоев в работе самих программ.
Софтерринки
Автор: Илья Шпаньков
ОС Windows
Адрес www.robotask.com
Версия 3.0
Размер 3,8 Мбайт
Интерфейс английский
Цена $119,95
Ознакомительный период 30 дней
Каких бы высей ни достигли частоты процессора и объемы оперативной памяти, при выполнении однотипной рутинной работы помощи от них ни на грош. А вот, скажем, программа RoboTask вполне способна облегчить "сизифов труд". Она позволяет автоматизировать большинство операций, ежедневно выполняемых нами на компьютере, - начиная от запуска часто используемых приложений и заканчивая отправкой ответов на поступившую электронную корреспонденцию. Причем перед пользователем открывается широкий простор для творчества: благодаря элементам, заимствованным из программирования (условный оператор IF/ELSE, циклы, переменные и многое другое), утилита позволяет создавать довольно сложные последовательности операций.