За последнее десятилетие Web-сайты (Web-приложения) прошли путь от статических страниц до динамических интерактивных порталов с широкой функциональностью и сложными системами управления информацией. Сегодня Web-приложения не только являются достойными конкурентами многим приложениям для настольных ПК, но и продолжают расширять границы использования благодаря преимуществам безграничных облачных сервисов. Практически каждое настольное офисное приложение имеет аналог, работающий через Web-браузер. Пользователи могут с легкостью создавать, редактировать и распространять информацию через Web-браузеры независимо от физического расположения и используемых устройств, избавляясь от оков офиса и настольных ПК.
Бизнес также поспособствовал бурному развитию Web-приложений. Помимо того, что Web-приложения предоставляют новые коммерческие возможности, разрабатывать их гораздо дешевле и быстрее, чем обычные настольные приложения. Web-приложения проще и в развертывании: все, что нужно для их использования – это иметь совместимый Web-браузер. Любые требования к операционной системе (Windows®, Mac, Linux® и т. д.) и аппаратному обеспечению (например, наличие свободного дискового пространства) остались в прошлом.
Объемы информации, с которыми работают Web-приложения, велики как никогда. Работаем ли мы с банковской онлайн-системой или записываемся на прием к врачу, мы ежедневно доверяем Web-приложениям безопасно обрабатывать миллиарды записей, в том числе наши конфиденциальные и персональные данные.
Но чем мощнее и функциональнее Web-приложение, тем сложнее его код, написанный разработчиками. Об этом говорит сайт https://intellect.icu . А чем сложнее код, тем больше он подвержен потенциальным уязвимостям. В итоге это может привести к серьезным пробелам в безопасности. Уязвимости Web-приложений неустанно изучаются злоумышленниками, целью которых может являться, например, нажива на краже важной информации или обретение сетевой популярности посредством взлома какой-либо программы. С учетом этих угроз, а также того, что информация в наше время может являться мощным орудием, недопустимо относиться к защите Web-приложений спустя рукава.
Защита Web-приложений
Как только Web-приложение становится доступным в сети, оно становится мишенью для кибератак. Независимо от того, осуществляется ли атака целенаправленно злоумышленниками или является результатом работы автоматизированного вредоносного ПО, исходите из того, что любое Web-приложение будет постоянно проверяться на прочность со всех сторон. Следовательно, прежде чем начинать использовать Web-приложение, необходимо обеспечить его защиту.
Защита сетевого уровня (хостинга) Web-приложений является проторенной дорожкой и представляет собой ряд несложных действий, которые необходимо выполнить. Однако сетевой экран не обеспечивает защиты самих Web-приложений. Ахиллесовой пятой в защите онлайновой информации является уровень приложений. Уязвимости приложений, возникшие вследствие ошибок в коде и использования слабых приемов программирования, постоянно эксплуатируются хакерами и послужили причиной ряда крупнейших утечек данных, произошедших в недавнем прошлом. В марте 2008 года была похищена информация о 134 миллионах кредитных карт процессинговой компании Heartland Payment Systems; причиной послужила уязвимость Web-приложения, которую хакеры использовали для внедрения SQL-кода и установки вредоносного ПО. В 2012 году компания Yahoo! несколько раз пострадала от утечек данных, причиной которых послужило использование уязвимостей в Web-приложениях; в результате внедрения SQL-кода и межсайтового скриптинга были украдены пароли более чем от 450 тысяч учетных записей пользователей.
Пренебрежение вопросами защиты Web-приложений может очень сильно отразиться на работе компании. Даже простое искажение страницы Web-сайта может привести к неблагоприятному освещению в средствах массовой информации и ударить по репутации, однако чаще всего атаки хакеров нацелены на похищение персональных данных, что является наиболее выгодным для злоумышленников и при этом наносит наибольший ущерб потерпевшей стороне. Утечка данных о заказчиках обычно приводит к тому, что в прессе появляется масса негативных отзывов о компании, после чего следуют судебные санкции и санкции со стороны властей, которые могут привести к потере миллионов долларов и даже к резкому падению курса акций. В случае серьезной утечки данных вы получаете множество скрытых издержек: судебные расследования, простои и лихорадочное переписывание кода Web-приложения. Все это имеет очень высокую цену.
Плохой код – основная причина большинства брешей в Web-приложениях
Основной причиной большинства брешей в Web-приложениях является написанный разработчиками программный код. Разработчики могут допускать ошибки при написании кода или не осознавать всю важность использования приемов безопасного программирования – все это приводит к появлению уязвимостей в приложениях. Рассмотрим для примера код, удаляющий из поля ввода символы, которые не должны приниматься и обрабатываться приложением. Это довольно простой прием программирования, но если о нем забыть, то злоумышленник может использовать поле ввода для выполнения SQL-запроса, в результате которого он сможет получить все данные о пользователях, включая их имена, электронные адреса и даже номера кредитных карт. Такие уязвимости являются источником легкой добычи для киберпреступников, поскольку похищенную информацию можно быстро продать на нелегальных онлайн-рынках. Все Web-приложения необходимо проверять на наличие уязвимостей прикладного уровня, а разработчиков необходимо обучать оценивать риски и писать безопасный код.
Список OWASP Top 10 – лучшая практика защиты Web-приложений
Проект Open Web Application Security Project (см. раздел Ресурсы) – это Open Source-сообщество, сформированное в 2001 году и занимающееся разработкой бесплатных руководств по защите приложений. Сообщество OWASP ведет постоянно актуализируемый список OWASP Top 10, в котором перечислены наиболее опасные уязвимости в системе безопасности Web-приложений. Список OWASP Top 10 является лучшей практикой устранения уязвимостей Web-приложений; на него ссылаются такие солидные организации и нормы безопасности, как PCI DSS, FTC, MITRE, а также большинство организаций, занимающихся тестированием Web-приложений на предмет уязвимостей.
Список OWASP Top 10 за 2013 год
Список OWASP содержит перечень уязвимостей, отсортированных по степени их опасности (на первом месте самый опасный тип уязвимостей). Этот список обновляется каждые три года и в последний раз был обновлен в 2013 году. Список не включает в себя все возможные типы уязвимостей, кроме того, часто бывает, что ту или иную уязвимость можно отнести сразу к нескольким категориям.
1. Внедрение кода
Внедрение кода всегда являлось одной из самым значимых и распространенных уязвимостей Web-приложений, поэтому не удивительно, что этот тип уязвимостей занимают верхнюю строчку списка OWASP. Существует множество разновидностей этой уязвимости, но до сих пор самой печально известной из них является внедрение SQL-кода, успешно используемое хакерами на протяжении более десяти лет. Внедрение SQL-кода заключается в том, что злоумышленник вводит SQL-команды в поле ввода. Если код Web-приложения не отфильтровывает вводимые символы, то на Web-сервере можно запустить SQL-команды и выполнять прямые запросы к внутренней базе данных в обход сетевых средств защиты. Путем внедрения SQL-кода злоумышленник может заполучить таблицы с данными, изменить записи в таблицах и даже полностью удалить базу данных.
Пример простой атаки с внедрением SQL-кода
В следующем примере мы будем использовать Web-сайт, разработанный IBM специально для тестирования Web-приложений на предмет уязвимостей: http://demotestfire.com. Компания Altoro Mutual является вымышленной, но продемонстрированная атака является вполне реальной (см. рисунок 1).
Тестовое Web-приложение позволяет пользователям выводить списки транзакций, совершенных за определенный период времени. Значение, вводимое в поле ввода даты, не обрабатывается фильтрами, поэтому приложение уязвимо для внедрения SQL-кода. Ввод следующего значения позволяет выполнить команду, возвращающую содержимое базы данных, включая имена и пароли пользователей: 1/1/2010 union select userid,null, username+' '+password,null from users--
.
Рисунок 1. Web-приложение, возвращающее данные после отправки запроса
Первая часть значения, введенного в поле ввода, является датой – это именно то, чего ожидает приложение. Этот прием гарантирует, что приложение обработает данные, содержащие дату, вместе с оставшейся частью введенной команды. За датой следует оператор "union", означающий начало SQL-команды. По существу, он говорит "Вот вам ожидаемая дата, а еще...". Методом проб и ошибок злоумышленник может вычислить название таблицы, содержащей данные об учетных записях пользователей (она называется users
), и количество полей в ней. После этого атакующий использует эту информацию для составления SQL-команды select
, возвращающей данные из таблицы users
. Полученная информация, содержащая имена и пароли учетных записей пользователей, отображается на Web-странице в форме для вывода списка транзакций.
Это самый простой пример внедрения SQL-кода. В реальном мире атаки этого типа намного изысканнее, а хакеры используют специализированные инструменты, помогающие автоматизировать атаки.
2. Некорректная аутентификация и управление сеансами
Вторая наиболее опасная уязвимость в списке OWASP связана с методами аутентификации и защиты пользовательских сеансов в Web-приложении. Существует множество типов этой уязвимости, одним из которых является несанкционированное использование сеанса.
Несанкционированное использование сеанса
Злоумышленник может попытаться украсть (несанкционированно использовать) Web-сеанс пользователя, узнав его секретный идентификатор. Зная секретный идентификатор сеанса, атакующий может представиться Web-серверу аутентифицированным пользователем и скомпрометировать его учетную запись. Если приложение недостаточно хорошо защищает идентификаторы сеансов (например, отображает идентификаторы внутри URL-адреса вместо использования cookie-файлов), то злоумышленнику очень просто получить идентификатор сеанса, обманув пользователя.
Даже если Web-приложение хранит идентификаторы сеансов в cookie-файлах, злоумышленник все равно может получить нужную информацию из локальных файлов пользователя, хитростью заставив его выполнить замаскированный сценарий. С помощью простого сценария можно извлечь идентификатор сеанса, хранящийся в cookie-файле на компьютере пользователя; например, можно получить идентификатор сеанса с помощью следующего сценария, введенного в поле поиска уязвимого Web-приложения:.
Рисунок 2. Пример сценария для получения идентификатора сеанса, хранящегося в cookie-файле
Для улучшения системы аутентификации и управления сеансами в приложениях можно использовать современные платформы для разработки ПО, а также приемы написания безопасного кода. В частности, можно применять привязку исходного IP-адреса к идентификатору пользовательского сеанса и обязательную повторную аутентификацию при изменении важных параметров учетной записи (например, пароля или адреса электронной почты). Именно эти действия пытаются выполнять злоумышленники сразу же после взлома Web-сеанса. В этих случаях такой простой прием программирования, как повторная аутентификация, уничтожает несанкционированный сеанс и снижает риск.
Другим простым приемом программирования, который нельзя оставлять без внимания, является уничтожение сеанса по истечении заданного времени простоя. Например, если пользователь не работает с Web-сайтом в течение пяти минут, приложение разрывает сеанс, заставляя пользователя (или любого злоумышленника) выполнять повторную аутентификацию для продолжения работы. Этот простой прием также снижает риск несанкционированного использования сеанса; его используют в большинстве онлайновых банковских Web-приложений.
3. Межсайтовый скриптинг
Межсайтовый скриптинг (cross-site scripting, XSS) – это еще одна разновидность атаки на Web-приложения, сохраняющая популярность уже много лет. Если Web-приложение содержит XSS-уязвимость, то злоумышленник может внедрить на Web-страницу вредоносный сценарий, выполняющийся при загрузке страницы пользователем.
Пример XSS-атаки
Web-приложение из следующего примера позволяет пользователям заходить на Web-страницу и размещать отзывы на продукты компании. Поле для ввода комментария подвержено XSS-атакам. Ниже показан пример комментария (This is a great product
>), внедряющий в Web-страницу XSS-сценарий, который пытается узнать идентификатор сеанса пользователя.
Рисунок 3. Пример комментария, внедряющего XSS-сценарий в Web-страницу
Уязвимое Web-приложение обрабатывает комментарий вместе с XSS-сценарием. Начиная с этого момента пользователи, зашедшие на страницу отзывов, видят комментарий "This is a great product", но не видят сценария, который тем не менее выполняется в их Web-браузерах и отправляет информацию из cookie-файлов (включая идентификатор сеанса) на Web-сайт злоумышленника. В этом примере Web-сайт злоумышленника называется "evilsite". Получив необходимый идентификатор сеанса, злоумышленник компрометирует учетную запись жертвы. Такие сценарии чрезвычайно опасны, поскольку с их помощью хакеры могут похищать за один прием тысячи учетных записей.
В наши дни большинство современных браузеров содержит защиту от XSS-атак – например, Internet Explorer по умолчанию запускается в режиме защиты, предотвращающем выполнение XSS-сценариев. Тем не менее XSS-атаки до сих пор довольно популярны и распространены, поэтому подобные уязвимости никогда не должны присутствовать в Web-приложениях.
4. Небезопасные прямые ссылки на объекты
Брешь, обусловленная наличием небезопасных прямых ссылок на объекты, может привести к тому, что авторизованный пользователь Web-приложения может получить неавторизованный доступ к привилегированным функциям и данным. Если в коде приложения неграмотно или неправильно реализованы методы работы с информационными объектами (например, с файлами, каталогами или ключами баз данных), то пользователи, не обладающие требуемыми привилегиями, могут обойти средства защиты, реализованные в приложении. Используя эту уязвимость, пользователи могут изменять значения параметров таким образом, чтобы непосредственно обращаться к объектам, доступ к которым им запрещен.
Чтобы защититься от этого, разработчики могут внедрить средства контроля доступа ко всем доступным пользователям объектам.
5. Небезопасная конфигурация
Небезопасная конфигурация может присутствовать во всех компонентах Web-приложения, включая платформу (операционную систему), Web-сервер, базы данных или инфраструктуру. Распространенными ошибками являются запущенные без необходимости службы, учетные записи администратора с параметрами по умолчанию, доступное для онлайн-просмотра содержимое файлов и директорий. Однако излюбленной темой хакеров является небезопасная обработка сообщений об ошибках.
Рисунок 4. Сообщения об ошибках раскрывают хакерам все секреты
Выводимые приложением сообщения об ошибках, которые не были отключены, позволяют злоумышленникам лучше понять структуру базы данных и подсказывают, в каком направлении лучше действовать, какие команды и сценарии лучше пытаться внедрять. В последнем примере сообщение об ошибке информирует злоумышленника о том, что в результате выполнения вредоносного SQL-запроса было получено верное имя базы данных, но неверное количество полей.
6. Утечка уязвимых данных
Web-приложение должно правильно работать с уязвимыми данными и защищать их. Для предотвращения утечки данных в процессе их обработки, передачи и хранения необходимо обеспечивать защиту на всех уровнях при помощи надежных процедур контроля доступа, общепризнанных криптоалгоритмов и методов управления ключами шифрования.
7. Отсутствия контроля доступа к функциональному уровню
Пользователи, работающие с Web-приложением, могут иметь различные уровни полномочий. В таких случаях базовая аутентификация может не справиться с тем, чтобы не допустить использования пользователями полномочий, функций и данных, доступ к которым им запрещен.
Если защита привилегированных функций заключается лишь в том, что они просто спрятаны в коде приложения, то злоумышленник, скомпрометировавший учетную запись с недостаточными привилегиями, может попытаться получить доступ к закрытым функциями (и данным), подбирая вызовы к ним.
8. Подделка межсайтовых запросов (CSRF)
Подделка межсайтовых запросов (cross-site request forgery, CSRF) основана на том, что аутентифицированного пользователя Web-приложения обманным путем заставляют запустить вредоносный сценарий, который выполняет действия от имени законного пользователя. Например, на компьютере пользователя может скрытно выполняться CSRF-сценарий, отправляющий Web-приложению запрос на изменение пароля, а после успешной авторизации пользователя Web-приложение исполняет этот запрос.
Для защиты от подделки межсайтовых запросов разработчики могут воспользоваться различными приемами, включая обязательное использование в каждом запросе случайного маркера для проверки достоверности сеанса или использование случайных имен полей в различных формах Web-приложения, делающее невозможным создание злоумышленником работающего сценария.
9. Использование компонентов с известными уязвимостями
Любой сторонний компонент Web-приложения – будь то двоичный или исходный код, коммерческое или Open Source-приложение – должен проверяться на отсутствие уязвимостей.
Практически каждое Web-приложение использует Open Source-компоненты, например, библиотеку OpenSSL, обеспечивающую TLS/SSH-шифрование Web-сайтов (HTTPS). В апреле 2014 года в нескольких версиях этой библиотеки была обнаружена критическая уязвимость CVE-2014-0160, известная как Heartbleed.
Если вы хотите быть уверенными в том, что сторонние компоненты Web-приложения не содержат уязвимостей, необходимо постоянно следить за выходом новых исправлений, касающихся их безопасности, а также за выходом новых версий программ для сканирования уязвимостей.
10. Непроверенные перенаправления и переходы
Web-приложения часто перенаправляют пользователей на другие страницы при помощи определенных параметров. Если эти параметры не проверяются, то злоумышленник может обманным путем перенаправить пользователя на вредоносную Web-страницу, заставив его раскрыть свой пароль и другие важные данные. Например, злоумышленник может создать сообщение электронной почты с фишинговой ссылкой, содержащей имя требуемого Web-сайта. При этом отвечающий за перенаправление параметр, содержащийся в конце URL-адреса, может быть не виден пользователю, в результате чего пользователь с большой вероятностью щелкнет по этой ссылке или скопирует ее в Web-браузер, так как доменное имя в URL-адресе не вызовет у него никаких подозрений.
За дополнительной информацией о списке OWASP Top 10 (2013) обратитесь к разделу Ресурсы.
Как избежать лишних затрат при минимизации уязвимостей в Web-приложении
Разработка и выпуск Web-приложений, содержащих уязвимости, могут стоить вам как денег, так и времени, поскольку исправление даже одной строки кода после того, как приложение запущено в эксплуатацию, может обернуться сотнями часов работы по переписыванию и повторному тестированию кода. Поиск и устранение уязвимостей в приложении наиболее эффективны и экономичны на ранних стадиях разработки.
Испытание сторонних компонентов приложения на проникновение помогает убедиться в его безопасности, однако этот и все связанные с ним процессы занимают время и приводят к лишним затратам. Уязвимости должны устраняться на более ранних стадиях разработки Web-приложения. Если в процессе разработки приложения разработчики допустили ошибки в коде, то необходимо правильно обучить их, чтобы исключить появление подобных ошибок в будущем. Отчет стандартной проверки на проникновение содержит очень мало информации, которая могла бы оказаться полезной для разработчиков.
Передовой инструмент для поиска уязвимостей в Web-приложениях – IBM Rational AppScan – позволяет разработчикам и тестировщикам Web-приложений сделать процесс поиска уязвимостей частью внутреннего цикла разработки ПО, включающего в себя поиск всех уязвимостей из списка OWASP Top 10 (см. раздел Ресурсы). AppScan – это мощный инструмент, который разработчики могут настраивать под свои нужды. А поскольку разработчики знают о своих приложениях намного больше любых сторонних производителей средств испытаний на проникновение, AppScan позволяет им выполнять более глубокое тестирование Web-приложений.
Обучение разработчиков
AppScan выдает краткую информацию обо всех уязвимостях, которые он обнаруживает в Web-приложениях, включая подробную информацию о методе тестирования, в ходе которого была обнаружена уязвимость (такую информацию нечасто можно встретить в отчетах испытаний на проникновение). AppScan оказывается особенно полезным тогда, когда необходимо объяснить причину возникновения уязвимости разработчикам и научить их правильно писать код с помощью простых текстовых и видеоматериалов и даже фрагментов кода, которые они могут использовать для устранения своих ошибок. Такие уровень поддержки разработчиков и объем предоставляемой информации не только помогают разработчиком лучше понять всю важность защиты Web-приложений, но и учат их писать правильный код, снижая вероятность появления уязвимостей в Web-приложениях в будущем.
Гарантия защищенности Web-приложений
В AppScan реализованы широкие возможности создания стандартизированных отчетов самых различных типов, которые можно использовать в качестве гарантий и доказательств того, что в процессе разработки Web-приложение было должным образом защищено. Отчет Delta Analysis служит подтверждением того, что приложение содержит все исправления, закрывающие уязвимости, а отчеты на базе стандартов OWASP Top 10 и PCI DSS демонстрируют защищенность Web-приложений аудиторам и заказчикам.
Заключение
Недооценка важности защиты Web-приложений – это мина с часовым механизмом. Одна-единственная уязвимость в Web-приложении может привести к глобальной утечке данных, которая может разрушить до основания даже самую большую компанию, вызвав негативные отзывы в средствах массовой информации по всему миру, серьезные финансовые санкции и потерю общественного доверия. Сегодня защита Web-приложений с использованием общепринятых стандартов и методов, таких как OWASP Top 10, а также использование инструментов поиска уязвимостей, таких как IBM Rational AppScan, являются необходимой практикой.
Ресурсы
Научиться
- Оригинал статьи: Scan your app to find and fix OWASP Top 10 2013 vulnerabilities (EN).
- В библиотеке OpenSSL была обнаружена критическая уязвимость CVE-2014-0160 (EN), известная как Heartbleed.
- Получите дополнительную информацию и указания по работе с последним спискомOWASP Top 10 (EN).
- Проект Open Web Application Security Project (OWASP) (EN) – это основанное в 2011 году Open Source-сообщество, занимающееся разработкой бесплатных руководств по защите приложений.
- Используйте для тестирования уязвимостей демонстрационное Web-приложение от IBM http://demotestfire.com.
- Подделка межсайтовых запросов (CSRF) (EN) может заставить конечного пользователя выполнять нежелательные действия в Web-приложении, в котором он аутентифицирован.
- Присоединяйтесь к сообществу Security On developerWorks (EN) и знакомьтесь с руководствами, статьями, видеофайлами и демонстрационными материалами, которые можно найти в библиотеке сообщества.
- Познакомьтесь с блогом Security On developerWorks (EN), в котором вы найдете информацию о различных руководствах, статьях и демонстрационных видеоматериалах.
- Подпишитесь на еженедельный информационный бюллетень Security On developerWorks (EN), чтобы быть в курсе последних новостей.
- Следите за материалами блога @dwsecurity (EN) в Твиттере и получайте обновления раздела Security портала developerWorks в реальном времени.
- В разделе подкастов на сайте developerWorks (EN) можно слушать интересные интервью и обсуждения, ориентированные на разработчиков программного обеспечения.
Получить продукты и технологии
- Узнайте больше о IBM Rational AppScan (EN) – передовом инструменте для поиска уязвимости в Web-приложениях.
- Используйте в вашем следующем open source проекте ознакомительные версии программного обеспечения IBM (EN), которые можно загрузить с сайта или заказать на DVD.
Программы и скрипты для тестирования и поиска уязвимостей на сайтах - vega, Nuclei и др.
Вау!! 😲 Ты еще не читал? Это зря!
- проект платформа metasploit , платформа metasploit framework , фреймворк metasploit ,
- w3af
- Vega web security scanner(web security testing platform) https://subgraph.com/vega/
- Nuclei - Open-source project (github.com/projectdiscovery/nuclei)
Комментарии
Оставить комментарий
Информационная безопасность, Вредоносное ПО и защита информации
Термины: Информационная безопасность, Вредоносное ПО и защита информации