Опубликован: 05.08.2010 | Доступ: свободный | Студентов: 2825 / 363 | Оценка: 4.12 / 4.02 | Длительность: 10:07:00
Лекция 13:

Безопасность в WEB-разработке

Аннотация: Лекция посвящена современным угрозам для web-приложений. Слушатели узнают о наиболее характерных уязвимостей web-приложений, а также о недавних хакерских атаках. Вместе с тем действия хакеров стимулируют адекватный ответ производителей ПО, в том числе Microsoft.

Презентацию к данной лекции Вы можете скачать здесь.

Хакерским атакам в 2009-м году подверглись самые разные организации, от Twitter и Facebook до армии США, банков и телекоммуникационных компаний [1].

При этом использовались все виды уязвимостей, включая Cross Site Scripting, SQL-инъекции, управление сессиями, ClickJacking. Были украдены миллиарды долларов и миллионы учетных записей. Финансовый кризис 2008-2009 годов привел к тому, что многие бывшие служащие, ныне безработные, начали активно сотрудничать с хакерами в поисках альтернативных финансовых средств. Самым популярным хакерским приемом является взлом, на этом многие из них зарабатывают до $10 000 в неделю и более [1].

Отмечается рост уязвимостей, достигший в 2009-м году 3100 против 2835 в 2008 году (рост на 10%). 78% уязвимостей приходится на web-приложения [1].

В случае с web-приложениями 90% уязвимостей приходится на коммерческие веб-приложения, 8%-на веб-браузеры и 2% на веб-серверы [1].

Среди браузеров Firefox обеспечил 44 процента от общей величины уязвимостей, Safari - 35 %, Internet Explorer - 15%, Opera - 6% [1].

В области коммерческих приложений большинство хакерских атак использовали такие уязвимости, как SQL-инъекции (25%) и XSS (17%). Очень часто приходится сталкиваться с такими проблемами, как утечка информации, Cross Site Scripting, проблемы аутентификации и управление пользовательскими сессиями [1].

В первой половине 2009 года наиболее уязвимыми были продуты компаний Sun, IBM, SAP, а также программы PHP и Apache [1].

Сбои в работе информационной системы могут поставить под угрозу нормальную работу компании. Ущерб от одной неисправности может превысить $500 000.

По данным Ponemon Institute, ущерб от сбоя в базе данных составляет $202 на каждую запись. Если в небольшой компании имеется БД с 5000 записей, ущерб может составить более одного миллиона долларов.

Несоблюдение правил информационной безопасности может поставить предприятие под угрозу. Взлом сайта компании может отпугнуть потребителей и сподвигнуть их обратиться к конкурентам.

Многие проблемы связаны с недостаточной информированностью. Так, многие ИТ-специалисты по-прежнему считают, что наличие сетевого экрана, IDS, SSL сертификатов, и т.д. защитит их от хакеров и нападения на веб-сайты. Это напоминает ситуацию с закрытой входной дверью, но открытыми окнами и боковыми дверями в надежде, что грабители попытаются войти через переднюю дверь.

Хакеры постоянно совершенствуются. Иногда они даже имеют государственную поддержку. По некоторым сведениям за отключениями электроэнергии в США стоят китайские хакеры [1].

