Безопасность веб приложений
Безопасность веб-приложений – мониторинг системы безопасности
Безопасность — это один из важнейших аспектов, которому следует уделять внимание на протяжении всей работы над приложением, и усилия на ее поддержание никогда не должны прекращаться, даже после завершения разработки и развертывания веб-приложения.
Постоянно учитывая и планируя с самого начала различные способы атак на систему с целью ее компрометации, можно создать код, который снизит вероятность возникновения подобных проблем. Один из главных вопросов, который приходится рассматривать при проектировании системы — пользовательские пароли. Пользователи часто выбирают пароли, которые нетрудно разгадать с помощью специального ПО, особенно если используются слова, присутствующие в словарях. Желательно найти способ снижения вероятности раскрытия пользовательского пароля и последующей компрометацией системы.
Одно из решений — потребовать, чтобы каждый пользователь прошел через серию четырех входных диалогов, и каждый раз с отдельным паролем. Можно также потребовать, чтобы пользователь менял эти пароли не реже раза в месяц, и чтобы новые пароли никогда не совпадали со старыми. Это повысило бы безопасность системы, и взломщикам понадобилось бы гораздо больше времени на взлом процесса входа и компрометацию системы.
К сожалению, такая система будет настолько защищенной, что никто не захочет ей пользоваться — на каком-то уровне сложности пользователи просто решат, что лучше не связываться с подобной морокой. Так что важно беспокоиться не только о безопасности, но и об ее влиянии на удобство работы. Легкая в использовании система с невысоким уровнем защиты может больше понравиться пользователям, но повысит вероятность возникновения проблем с безопасностью и, как следствие, с перебоями в работе предприятия. С другой стороны, система с мощнейшей защитой, которая в силу этого является абсолютно неудобной в работе, просто отпугнет пользователей и также отрицательно повлияет на дела.
Проектировщикам приложения нужны способы повышения безопасности без пропорционального ухудшения удобства работы с системой. Как и во всех вопросах, связанных с пользовательским интерфейсом, здесь нет четких и однозначных правил, так что придется полагаться на собственные оценки, тестирование удобства работы и целевые группы, чтобы узнать, как пользователи будут реагировать на наши прототипы и проектные решения.
Мониторинг безопасности.
Когда веб-приложение будет полностью разработано и развёрнуто на производственных серверах для работы с реальными людьми, работа веб-разработчика все еще не будет завершена. В понятие защиты входит наблюдение за работой системы, просмотр журналов и других файлов, чтобы оценить производительность и использование системы Только внимательное наблюдение за работой системы (возможно, с помощью специальных средств, которые выполнят за нас часть этого наблюдения) позволяет понять существуют ли проблемы с безопасностью, и обнаружить области, которые требуют разработки дополнительной защиты.
К сожалению, безопасность означает постоянную битву, которую в некотором смысле невозможно выиграть. Постоянный надзор, усовершенствования системы и быстрое реагирование на любые проблемы — цена, которую приходится платить за бесперебойную работу веб-приложения. К наиболее вероятным угрозам следует отнести: кражу секретных данных, порчу важных данных, компрометацию сервера, внедрение вредоносного кода, хакерские атаки DoS и DDoS.
На видео: Интересный семинар на тему безопасности web приложения.
Доступ к секретным данным или их изменение.
Один из аспектов работы проектировщиков и программистов веб-приложения — обеспечение сохранности всех данных, которые предоставил пользователь, а также данных, получаемых из других подразделений. При выводе такой информации в веб-приложении нужно сделать так, чтобы пользователь видел только ту информацию, которую ему дозволено видеть, и не видел информацию, предназначенную для других пользователей.
Допустим, что в программе пользовательского интерфейса для торговли в паевых фондах есть уязвимость. Люди, которые могут получить доступ к таблицам со счетами, должны иметь возможность получать по личным идентификационным номерам индивидуальную информацию — например, какие ценные бумаги имеются у них в наличии и на какую сумму, а в некоторых случаях и информацию о банковском счете.
Даже вывод таблицы с именами и адресами представляет собой серьезное нарушение безопасности. Клиенты весьма ценят свою конфиденциальность, а длинный список имен и адресов плюс какая-нибудь дополнительная информация (“все десять тысяч людей, перечисленных в этом списке, любят делать покупки в онлайновых табачных лавках”) может оказаться ценным приобретением для маркетинговых фирм, которые не всегда придерживаются правил приличия.
Пропажа или уничтожение данных.
Нисколько не лучше и ситуация, в которой обнаруживается удаление или уничтожение части данных. Если кто-то сможет уничтожить таблицы в базе данных, то предприятие может понести непоправимый урон. Если это предприятие — Интернет-банк, который выводит информацию о банковских счетах, и вдруг пропадет вся информация хотя бы об одном счете, то такой банк нельзя назвать хорошим. А если будет удалена целая таблица пользователей, то придется потратить уйму времени на восстановление баз данных и установление, сколько денег на каком счету находится.
Отказ в обслуживании.
Атаки отказа в обслуживании (DoS) и их более суровые разновидности — распределенные атаки отказа в обслуживании (DDoS) могут разрушительно влиять на работоспособность приложения. Если серверы будут выведены из строя на несколько часов или даже больше, то вывернуться из такой ситуации будет непросто. Для известных сайтов с большой посещаемостью любой период неработоспособности представляет крупную проблему.
DoS-атаки могут произойти не только из-за человеческого фактора. Допустим, что здание с серверами вдруг сгорело, снесено селевым потоком или захвачено террористами. Если даже у организации хранятся на стороне надежные резервные копии, но нет плана по быстрому восстановлению работы этих компьютеров в Сети, то вся клиентура может быть утеряна на несколько дней.
Внедрение вредоносного кода.
Один из особенно эффективных видов Интернет-атаки называется внедрением вредоносного кода. Наиболее известной его разновидностью является межсайтовое выполнение сценариев (Cross Site Scripting, сокращается как XSS, чтобы не путать с CSS — каскадными таблицами стилей). Такие атаки особенно опасны тем, что при этом не происходит немедленная порча или пропажа данных: вместо этого выполняется какой-то код, который приводит к последующей пропаже информации или перенаправлению пользователей, что может обнаружиться далеко не сразу.
Компрометация сервера.
Компрометация сервера приводит к эффектам, которые уже описаны выше, но ее все-таки следует упомянуть отдельно, поскольку иногда взломщики хотят получить доступ к вашей системе — обычно в качестве суперпользователя (администратор в операционных системах Windows или «root» в ОС Unix). После этого они получают скомпрометированный компьютер в свое полное распоряжение и могут выполнить на нем любую нужную им программу, остановить компьютер или установить очень неприятное ПО. Следует особенно внимательно следить за такими атаками, так как после компрометации сервера взломщики, скорее всего, постараются замести все следы своего присутствия в системе.
ОБЗОР УГРОЗ БЕЗОПАСНОСТИ WEB-ПРИЛОЖЕНИЙ
магистрант кафедры информационной безопасности, систем и технологий, Институт сервиса, туризма и дизайна (филиал) СКФУ в г. Пятигорске,
магистрант кафедры информационной безопасности, систем и технологий, Институт сервиса, туризма и дизайна (филиал) СКФУ в г. Пятигорске,
магистрант кафедры информационной безопасности, систем и технологий, Институт сервиса, туризма и дизайна (филиал) СКФУ в г. Пятигорске,
WEB-APPLICATION SECURITY THREATS
Nicolay Eliseev
the Institute of Service, Tourism and Design (Branch of North-Caucasus Federal University) in Pyatigorsk Undergraduate of the Department of Information Security, Systems and Technologies
Sergey Fyodorov
the Institute of Service, Tourism and Design (Branch of North-Caucasus Federal University) in Pyatigorsk Undergraduate of the Department of Information Security, Systems and Technologies
Oleg Antonov
the Institute of Service, Tourism and Design (Branch of North-Caucasus Federal University) in Pyatigorsk Undergraduate of the Department of Information Security, Systems and Technologies
АННОТАЦИЯ
WEB-приложения становятся всё более популярны во всех сферах деятельности человека и начинают использовать все больше приватных данных, что неизбежно приводит к ряду проблем в области безопасности. Для решения данных проблем был сформирован международный проект по обеспечению безопасности WEB-приложений (OWASP).
ABSTRACT
WEB-applications are getting more and more popular in every field of human activity, thus grows the use of private data, which inevitably leads to series of security problems. On that matter the international initiative called OWASP was formed to ensure security for WEB-applications.
Ключевые слова: web; web-приложение; угрозы информационной безопасности, OWASP.
Keywords: web; web-application; information security threats, OWASP.
Развитие глобальной сети интернет и увеличение доступности ресурсов в ней, привело к расширению спектра задач, решаемых с использованием WEB-технологий. В связи с этим получил распространение особый вид приложений — WEB-приложения, от которых напрямую зависит функционирование бизнес-процессов многих организаций.
WEB-приложение — это клиент-серверное приложение, где в качестве клиента выступает браузер, который отображает пользовательский интерфейс, формирует запросы к серверу и обрабатывает ответы от него. А серверная часть представляет собой WEB-сервер, обрабатывающий запросы клиентов. Взаимодействие между клиентом и сервером, как правило, осуществляется посредством протокола HTTP[1]. Архитектура WEB-приложений имеет три уровня[2], которые показаны на рисунке 1.
Рисунок 1. Архитектура WEB-приложения
Основными особенностями, повлиявшими на распространение WEB-приложения являются:
- Доступность — данный вид приложений не привязан к определенному терминалу или локальной сети, доступ может осуществляться из любой точки Земного шара, где присутствует соединение с Интернет.
- Кроссплатформенность — клиенту достаточно иметь браузер, соответствующий стандартам, а операционная система и тип устройства не имеют никакого значения.
- Не требует установки и настройки отдельного приложения на клиентском устройстве.
- Автоматическое обновление — клиент всегда работает с самой актуальной версией приложения, т. к. все обновления происходят на стороне сервера.
Но в тоже время в процессе эволюции WEB-приложений разработчики сталкивались с рядом проблем, среди которых особняком стоит проблема безопасности WEB-приложений. Проблемы безопасности вытекают из основных особенностей WEB-приложений, например, из-за невозможности изолировать WEB-приложение от попыток несанкционированного доступа извне в виду их доступности.
Актуальность проблем безопасности WEB-приложений подкрепляется тем, что в них используется конфиденциальная информация, а также осуществляются бизнес-процессы компании, например:
- хранение и обработка персональные данных сотрудников и клиентов;
- сведения о финансовых операциях компании;
- сведения, составляющие коммерческую тайну;
- сведения о взаимодействии, а также взаимодействие с клиентами компании;
- взаимодействие между сотрудниками и отделами;
- другие сведения и процессы, зависящие от рода деятельности компании[2].
В связи с этим среди разработчиков появились рекомендации, к обеспечению безопасности WEB-приложений, которые вылились в проект под названием: Open Web Application Security Project (OWASP).
OWASP – это открытый проект обеспечения безопасности WEB-приложений, который включает в себя корпорации, образовательные организации и индивидуальных разработчиков, которые совместными усилиями формируют статьи, рекомендации и учебные пособия, находящиеся в свободном доступе и рекомендуемы при разработке WEB-приложений. Также проект включает в себя ряд тренировочных задач и инструменты для анализа безопасности WEB-приложений.
OWASP на протяжении всего своего существования занимается изучением наиболее опасных уязвимостей и ежегодно публикует отчет. Рассмотрим наиболее опасные угрозы безопасности WEB-приложений, согласно исследованиям OWASP Top 10 — 2017 [3]:
- Инъекции (Injection) — внедрение в запросы к базе данных кода, дополняющего данный запрос и дающего злоумышленнику неавторизованный доступ к базе данных.
- Уязвимости аутентификации (Broken Authentification) – распространенная уязвимость, связанная с недостаточно проработанной системой валидации пользователей в приложении, приводит к получению неавторизованного доступа.
- Незащищенность важных данных (Sensitive Data Exposure) — многие приложения не используют механизмов для защиты передаваемых данных, таких как, например, HTTPS.
- Внедрение внешних сущностей в XML (XML External Entities) — вид инъекции, основанный на внедрении в XML-запрос к серверу атрибутов и сущностей, позволяющих получить неавторизованный доступ к данным.
- Небезопасный контроль доступа (Broken Access Control) — уязвимость в методах авторизации, позволяющие злоумышленнику получить повышенные привилегии.
- Небезопасная конфигурация (Security Misconfiguration) — WEB-приложение — это сложная система, состоящая из многих компонентов, таких как WEB-сервер, СУБД и др. Неверная конфигурация одного из компонентов может привести к серьезным проблемам с безопасностью всего приложений.
- XSS(Cross-Site Scripting) – внедрение (инъекция) вредоносного кода в HTTP-ответ, получаемый клиентом и выполняющийся на стороне клиента.
- Небезопасная десериализация (Insecure Deserialization) — десериализация преобразует последовательность бит в структурированные данные, зачастую на данном этапе не уделяется достаточно внимания безопасности, например, отсутствует валидация типов данных, что приводит к их подмене.
- Использование компонентов с известными уязвимостями (Using Components with Known Vulnerabilities) — зачастую при разработки WEB-приложений используются библиотеки, фреймворки и компоненты сторонних разработчиков, которые могут содержать различные недостатки (уязвимости), в связи с этим важно использовать самые актуальные версии, в которых исправляются известные уязвимости.
- Недостаточное журналирование и мониторинг (Insufficient Logging&Monitoring) — для своевременного обнаружения несанкционированного доступа, утечки информации и т. д., необходимо использовать средства автоматизированного мониторинга трафика, а также журналирования, которые помогут понять сущность атаки и разработать в кратчайшие сроки устранить уязвимости, а также вернуть работоспособность и состояние WEB-приложений.
Данный список уточняется OWASP в соответствии с развитием модели поведения нарушителя и актуальности той или иной проблемы безопасности WEB-приложений. Но к сожалению некоторые уязвимости (например, SQL-инъекции) находятся на вершине списка долгое время, хотя уже давно разработаны методы, закрывающие данную уязвимость. Это связано с тем, что не всегда разработчики уделяют достаточно внимания безопасности WEB-приложений.
В результате можно сформировать рекомендации для повышения безопасности WEB-приложений:
- необходимо ознакомиться и следить за обновлениями документов OWASP;
- использовать методологии тестирования WEB-приложений, направленные на поиск уязвимостей (например, OWASP Testing Project);
- регулярно обновлять программное обеспечение WEB-сервера;
- следить за корректной настройкой сетевых устройств, служб и программного обеспечения;
- следить за обновлениями используемых в приложении фреймворков и библиотек, и своевременно устранять найденные в них уязвимости;
- использование протоколов с шифрованием (HTTPS);
- повсеместное использование средств обнаружения атак, мониторинга активности, журналирования и системы транзакций.
Данные рекомендации позволят значительно повысить уровень безопасности WEB-приложений, что приведет к снижению рисков компаний при использовании WEB-приложений.
Лекция 16: Обеспечение безопасности веб-приложений
В данной лекции рассматриваются некоторые наиболее распространенные уязвимости веб-серверов и методы, противодействующие использованию данных уязвимостей.
В последние годы число атак, нацеленных на веб-сервера, значительно возросло. Веб-серверы особенно уязвимы в силу своей открытости, поскольку рассчитаны на обмен информацией с пользователями.
Веб- сервер формируется несколькими слоями ПО (рис. 23.1), каждый из которых подвержен разнообразным способам атаки
Обеспечение безопасности операционной системы реализуется путем установления последних обновлений системы безопасности, регулярно выпускаемых разработчиками этой ОС.
Также следует вовремя обновлять все программное обеспечение , работающее на веб-сервере. Любое ПО , не относящееся к необходимым компонентам (например, DNS — сервер либо средства удаленного администрирования наподобие VNC или служб удаленных рабочих столов), следует отключить или удалить.
Использование антивирусного ПО является обязательным требованием для любого веб-сервера вне зависимости от операционной системы, используемой в качестве платформы. В сочетании с гибким межсетевым экраном антивирусное ПО становится одним из самых эффективных способов защиты от угроз безопасности. Когда веб- сервер становится целью атаки, злоумышленник без промедления пытается загрузить инструменты взлома или вредоносное ПО , чтобы успеть использовать уязвимость системы безопасности до того, как она будет закрыта. При отсутствии качественного антивирусного пакета уязвимость системы безопасности может долгое время оставаться незамеченной.
Атаки веб-серверов можно разделить на две категории: локальные и глобальные.
Локальные атаки обычно направлены на кражу информации или перехват управления на отдельном веб-сервере.
Глобальные атаки обычно направлены на несколько веб-сайтов и ставят своей целью заражение всех их посетителей.
Наиболее опасные виды сетевых атак
Фишинг ( phishing ) — вид атаки, который начинается с рассылки почтовых сообщений, содержащих ссылку на известный ресурс (или имитирующий такую ссылку). Дизайн веб-страницы обычно копируется с воспроизводимого ресурса. На фальсифицируемой странице может быть, например, написано, что банк, где вы имеете счет, проводит акцию по проверке безопасности доступа, при этом предлагается ввести номер вашей кредитной карты и PIN-код. После ввода указанной информации, выводится сообщение о том, что все в порядке, а через некоторое время со счета пропадают деньги. Данная схема может быть использована не только для хищения денег. Получив доступ к аккаунту пользователя, злоумышленники получают тем самым доступ к его конфиденциальной информации.
Социальная инженерия — это метод несанкционированного доступа к информации или системам хранения информации без использования технических средств. Метод основан на использовании слабостей человеческого фактора и считается очень разрушительным. Злоумышленник получает информацию, например, путем сбора информации о служащих объекта атаки, с помощью обычного телефонного звонка или путем проникновения в организацию под видом ее служащего.
Scam — мошеннический трюк, заключающийся в том, чтобы, ссылаясь на авторитетных лиц, втереться в доверие и извлечь коммерческую выгоду.
Одним из возможных средств атак является использование IDN ( International Domain Name ). Дело в том, что в системах, поддерживающих IDN , допускается использование букв национальных алфавитов, а, например, некоторые буквы латинского и русского алфавитов пишутся идентично. Этим могут воспользоваться злоумышленники, они могут зарегистрировать имена, которые выглядит как имена известной фирмы, например microsoft.com, где некоторые буквы заменены на русские, так что это внешне не заметно, например, буквы с или о. Тогда при ошибочной замене одной или нескольких букв на русские клиент попадет не на сайт компании Microsoft , а на внешне неотличимый от него сайт злоумышленника.
Спуфинг ( spoofing ) — одна из разновидностей фишинга. Ее суть заключается в атаке через DNS (или каким-то иным способом), когда страница с известным URL подменяется страницей злоумышленника.
Троянский конь ( Spyware ) — программа , записывающая все нажатия клавиш на терминале или мышке, способна записывать screenshot ‘ы и передавать эти данные удаленному хозяину.
Spyware. Эта разновидность программ не обязательно вредоносна. Некоторые разработчики ПО встраивают такие программы в свои продукты, чтобы отслеживать предпочтения своих клиентов. К сожалению, не все эти программы столь безобидны. Некоторые программы spyware в соответствии со своим названием отслеживают действия хозяина машины, куда эта программа внедрена (нажатия клавиш, посещаемые сайты, конфиденциальную информацию и т.д.) и передают результаты своему хозяину. Заражение spyware может осуществиться традиционно через почту, IM ( Instant Messaging ) или в результате посещения скомпрометированного сайта.
Атаки на веб-серверы
Легальные WEB -серверы взламываются посредством следующих видов атак:
- SQL- Injection
- Вредоносной рекламы
- Методом переадресации результатов работы поискового сервера
- Через виртуальные хостинговые компании
- Через уязвимости программ, обслуживающих форумы
- Cross-site scripting
Одним из основных инструментов вторжения в последнее время стала атака типа «drive-by download » ( загрузка файлов или скриптов без ведома хозяина). Разнообразие мультимедиа форматов также облегчает работу хакеров. Ведь пользователя обычно не удивляет необходимость загрузки новейшей версии кодека или драйвера для просмотра или прослушивания материала, размещенного на удаленном сервере.
Cross-Site Scripting ( CSS ) является одной из наиболее широко распространенных сетевых атак, преследующих цель, получение персональных данных с помощью веб-технологий (иногда этот вид атаки называют » HTML injection «). Задача решается за счет выполнения определенного Javascript кода в браузере жертвы. При этом получается некоторая информация , содержащаяся на машине жертвы (например, cookies). Метод не наносит непосредственного вреда, но может быть предшествовать более серьезной атаке.
Вредоносной может быть ссылка с использованием уязвимого веб-сайта:
Страница же отклика должна иметь вид (как результат исполнения wellcome.cgi):
Браузер немедленно при загрузке этой страницы исполнит встроенный Javascript код и пошлет запрос » collect .cgi script » по адресу www.attacker.site, со значением cookies =www. vulnerable .site . Cookies могут также содержать аутентификационные и авторизационные данные, что представляет уже серьезную опасность.
Файлы cookie
Большинство браузеров поддерживают два метода, которые веб-приложения могут использовать для сохранения информации о запросах клиентов: обычные файлы cookie и файлы cookie сеанса.
Файл cookie — это небольшой файл , создаваемый браузером и хранящийся на компьютере пользователя. Его содержимое не регламентируется, но обычно в таких файлах хранится название, дата окончания срока действия и некий объем данных, например: «Visited = 36» или «Selected = true «.
Файл cookie сеанса позволяет веб-приложениям хранить данные в памяти.
Различие между двумя методами заключается в том, что обычный файл cookie сохраняется на компьютере пользователя и остается на нем до момента удаления пользователем. Файл cookie сеанса, напротив, хранится только на протяжении времени работы компьютера и автоматически теряется при закрытии приложения-браузера. При этом оба файла подвержены манипуляциям извне.
В отношении файлов cookie необходимо стремится ограничить объем данных, сохраняемых в них, в особенности тогда, когда эти данные не следует хранить в открытом доступе. Оптимальный подход — считать все данные, хранящиеся на компьютере пользователя, ненадежными.
SQL-инъекция
SQL -инъекция используется для атаки веб-сайтов, работающих с базами данных. Возможность внедрения SQL -кода возникает, если в SQL -запросах используются неотфильтрованные данные, вводимые пользователями.
Многие современные веб-сайты используют сценарии и SQL -запросы для динамического формирования содержимого страницы. В SQL -запросах часто используются данные, вводимые пользователями; это может привести к угрозе безопасности, поскольку злоумышленники могут попытаться внедрить во входные данные вредоносный SQL -код. Без надлежащих мер защиты такой код может быть успешно выполнен на сервере.
Рассмотрим следующий PHP -код:
После того, как пользователь введет свое имя в веб-форме, SQL — запрос вернет список всех пользователей с тем же именем. Если указать в форме имя «John», то SQL — запрос будет иметь следующий вид:
Это допустимая конструкция, которая сработает так, как и ожидается. Однако, если вместо имени ввести, например, «‘; drop table users; #» , то конструкция будет выглядеть следующим образом:
Точка с запятой позволяет выполнять несколько следующих друг за другом команд. В результате простая SQL — команда превращается в сложную трехсоставную конструкцию:
Исходная инструкция теперь бесполезна — ее можно пропустить. Вторая инструкция приведет к тому, что в базе данных будет целиком удалена соответствующая таблица , а стоящий в третьей строке символ » # » приведет к тому, что СУБД проигнорирует оставшуюся часть строки (как часть комментария) без выдачи сообщений о синтаксической ошибки в запросе.
Приведенная в примере уязвимость особенно опасна, поскольку ее можно использовать для вывода закрытых данных, изменения отдельных полей или удаления информации. Некоторые СУБД также позволяют выполнять системные команды с помощью SQL .
В принципе, этот вид угрозы легко устраним благодаря проверке вводимых пользователем данных. Например, в PHP имеется специальная функция mysql_real_escape_string, удаляющая из строки потенциальный код SQL-инъекции . Ее следует использовать для фильтрации всех данных, внедряемых в SQL -инструкции.
XSS (межсайтовый скриптинг)
Данный вид атак направлен на веб-сайты, отображающие вводимые пользователями данные. Вместо попытки получения контроля над базой данных путем ввода вредоносного кода злоумышленник пытается атаковать код самого веб-сайта, внедряя в него вредоносные сегменты .
Многие сайты хранят имена всех посетителей в базе данных, чтобы иметь возможность отображать их при вводе соответствующих пользователей. Злоумышленник может создать подложную учетную запись , разместив при этом в поле имени вредоносный код . Подобные атаки обычно реализуются с помощью вредоносных скриптов на языке Javascript, которые затем загружают контент с другого веб-сайта. Предполагается, что в базе данных хранится имя пользователя , но на самом деле в данном случае это будет вредоносный код . Соответственно, если веб- сайт отображает имя пользователя в верхней части страницы, то этот код будет выполнен. Поскольку при наличии определенных условий такой код может делать практически все, что угодно, угроза становится вполне реальной; тем не менее, разработчики зачастую про нее забывают. В разное время жертвами XSS -атак стали многие популярные веб-сайты, в том числе MySpace, Facebook, Google Mail, ВКонтакте.
Рассмотрим следующий PHP -код:
После ввода имени в веб-форме сайт отображает на странице соответствующее сообщение. Если указать в форме имя » John «, то сообщение будет иметь следующий вид: » Your name: John «.
Что произойдет, если вместо имени ввести следующую конструкцию:
К сожалению, XSS -атакам зачастую трудно что-либо противопоставить, поскольку для этого необходимо должным образом фильтровать вводимые и выводимые данные, а также все поля, которые могут меняться пользователями. Сюда относятся данные, получаемые из запросов GET и POST , а также запросы, возвращаемые из базы данных .
Как и зачем защищать веб приложения?
1143
В общем и целом, как вы уже поняли, защита своих данных в веб-приложениях целиком и полностью ложится на ваши плечи. “Спасение утопающих, дело рук самих утопающих”, — помните об этом и не стройте иллюзий о неприступности своих веб-ресурсов, когда планируете работы по информационной безопасности. Общедоступные веб-приложения интересны хакерам как ресурсы или инструменты заработка. Веб стал очень популярным, в нем появились возможности финансового роста — что естественно привлекло в эту сферу желающих незаконно воспользоваться чужим трудом. Личность владельца не важна, так как процесс взлома автоматизирован и поставлен на поток. Стоимость информации пропорциональна известности и влиятельности компании. Так к примеру, жертвой взлома стали ребята из SafeBrowse — в их популярное расширение для Chrome был запущен вредоносный JavaScript, который заставлял браузеры пользователей майнить криптовалюту Monero.
К счастью, часть атак можно попытаться избежать на этапе планирования и разработки приложения (используются инструменты тестирования, отладки, анализ кода и т.д.), но при размещении веб-приложения в сети интернет — сайт (особенно популярной сферы деятельности или компании) начинает подвергаться атакам практически по всем направлениям:
- автоматические системы эксплуатации уязвимостей;
- профессиональные кибер-преступники;
- начинающие, любители горе-хакеры.
Они обладают различными методами, способами и инструментарием — объединяет их только одна цель — взломать или вывести из строя веб-приложение.
Очень часто многие программисты и знатоки IT-технологий уверяют, и чуть ли не в один голос кричат о том, что уязвимостей скоро не будет — есть модные, стильные, молодежные и крутые *фреймворки (различные инструменты и расширения, которые могут быть применены при создании всевозможных шаблонов веб-сайтов), исходный код проверяют тысячи человек, и вообще всё “на мази”, а хакеры эти проклятые скоро вымрут и ничто не будет нам угрожать.
А как же на практике? А на практике совсем другая картинка вырисовывается.
Веб-приложения как ломали, так и ломают. И зачастую это происходит по очень простой причине — человеческий фактор. Мы люди, не всегда бываем внимательны, многие из нас не имеют достаточного практического опыта, и в таких случаях никакие инструкции по разработке безопасного кода, рекомендации, и формализация уникального успешного практического опыта не сработают, если вы попросту где-то хоть немного проявите халатность. Поэтому всегда необходимы дополнительные защитные, или даже страховочные меры, для того чтобы предотвратить взлом веб-приложения.
Давайте быстренько пробежимся по основным способам и пунктам защиты ваших веб-приложений от хакеров. Если будете следовать советам ниже, шансы на взломы резко сократятся.
Защитите пользовательские данные с помощью HTTPS
HTTPS — это расширение, которое зашифровывает и защищает ваши данные при передаче в Интернете. Оно гарантирует целостность и конфиденциальность взаимодействия с сервером.
Виктор Карионов — руководитель компании IT-INFINITY
HTTPS — это ваш персональный ключ, на который вы “запираете” свои данные, и в случае их перехвата хакеру придется попотеть, чтобы понять, что это были за данные. И чтобы предотвратить попытки взлома, я настоятельно рекомендую использовать HTTPS абсолютно на всех страницах сайта.
Обновляйте программное обеспечение
Один из лучших способов защиты данных от возможных атак хакеров — своевременная установка выпускаемых фирмами-разработчиками обновлений программных продуктов. Большинство атак основано на использовании уже известных ошибок в программном обеспечении, которые давно ликвидированы разработчиками. Но как показывает практика, очень большая часть пользователей, не устанавливает своевременно выпущенные заплатки и обновления. В результате такие системы подвержены высокому риску быть успешно атакованными злоумышленниками.
Заплатки к браузерам оперативно выпускаются фирмами-разработчиками, как только становится известна соответствующая ошибка. Если эта ошибка касается безопасности системы, то нужно срочно выполнить необходимое обновление.
Предотвратите межсайтовый скриптинг
Межсайтовый скриптинг (или XSS) — это один из самых распространенных видов хакерской атаки на прикладном уровне. Целью XSS является:
Получение доступа к защищенным или конфиденциальным данным;
Получение бесплатного доступа к платному контенту;
Слежение за посещением сайтов пользователем;
Изменение настроек браузера;
Публичная клевета в адрес отдельного лица или корпорации;
Любой владелец сайта согласится с тем, что вышеперечисленные последствия могут привести к весьма плачевному результату.
Типичный пример XSS: хакер внедряет скрипт в URL существующего интернет-магазина, который, в свою очередь, перенаправляет пользователя на поддельную, но идентичную страницу. Сайт магазина не подвергается хакерской атаке, злоумышленник использует уязвимое место скрипта, чтобы обмануть пользователя и получить контроль над его сессией. Этот случай, может, и не выглядит таким опасным, как взлом корпоративной базы данных, однако посетители сайта и клиенты могут легко потерять доверие к системе безопасности приложения, а это может привести к финансовым потерям.
Михаил Бартули — управляющий компании IT-INFINITY
“Попытки повысить знание о том, как легко высококвалифицированный хакер может взломать уязвимое приложение, не увенчались успехом. Все еще можно встретить владельцев сайтов с образом мышления: «Будем разбираться с проблемой, когда меня взломают». Они рискуют понести ощутимый финансовый ущерб и потерять доверие клиентов.
Люди, называющие себя специалистами по вопросам безопасности, уверяют, что проблему XSS значительно преувеличивают, и с его помощью нельзя нанести весомый ущерб веб-приложению. Однако дальнейшее исследование покажет, что статистические данные говорят сами за себя, и рост этих цифр в конце концов полностью опровергнет заявления этих скептически настроенных «специалистов».”
Проверяйте и шифруйте пароли
Храните пароли в виде хэша. Лучше использовать алгоритмы одностороннего хэширования, например, SHA («Secure Hash Algorithm 1» — алгоритм криптографического хеширования). В этом случае для авторизации пользователей сравниваются хэшированные значения. Если злоумышленник взломает ресурс и получит хэшированные пароли, ущерб будет снижен за счёт того, что хэш имеет необратимое действие и получить из него исходные данные практически невозможно. Но хэши на популярные пароли легко перебираются по словарю, поэтому используйте также «перчинку», уникальную для каждого пароля. Тогда взлом большого количества паролей становится еще медленнее и требует больших вычислительных затрат.
Контролируйте процесс загрузки файлов
Загрузка пользователем файлов на веб-сайт, даже если это просто смена аватара, несёт в себе угрозу информационной безопасности. Загруженный файл, который, на первый взгляд, выглядит безобидно, может содержать скрипт и при выполнении на сервере откроет злоумышленнику доступ к сайту. Чтобы это предотвратить, запретите исполнение загружаемых файлов пользователями.
Следите за сообщениями об ошибках
Будьте осторожны с тем, что отображается в сообщениях об ошибках приложения. Сообщайте пользователю информацию об ошибках в максимально лаконичной форме, которая исключает наличие любой технической информации. Чтобы держать руку на пульсе проекта, установите систему мониторинга ошибок. Например, Sentry, которая автоматически получает ошибки от обработчиков в коде приложения и через форму от пользователей, а также предоставляет панель для управления ими в реальном времени.
Проверяйте входящие данные
Контролируйте данные, полученные с веб-форм, как на стороне клиента, так и на стороне сервера. В браузере проверяются простые ошибки вроде незаполненного обязательного поля или текста, введённого в числовое поле. Эти проверки обходятся, поэтому контроль на стороне сервера обязателен. Отсутствие проверки на стороне сервера приводит к эксплуатации злоумышленником инъекций и других видов атак.
Если вы будете следовать перечисленным выше советам, то это в значительной мере позволит усилить устойчивость вашего приложения к различного рода атакам. Не доверяйте данным, введённым пользователями. Защищайте ваши файлы и базу данных. И да прибудет с Вами сила IT.
Основные уязвимости в безопасности WEB приложений
Описание
Основу курса составляют детальное описание и практические задания по наиболее популярными современными уязвимостями OWASP Top-10 2017. Участники курса изучат способы их идентификации статически (включая SAST) и динамически (включая DAST), а также надежными методами устранения уязвимостей.
Слушателям будут представлены примеры кода, содержащего уязвимости, на нескольких языках программирования (Java, PHP, .NET, Python, JS). Также будут предложны «живые» приложения, которые позволят понять принципы работы уязвимостей и научиться самостоятельно их находить.
Курс разработан и проводится специалистами-практиками с опытом работы в Application Security более 8 лет. Знания, передаваемые участникам курса многократно проверены на «боевых» проектах и являются основой безопасной разработки приложений.
Разбираемые темы
- Что такое Application Security, зачем и как это делать (0,5 ч теория).
- Обзор OWASP TOP 10 (0,5 ч теория).
- A1:2017-Injection (1 ч теория + 2 ч практика).
- A2:2017-Broken Authentication (1 ч теория + 1 ч практика).
- A3:2017-Sensitive Data Exposure (1 ч теория + 1 ч практика).
- A4:2017-XML External Entities (XXE) (1 ч теория + 1 ч практика).
- A5:2017-Broken Access Control (1 ч теория + 1 ч практика).
- A6:2017-Security Misconfiguration (0,5 ч теория + 1 ч практика).
- A7:2017-Cross-Site Scripting (XSS) (2 ч теория + 2 ч практика).
- A8:2017-Insecure Deserialization (1 ч теория + 1 ч практика).
- A9:2017-Using Components with Known Vulnerabilities (0,5 ч теория + 0,5 ч практика).
- A10:2017-Insufficient Logging&Monitoring (0,5 ч теория + 0,5 ч практика).
- A8:2013-Cross-Site Request Forgery (CSRF) (0,5 ч теория + 1 ч практика).
- Выходное тестирование (1 ч.).
Целевая аудитория
- Разработчики, Старшие разработчики;
- Специалисты по тестированию;
- Специалисты по безопасности;
- Архитекторы веб-приложений.
Предварительная подготовка
Тренер в Luxoft Training.
Профессионально занимается вопросами информационной безопасности и специализируется в области безопасности веб-приложений. Работал с широким спектром технологий и инструментов для разработки и обеспечения безопасности приложений. Обладает необходимыми знаниями и умениями для выявления любых уязвимостей из списка OWASP Top 10 (и других аналогичных списков) и слабых мест (например, из списка SANS CWE Top 25), а также их описания для различных заинтересованных лиц (разработчиков, специалистов по качеству, менеджеров) и предоставления рекомендаций по устранению или снижению рисков от таких уязвимостей и слабых мест. Знаком со многими стандартами, положениями и лучшими практиками в области информационной безопасности, в том числе PCI DSS, ISO 27001, NIST SP 800, OWASP ASVS, GDPR.
Опыт применения наиболее удобного набора технологий для автоматизации Linux+Jenkins+Python.
Тренер в Luxoft Training.
Профессионально занимается вопросами информационной безопасности и специализируется в области безопасности веб-приложений. Работал с широким спектром технологий и инструментов для разработки и обеспечения безопасности приложений. Обладает необходимыми знаниями и умениями для выявления любых уязвимостей из списка OWASP Top 10 (и других аналогичных списков) и слабых мест (например, из списка SANS CWE Top 25), а также их описания для различных заинтересованных лиц (разработчиков, специалистов по качеству, менеджеров) и предоставления рекомендаций по устранению или снижению рисков от таких уязвимостей и слабых мест. Знаком со многими стандартами, положениями и лучшими практиками в области информационной безопасности, в том числе PCI DSS, ISO 27001, NIST SP 800, OWASP ASVS, GDPR.
Опыт применения наиболее удобного набора технологий для автоматизации Linux+Jenkins+Python.