Содержание статьи
Работая системным администратором и консультантом по IT-безопасности предприятия, мне приходилось львиную долю времени посвящать анализу новостей, выискивая информацию об уязвимостях, найденных в программном обеспечении, используемом на предприятии. Как говорится, знаешь – значит, вооружен! И это так, поскольку можешь вовремя поставить патч или применить политики безопасности для смягчения последствий проводимых Интернет-атак или вирусных эпидемий. Но собирать информацию было совсем не просто.
Приходилось штудировать десятки сайтов самих разработчиков ПО и сайтов аналитических групп, специализирующихся на поисках уязвимостей, поскольку единого Web-ресурса, даже англоязычного, тогда не было. Да и сейчас, по большому счету, ресурса, предоставляющего избыточную информацию обо всех свежих уязвимостях, да еще и периодически обновляемого несколько раз в день, практически не найти. Проблема в том, что компании, владеющие ресурсами, на которых присутствует bugtrack-страничка, либо сами являются производителями ПО, тогда на таких ресурсах размещена лишь информация о конкретном ПО конкретного производителя, либо это IT-security-компании, имеющие штат разработчиков/аналитиков и позиционирующие себя экспертами в области безопасности, которые сами анализируют некое ПО на наличие уязвимостей и публикуют эту информацию на своих сайтах. Такие IT-security-компании в большей части специализируются на заказных аудитах приложений, размещая результаты исследований на своих источниках. Это ведет к тому, что уделяется недостаточное внимание сбору информации с других ресурсов необъятного Интернета, в том числе сайтов других аналитических компаний и сайтов-производителей ПО.
Именно поэтому некоторое время назад на
нашем портале был основан новостной раздел, посвященный найденным уязвимостям в приложениях различных производителей.
Данный ресурс постоянно, с периодом в несколько часов, обновляется, и пополнятся новейшей информацией со всего киберпространства. Большинство новостей содержат примеры и ссылки на реальные эксплоиты.
Вся проходящая через ресурс информация накапливается в базе данных для последующего анализа. В данной статье мы и хотели бы осветить статистику и динамику происходящего в Интернете за первое полугодие 2007 года.
Сухая, важная статистика
Данные, приведенные в статье, отражают информацию об опубликованных в разделе багтрак уязвимостях разнообразного программного обеспечения, начиная с самых популярных, таких как Microsoft Internet Explorer, PHP и Apache, и заканчивая совсем неизвестными рядовому пользователю программными средствами. Как видно из таблицы 1, общее количество уязвимостей достаточно велико и составляет 1654, причем бОльшая доля из них поставляется с готовыми эксплоитами! Большинство уязвимостей являются удаленными, что свидетельствует о тенденции хакеров все более полагаться на технические средства, чем на методы социальной инженерии. Пользователи уже не так доверчивы, как прежде, и редко запускают исполняемые файлы, вложенные в спамерские письма. Диаграммы
наглядно отражают данные, приведенные в таблице.
Общие данные по уязвимостям |
Количество |
Количество уязвимостей |
1654 |
уязвимостей с эксплойтами |
1010 |
уязвимостей без эксплойтов |
644 |
удаленных уязвимостей |
1522 |
локальных уязвимостей |
132 |
Основные типы уязвимостей и их количественный эквивалент отражены в таблице.
Основные типы уязвимостей |
Количество |
Web-ориентированные уязвимости |
568 |
Отказ в обслуживании |
328 |
Выполнение произвольного кода |
286 |
Обход ограничений безопасности |
93 |
Эскалация привилегий |
61 |
Доступ к конфиденциальной |
54 |
Доступ к файловой системе |
30 |
Следующая диаграмма отражает эту же информацию в процентном соотношении. Как видно, 40% процентов обнаруженных багов составляют уязвимости, позволяющие осуществить атаки на Web-приложения. Атаки, ведущие к отказу системы в обслуживании и позволяющие выполнить произвольный код на целевой системе, расположены на 2-ом и 3-ем местах соответственно. Широко распространены уязвимости, позволяющие обойти ограничения безопасности в системе. Чаще всего такие ошибки используют злоумышленники для обхода механизмов аутентификации при входе в систему.
Уязвимости в Web-приложениях
Почему же так много уязвимостей найдено в Web-приложениях и как их используют злоумышленники? Для ответа на этот вопрос необходимо рассмотреть, как подразделяются атаки, использующие данные уязвимости. Основных атак, нацеленных на Web-приложения, три: PHP-инклюдинг, SQL-инъекции и Межсайтовый скриптинг (или XSS-нападение). Их соотношение представлено в
таблице и на диаграмме. Остановимся на каждой из атак поподробнее.
Атаки, нацеленные на Web-приложения |
Количество |
Всего |
568 |
PHP-инклюдинг |
290 |
XSS (Межсайтовый скриптинг) |
149 |
SQL-инъекции |
205 |
Другие |
24 |
Эксплуатирование нашумевших эксплойтов удаленного/локального PHP-инклюдинга возможно благодаря наличию в PHP четырех функций: include(), include_once(), require(), require_once(). Все они включают код сторонних сценариев и выполняют его, но каждая функция имеет свои нюансы. Несмотря на то что эксплоиты включения файлов чрезвычайно распространены, довольно просты для применения и очень опасны, множество программистов по-прежнему совершают типичные ошибки при разработке Web-приложений, оставляя лазейки для ушлых хакеров.
SQL-инъекция – это еще один из способов взлома Web-сайтов, позволяющий злоумышленнику выполнить произвольные SQL-запросы в базе данных установленного приложения. И опять же, SQL-инъекция имеет место быть в случае, если разработчик забыл обработать входящие данные одной из функций, экранирующих специальные символы в строках. Например, функция mysql_real_escape_string() добавляет обратную косую черту к символам \x00, \n, \r, \, ', " и \x1a, делая невозможным попытку добавления произвольного SQL-запроса.
Суть межсайтового скриптинга заключается в том, что атакующий использует уязвимый Web-сервер для атаки на Web-клиентов. При открытии страницы зараженного сайта в браузере пользователя срабатывает злонамеренный сценарий, который может находиться как на самом зараженном сервере, так и на другом источнике. Таким образом, из-за ошибок в серверной части страдают простые пользователи.
Популярность перечисленных атак напрямую обуславливается популярностью Интернета и самого программного обеспечения, используемого для распространения атак. Так, действительно, подавляющее большинство сайтов хостятся с использованием Web-серверов Apache и Microsoft IIS. Подавляющая доля сценариев написана с использованием языков PHP и ASP, причем популярность PHP существенно больше. Из таблицы
видно, что уязвимостей, позволяющих провести SQL-инъекции в PHP-сценариях, в 3 раза больше, чем в ASP-сценариях. А для Интернет-серфинга пользователи используют Microsoft Internet Explorer и Mozilla Firefox, и в гораздо меньшей степени - Opera Web
Browser.
SQL-инъекции в PHP- и ASP-сценариях |
205 |
в PHP-сценариях |
154 |
в ASP-сценариях |
51 |
Уязвимости, нацеленные на Web-приложения |
Январь |
Февраль |
Март |
Апрель |
Май |
Июнь |
PHP-инклюдинг |
60 |
42 |
51 |
72 |
44 |
30 |
XSS (Межсайтовый скриптинг) |
23 |
21 |
24 |
23 |
25 |
33 |
SQL-инъекции |
40 |
27 |
47 |
36 |
30 |
25 |
Поэтому логично, что многие перечисленные Web-приложения оказались в списке десяти самых уязвимых приложений, то есть тех, на которые приходилось больше всего публикаций и эксплойтов. Кстати, наибольшая хакерская активность, нацеленная как на Web-приложения, так и на другие популярные программы, приходится на середину весны и постепенно спадает к лету. Видимо, хакерам тоже нужно отдыхать
:).
Рейтинг самых уязвимых приложений
Рейтинг возглавляет многими любимая, а кем-то, наоборот, ненавистная, но никого не оставляющая равнодушным - операционная система Microsoft Windows. Для сравнения, уязвимостей, найденных в ядре Linux и Sun Solaris, в сумме чуть меньше, чем обнаруженных в Windows. По приведенным данным видно, что растет и популярность Apple Mac OS X.
Рейтинг приложений с наибольшим количеством обнаруженных уязвимостей |
Количество |
Microsoft Windows |
42 |
Xoops |
29 |
Microsoft Internet Explorer |
27 |
PHP |
23 |
Sun Solaris |
21 |
Mozilla Firefox |
21 |
Linux Kernel |
19 |
Microsoft Office |
16 |
Apple Mac OS X |
15 |
Apache |
12 |
Интересно, что достаточно много сообщений об уязвимостях относится к объектно-ориентированному инструментарию для создания сайтов Xoops. Анализируя динамику появления новостей, отраженную в таблице, становится ясно, что 17 из 29 уязвимостей Xoops были опубликовано всего за один месяц. Аналогичная ситуация прослеживается и с другими приложениями. Так, большинство багов, приходящихся на Apple Mac OS X, было опубликовано в январе этого года, а багов в PHP - в марте. Наглядно увидеть пики найденных уязвимостей по каждому из приложений можно на графике.
Приложения/кол. уязвимостей |
Январь |
Февраль |
Март |
Апрель |
Май |
Июнь |
Microsoft Windows |
4 |
5 |
6 |
15 |
3 |
9 |
Xoops |
0 |
0 |
4 |
17 |
4 |
4 |
Microsoft Internet Explorer |
7 |
6 |
6 |
3 |
2 |
3 |
PHP |
2 |
0 |
14 |
2 |
4 |
1 |
Sun Solaris |
4 |
3 |
1 |
2 |
7 |
4 |
Mozilla Firefox |
1 |
8 |
3 |
3 |
3 |
3 |
Linux Kernel |
1 |
4 |
7 |
1 |
2 |
4 |
Microsoft Office |
4 |
3 |
4 |
1 |
2 |
1 |
Apple Mac OS X |
11 |
1 |
0 |
0 |
3 |
0 |
Apache |
1 |
2 |
1 |
3 |
2 |
3 |
Если отследить источники появления информации в пиковый период, становится ясно, что все они сосредоточены на отдельном ресурсе, а не разбросаны по всему Интернету. Например, данный
URL,
http://projects.info-pull.com/moab/index.html, имеющий заголовок «the Month of Apple Bugs», посвящен уязвимостям, обнаруженным в продуктах Apple. Отсюда и всплеск публикаций об Apple Mac OS X в январе месяце. То же касается Xoops и PHP. Выводы каждый сделает сам, но очевидно, что в руки хакеров попадает еще одна возможность нечистого заработка денег. Поскольку поиск уязвимостей может осуществляться не только с целью манипулирования уязвимой системой, а с целью последующего шантажа или устранения конкурентов. Такие преступления возможны благодаря стремительному росту рынка, участниками которого являются игроки, специализирующиеся на IT-безопасности. Так, например, обнаружение уязвимостей в антивирусном продукте одного производителя, гораздо в большем количестве, чем в продуктах его конкурентов, наверняка вызовет снижение авторитета этого игрока и, как следствие, – отток клиентов и уменьшение лояльности партнеров.
Замечания и тенденции
В завершении хотелось бы дать несколько замечаний по приведенным в статье данным.
Информация, приведенная в таблицах, демонстрирует бОльшую надежность Linux по сравнению с Microsoft Windows, несмотря на увеличивающуюся популярность системы с открытым кодом. Однако необходимо отметить, что данные отражают лишь уязвимости, обнаруженные в ядре Linux. Существует множество различных Linux-based дистрибутивов, ошибок в которых порой гораздо больше, чем в упомянутой системе от Microsoft.
Уязвимостей, позволяющих выполнить DoS-атаку на целевую систему, оказывается, даже несколько больше, чем уязвимостей, ведущих к выполнению произвольного кода или другим более функциональным, а не деструктивным действиям. Отчасти этот факт связан с тем, что изначальным детищем хакера является некий Proof of Concept (PoC), то есть простейший эксплойт, подтверждающий его работоспособность, например то, что атака с переполнением буфера в данном случае возможна. Поэтому чаще всего PoC-эксплоиты, ведущие к отказу системы в обслуживании, в последствии перерастают в более совершенные и функционально насыщенные зловреды.
В последнее время все бОльший оборот набирают фишинг-атаки и другие атаки, осуществляющие подмену таких данных, как строка URL в браузере пользователя или подмена КЭШа на DNS-сервере. Число таких атак пока еще несравнимо, например, с DoS-атаками, но однозначно прослеживается тенденция к их увеличению.