Уязвимости 10 известных IT-компаний в 2009 году

  1. PhpMyAdmin - злоумышленник может выполнить вредоносный PHP-код на web-сервере.
  2. SAP cFolders Cross Site Scripting And HTML Injection - хакер запускает HTML или JavaScript код на атакуемом web-сайте, это делает возможной кражу паролей для аутентификации и контроля, основанных на Cookie.
  3. Sun Java System Access Manager Cross-Domain Controller (CDC) Cross Site Scripting - злоумышленник может запустить код произвольного сценария в браузере пользователей сайта. При этом он может украсть пароль для аутентификации на основе Cookie и осуществлять другие атаки.
  4. Citrix Web Interface Unspecified Cross-Site Scripting - злоумышленник может запустить код произвольного сценария в браузере пользователей сайта. При этом он может украсть пароль для аутентификации на основе Cookie и осуществлять другие атаки.
  5. Sun Java System Web Server Reverse Proxy Plug-in Cross-Site Scripting - злоумышленник может запустить код произвольного сценария в браузере пользователей сайта. При этом он может украсть пароль для аутентификации на основе Cookie и осуществлять другие атаки.
  6. Apache Tomcat Form Authentication Existing/Non-Existing Username Enumeration - благодаря этой уязвимости хакер может взламывать пароли пользователей и осуществлять другие атаки.
  7. phpMyAdmin 'setup.php' PHP Code Injection - злоумышленник может запускать вредоносный PHP-код на web-сервере.
  8. F5 Networks FirePass SSL VPN 'password' Field Cross-Site Scripting - межсайтовое выполнение сценариев. Злоумышленник может запустить код произвольного сценария в браузере пользователей сайта. При этом он может украсть пароль для аутентификации на основе Cookie и осуществлять другие атаки.
  9. Multiple Symantec Products Log Viewer Multiple Script Injection - Злоумышленник может запустить код произвольного сценария в браузере пользователей сайта. При этом он может украсть пароль для аутентификации на основе Cookie и осуществлять другие атаки.
  10. IBM Tivoli Identity Manager Multiple Cross Site Scripting - межсайтовый скриптинг. Хакер выполняет в браузере пользователей уязвимого сайта HTML или JavaScript-код. Благодаря этому злоумышленник может украсть пароли на основе Cookie. Возможны другие атаки [1].

Тип уязвимости зависит от того, разработано ли веб-приложение в США, или для его разработки были привлечены сторонние фирмы из Индии, Китая, России и других стран.

Считается, что на одну опубликованную атаку приходится более сотни неопубликованных атак. В частности, компьютеры Пентагона зондируются 360 миллионов раз в день [1].

Наиболее известные web-атаки, произошедшие в первой половине 2009-го года

Июнь 2009 - сайт компартии Великобритании был атакован китайскими хакерами. Заражение произошло с помощью iFrame-F скрипта, помещенного в файл silverlight.js.

Июнь 2009 - сайты британских банков HSBC и Barclays были поражены благодаря уязвимости XSS, а сайт издательства The Telegraph был подвергнут SQL-инъекции.

Май 2009 - используя SQL-уязвимость, турецкие хакеры, известные как "m0sted", перенаправляли пользователей на web-страницу протеста против изменения климата.

Май 2009 - румынский хакер Uno, используя SQL-инъекцию, получил доступ к 245000 записей сайта Orange France.

Май 2009 - с помощью SQL-инъекции на главные страницы 60 000 web-сайтов был загружен вредоносный JavaScript-код IFRAME.

Май 2009 - Vektor, член группы Team Elite, используя XSS-уязвимость, разместил на сайте кинематографической ассоциации ссылки в виде плавающих фреймов на сайт Pirate Bay.

Апрель 2009 - червь Mooney Twitter (названный в честь Mikeyy Mooney, 17-летнего хакера, создавшего сайт StalkDaily.com - конкурент сайта Twitter) поразил сайт Twitter, используя уязвимости межсайтовое выполнение сценариев и подделка меж-сайтного запроса.

Февраль 2009 - хакеры атаковали сайт Twitter, используя уязвимость ClickJacking. При этом пользователи загружают вредоносный код, нажимая на невидимые ссылки, расположенные поверх реальных ссылок [1].

Наиболее распространенные уязвимости

Утечки информации. В процессе работы с обычными web-приложениями может произойти утечка конфиденциальной информации.

Cross-Site Scripting. Межсайтовое выполнение сценариев позволяет удаленному хакеру нарушать целостность кода приложения за счет инъекции вредоносного кода в само приложение, часто прямо в БД. Эти атаки могут позволить украсть cookie пользовательских сессий, подменить содержимое, и перенаправить пользователей на вредоносные веб-сайты.

ClickJacking - это термин, который обозначает множество методов, которые могут быть использованы для того, чтобы обманом заставить пользователя сделать щелчок по затененному или скрытому веб-элементу, обычно приводящий к нежелательной транзакции [2].

Недостатки авторизации и аутентификации. Можно получить пароль путем перебора, это позволяет хакеру получить доступ к ресурсам в пределах приложения.

Управление сессиями. Эта уязвимость позволяет хакеру пользоваться ресурсами с привилегиями пользователя.

Удаленное выполнение кода. Переполнение буфера, целочисленное переполнение, атаки Format String могут дать хакеру немедленный контроль на web-приложение, и хост операционной системой, это может привести к отказу от обслуживания.

