Одна из проблем, потенциально затрагивающая всех пользователей — уязвимости в программном обеспечении. Это ошибки в реализации программы, которые могут быть использованы злоумышленниками для получения несанкционированного доступа к данным, внедрения вредоносного кода или выведения системы из строя. Чаще всего, уязвимости возникают даже не из-за ошибок при программировании, а из-за недостаточной проработки мельчайших деталей на этапе проектирования. Нередко на момент разработки система действительно кажется практически неуязвимой, но через некоторое время появляется новая технология, и хакеры доказывают, что на нее можно провести успешную атаку. Характерный пример — алгоритм симметричного шифрования DES, был разработан в 1975 году, и на тот момент считался абсолютно надежным. Однако, в 1990 году его удалось взломать с использованием огромной сети компьютеров за 39 дней, а в 1998 был построен суперкомпьютер, который взломал DES менее чем за три дня.
Постоянное тестирование широко используемого ПО, с целью обнаружения в нем уязвимостей, и последующий выпуск обновлений, закрывающих эти уязвимости, — это нормальный процесс жизни программы. Причем, чем сложнее и распространеннее программа, тем больше шансов, что в ней будет найдена уязвимость.
Поиск уязвимостей
Как правило, разработчики стараются своевременно закрывать обнаруженные уязвимости и самостоятельно, или с привлечением внешних экспертов, исследуют создаваемое ими ПО. Однако, поиском занимаются не только они, но и сторонние исследователи. Некоторые из них делают это для повышения общего уровня безопасности в интернете. Другие ищут уязвимости за вознаграждение. Третьи предпочитают продавать информацию о найденных уязвимостях на черном рынке.
Дело в том, что информация о новой уязвимости весьма ценится у киберпреступников. Если исследователь обнаруживает «дырку» в системе и предоставляет подтверждение возможности ее практической эксплуатации (проще говоря — пишет эксплойт), то на черном рынке он может заработать несколько десятков тысяч долларов. И есть целый сектор преступного бизнеса, специализирующийся именно на поиске и продаже уязвимостей.
К счастью, этот бизнес не очень массовый. Во-первых, потому что далеко не все обнаруженные уязвимости реально можно проэксплуатировать. Нередко для того чтобы нанести реальный вред, необходимо сочетание нескольких условий, и шансы, что такое сочетание встретится на практике, — невелики. Во-вторых, для того чтобы написать эффективный эксплойт нужен очень высокопрофессиональный программист. А таких все-таки не так уж и много.
Еще один вариант заработка на уязвимостях — продажа их сторонним компаниям, казалось бы, напрямую не связанным с преступностью. Некоторые исследователи поступают именно так. Но компании эти могут создавать шпионское ПО для нужд правительств или спецподразделений, так что в итоге они все равно будут использованы для нелегитимных манипуляций с информационными системами. К тому же, как выяснилось, безопасность таких компаний не всегда находится на высоком уровне, и может случиться так, что их знаниями завладеют третьи лица. С плачевными последствиями.
Идеалисты, которые ищут уязвимости ради всеобщей безопасности, сталкиваются с дилеммой. С одной стороны, чем позже они объявят о своей находке, тем больше времени дадут разработчикам на решение проблемы. С другой, чем раньше они обнародуют информацию, тем быстрее пользователи узнают, чем эта уязвимость грозит. Ведь злоумышленники, теоретически, также могут найти эту уязвимость и незамедлительно использовать ее в своих целях. Кроме того, раскрытие информации неизбежно приведет к попыткам использования найденной уязвимости во зло. Причем иногда между публикацией информации и первыми атаками проходит немногим более часа. В частности, такая оперативность наблюдалась после обнародования уязвимости Shellshock.
В чем опасность уязвимостей?
Эксплойт — это программа или фрагмент кода, позволяющие использовать уязвимости для атаки на вычислительную систему. В некоторых случаях применение эксплойтов носит массовый характер, то есть при его помощи злоумышленники пытаются атаковать системы широкого круга пользователей. Они эксплуатируют уязвимости в часто используемом ПО (например, таком как Adobe Flash Player) и через них доставляют на компьютеры пользователей вредоносную нагрузку. Обычно они достигают этого применяя так называемыe Drive-by атаки, которые пытаются загрузить вредоносный код всем посетителям зараженного сайта.
Иногда киберпреступники разрабатывают целевые атаки, в ходе которых анализируют программное обеспечение, использующееся конкретной компанией и пишут так называемые «точечные» эксплойты. Такую узкоспециализированную атаку, в частности, провернули в ходе APT Duqu2.0.
Срок «жизни» эксплойтов варьируется. Некоторые из них применяются долгие годы, даже несмотря на то, что разработчики своевременно выпускают патчи, закрывающие соответствующие уязвимости. Просто пользователи не спешат своевременно устанавливать эти патчи.
По данным «Лаборатории Касперского» сейчас злоумышленники активно используют эксплойты, использующие уязвимости из этого набора:
Программный продукт | Уязвимость |
Adobe Flash Player | CVE-2015-0310 |
CVE-2015-0311 | |
CVE-2015-0313 | |
CVE-2015-0336 | |
CVE-2015-0359 | |
CVE-2015-3090 | |
CVE-2015-3104 | |
CVE-2015-3105 | |
CVE-2015-3113 | |
CVE-2015-5119 | |
CVE-2015-5122 | |
CVE-2015-5560 | |
CVE-2015-7645 | |
Microsoft Internet Explorer | CVE-2014-6332 |
CVE-2015-2419 | |
Microsoft Office | CVE-2012-0158 |
Microsoft Windows | CVE-2015-1701 |
Как видно по CVE-кодам уязвимостей, большая их часть обнаружена в этом году, однако встречаются и уязвимости 2014 и даже 2012 года. И тот факт, что их до сих пор используют, говорит именно о том, что многие пользователи до сих пор не озаботились обновлением соответствующего ПО.
Как уберечься от эксплойтов?
Основной совет тут простой — не забывать о регулярных обновлениях, и не использовать устаревшее ПО. Воспользоваться последним советом получается не всегда — порой сложно подобрать аналог удобной и знакомой программе. Разработчики за уязвимостями в устаревшем ПО уже не следят и патчи не выпускают, а вот злоумышленники не оставляют без внимания. Соответственно, чтобы продолжать использовать такую программу, необходимо применять дополнительные средства защиты.
Есть специализированные инструменты, которые позволяют сканировать компьютеры на наличие известных уязвимостей и, в случае обнаружения, автоматически устанавливать обновления. Такие, например, как Vulnerability Assessment and Patch Management (часть Kaspersky System Management). Кроме того, «Лаборатория Касперского» разрабатывает аналогичное решение и для домашних пользователей — Kaspersky Software Updater. В настоящее время эта утилита находится в стадии бета-тестирования.
Принцип наименования уязвимостей, принятый в «Лаборатории Касперского», несколько отличается от системы CVE (Common Vulnerabilities and Exposures). У CVE один код соответствует одной уязвимости, а у нас каждый код может относиться сразу к набору уязвимостей (чаще всего, к уязвимостям, закрываемым одним патчем, или уязвимостям в одной версии программы) — до нескольких десятков (чаще всего, в соответствии с патчем разработчиков). Таким образом, в данной двадцатке KLA-уязвимостей на самом деле 375 CVE-уязвимостей.
Согласно статистике Kaspersky Security Network, во время сканирования компьютеров наших пользователей наиболее часто выявляются следующие наборы уязвимостей
KLA | Количество Пользователей |
Дата обнаружения | Суть уязвимости | |
1 | KLA10680 | 308219 | 2015-10-14 | Возможность исполнения кода в Adobe Flash Player |
2 | KLA10036 | 256383 | 2014-07-08 | Множественные уязвимости в Adobe Flash и Adobe AIR |
3 | KLA10492 | 228454 | 2013-10-16 | Множественные уязвимости в продуктах Oracle |
4 | KLA10670 | 182972 | 2015-09-21 | Множественные уязвимости в продуктах Adobe |
5 | KLA10650 | 176435 | 2015-08-11 | Множественные уязвимости в продуктах Adobe |
6 | KLA10653 | 150987 | 2015-05-18 | Возможность внедрения кода в QuickTime |
7 | KLA10682 | 150960 | 2015-10-13 | Множественные уязвимости в Adobe Acrobat и Reader |
8 | KLA10628 | 138039 | 2015-07-14 | Множественные уязвимости в Adobe Acrobat |
9 | KLA10651 | 135291 | 2015-08-17 | Возможность внедрения кода в VLC Media Player |
10 | KLA10655 | 134824 | 2015-09-01 | Множественные уязвимости в Google Chrome |
11 | KLA10672 | 108722 | 2015-09-22 | Множественные уязвимости в Mozilla Firefox |
12 | KLA10654 | 107661 | 2015-08-27 | Множественные уязвимости в Mozilla Firefox |
13 | KLA10691 | 103880 | 2015-11-10 | Множественные уязвимости в Google Chrome |
14 | KLA10344 | 100311 | 2009-11-05 | Множественные уязвимости в Sun Java SE |
15 | KLA10669 | 92345 | 2015-09-16 | Множественные уязвимости в Apple iTunes |
16 | KLA10684 | 91013 | 2015-10-22 | Возможность исполнения кода в плагине Flash для Google Chrome |
17 | KLA10663 | 87898 | 2015-09-08 | Возможность исполнения кода в Adobe Shockwave Player |
18 | KLA10690 | 87478 | 2015-11-10 | Множественные уязвимости в продуктах Adobe |
19 | KLA10569 | 86657 | 2015-04-28 | Уязвимость в OpenOffice |
20 | KLA10671 | 84380 | 2015-09-21 | Обновление Flash Player для Google Chrome |
Особенно примечательны наборы KLA10680 и KLA10650. В первом из них, помимо всего прочего, присутствует уязвимость CVE-2015-7645, а во втором — CVE-2015-5560. И это уязвимости, которые можно найти в предыдущей таблице, где перечислены активно используемые эксплойтами дырки.
Разумеется, в защитных продуктах имеются и технологии для предотвращения попыток эксплуатации уязвимостей. Они пристально следят за деятельностью приложений (особенно тех, в которых часто обнаруживают уязвимости), выявляют подозрительную активность и блокируют ее.
Как обстоят дела в индустрии защитных решений?
Как и в любом программном обеспечении, в защитных решениях могут обнаружиться уязвимости. Единственное отличие заключается в том, что на них лежит гораздо больше ответственности: по сути защитное ПО является последним рубежом защиты. Именно поэтому, в компаниях, работающих в сфере интернет-безопасности к вопросу анализа продуктов на наличие уязвимостей подходят особенно тщательно.
Мы не можем говорить за всю индустрию в целом, а потому расскажем на единственном известном нам примере — собственном. О безопасности собственных продуктов у нас заботятся на всех этапах разработки, начиная с определения поверхности атак на этапе проектирования и заканчивая специализированными тестированиями, направленным на поиск возможных уязвимостей в практически готовом к релизу продукте. В процессе разработки сотрудники R&D не только создают нужную функциональность продукта, но и следят за тем, чтобы эти нововведения нельзя было использовать для нарушения целостности программы.
Мы считаем, что такой подход эффективнее выделенной команды, следящей за уязвимостями во всех продуктах компании. Впрочем, это не означает, что у нас нет такой команды. Специальные архитекторы по безопасности регулярно проверяют новые разработки на предмет наличия в них уязвимостей с применением метода нечеткого тестирования (fuzzing-тестирования) и тестов на проникновение (penetration
test).
Fuzzing – это, по сути, проверка на непредусмотренные действия, при которой программе выдается некорректная или случайная информация. Иными словами, тестирование продукта на нестандартном или искаженном наборе данных.
Тесты на проникновение проводятся как внутри компании, так и с привлечением сторонних экспертов. Но вообще, как показывает практика, не многие сторонние эксперты разбираются в специфике защитных продуктов, а, следовательно, могут эффективно искать в них уязвимости. Также, в «Лаборатории Касперского» есть специальное подразделение, занимающееся поиском уязвимостей в стороннем коде (в частности, его услугами периодически пользуются банки, для анализа безопасности своих приложений). Несмотря на то, что их приоритет – именно сторонние приложения, эти специалисты также проверяют и наши собственные разработки.
Кроме того, мы внимательно прислушиваемся и к мнениям независимых исследователей. Любой человек, обнаруживший уязвимость в наших технологиях, может сообщить о ней через специальный канал связи, который можно найти по адресу http://www.kaspersky.ru/security. Наши эксперты внимательно анализируют поступающие через этот канал сведения. Работа с ними строится следующим образом: первым делом аналитики подтверждают наличие уязвимости. После подтверждения мы связываемся с независимым исследователем и согласовываем сроки публикации его информации. Тем временем данные передаются команде разработчиков, ответственных за создание технологии, а также проводится проверка на воспроизводимость этой уязвимости в других наших продуктах. Надо сказать, бывают случаи, когда независимые исследователи действительно обращают наше внимание на серьезные проблемы, за что им огромное спасибо.
Несколько практических советов
Поскольку радикально исправить ситуацию могут только разработчики ПО, мы предлагаем следующие советы:
- Как уже неоднократно было сказано — обновляться. Если разработчик предлагает обновить свой продукт, велика вероятность, что у него на то есть серьезные основания.
- Не отключать функцию автоматического обновления. Да, если у вас много программ, это может создать некоторые неудобства, но безопасность дороже.
- Удалять программы, которыми вы перестали пользоваться. Незачем им лежать мертвым грузом на жестком диске вашего компьютера. Однажды такие программы могут сослужить вам дурную службу.
- Не использовать устаревшее ПО. Если это действительно удобная и полезная программа, то у нее наверняка найдутся аналоги. Да, иногда сложно отказаться от знакомого интерфейса, но лучше потратить несколько дней на освоение нового, чем пользоваться уязвимым ПО.
- Периодически сканировать компьютер на наличие известных уязвимостей, при помощи специализированных утилит.
Не бывает неуязвимых, бывают хорошо защищенные