Атаки SQL-инъекции. Позволяют выполнять команды на основной БД web-приложения, получить доступ к содержимому БД, управлению сайта и запуску команд операционной системы.

Небезопасное размещение ресурсов. Информация, хранящаяся в файлах электронных таблиц, текстовых файлах, документах Word может храниться в небезопасных каталогах на веб-сайте. Например, по умолчанию конфигурация некоторых приложений электронной коммерции предполагает хранение данных о кредитных картах в небезопасных каталогах.

Несанкционированный доступ к каталогам. В этом случае можно просматривать содержимое каталогов и всех ресурсов, которые он содержит. Этот тип уязвимости может помочь злоумышленнику собирать информацию и планировать дальнейшие нападения на сервер.

Подделка меж-сайтовых запросов (CSRF). В этом случает от имени пользователя рассылается вредоносный код

Усилия Microsoft, направленные на защиту от вредоносного ПО

XSS-фильтр в IE8. По данным Web Application Security Consortium (WASC) из самых распространенных уязвимостей, таких как SQL-инъекции, утечки информации и межсайтовый скриптинг, наиболее распространенными являются XSS-атаки - 41%. На 10 297 сайтов, проверенных в рамках исследования WASC, было обнаружено 28 796 XSS-уязвимостей, которые присутствовали на 31% изученных сайтов.

Для борьбы подобного рода уязвимостями в MS Internet Explorer 8 был установлен XSS-фильтр, призванный обеспечить защиту путем автоматического обнаружения и предотвращения наиболее распространенных XSS-атак без потери производительности или совместимости. Было обнаружено, что 70% возможных угроз, с которыми могут столкнуться пользователи IE8, предотвращаются XSS-фильтром [3].

SmartScreen Technology. Internet Explorer 8 имеет собственный фильтр против фишинга под названием SmartScreen, который производит анализ веб-страниц и предупреждает пользователя в случае нахождения веб-сайта, подозреваемого в фишинге. Для своей работы SmartScreen использует базу данных уже известных фишинговых сайтов, поэтому защита от новых ресурсов, созданных злоумышленниками, является менее эффективной.

Data Execution Prevention (DEP) (англ. Предотвращение выполнения данных) - функция безопасности, встроенная в семейство операционных систем Windows, которая не позволяет приложению исполнять код из области памяти, помеченной как "только для данных". Она позволит предотвратить некоторые атаки, которые, например, сохраняют код в такой области с помощью переполнения буфера. DEP работает в двух режимах: аппаратном, для процессоров, которые могут помечать страницы как "не для исполнения кода", и программном, для остальных процессоров. Эта функция впервые появилась во втором пакете обновлений для Windows XP [4].

Среди новых возможностей IE8 (по сравнению с предыдущими версиями этого браузера) - функция, позволяющая посещать сайты анонимно. При этом не сохраняются файлы cookie, история серфинга и прочие идентификационные данные. Она называется InPrivate и предназначена для того, чтобы пользователи могли скрыть свое посещение каких-либо сайтов от других людей.

Краткие итоги

Почти 90 процентов проанализировали веб-приложений имеют серьезные уязвимости, которые потенциально могут привести к раскрытию конфиденциальной информации. К основным уязвимостям относятся: утечки информации, Cross-Site Scripting, ClickJacking, недостатки авторизации и аутентификации, удаленное выполнение кода, SQL-инъекции, небезопасное размещение ресурсов, несанкционированный доступ к каталогам, подделка меж-сайтовых запросов (CSRF). 90% уязвимостей приходится на коммерческие веб-приложения, 8%-на веб-браузеры и 2% на веб-серверы. Уязвимости и связанные с ними хакерские атаки могут привести к краже данных, взлому учетных записей пользователей, доступу к базе данных организации и другим проблемам. Для противодействия действиям злоумышленников Microsoft разработала целый ряд технологий, среди которых - XSS-фильтры, технологии SmartScreen и Data Execution Prevention.

Набор для практики

Вопросы:

  1. Какие уязвимости web-приложений вы знаете?
  2. Что такое XSS?
  3. Чем опасны SQL-инъекции?
  4. Что такое ClickJacking?

Упражнения:

  1. Продемонстрируйте настройку XSS-фильтра MS IE8
  2. Продемонстрируйте настройку механизма Data Execution Prevention.