image

Актуальные проблемы безопасности web-ресурсов

Formator:

Oksana Buga

Etichete:

безопасность | Daac System Integrator | технологии | интернет

Современные web-ресурсы характеризуются, прежде всего, такими достоинствами, как доступность и простота интерфейса, возможность организации дистанционной работы, а также относительно высокой скоростью их разработки. Однако размещение данных ресурсов в общедоступных сетях и наличие одновременного доступа к ним как пользователей, так и злоумышленников, часто приводит к ситуации, когда сложности, связанные с обеспечением информационной безопасности данных ресурсов, являются обратной стороной всех указанных преимуществ. Разговор о безопасности web-ресурсов целесообразно начать с масштабов проникновения данных технологий в жизнь современного общества. Так, в соответствии с данными, опубликованными в марте 2014 года британской интернет-компанией Netcraft, на сегодняшний день в сети функционирует около 920 млн web-сайтов, что в пересчете на каждого из нас - активных интернет-пользователей - составляет приблизительно по одному на 2,5 человека. Современные web-ресурсы стали неотъемлемой частью информационных активов абсолютного большинства сегодняшних организаций, вне зависимости от рода их деятельности либо сектора экономики. Кроме того, в связи с активной реализацией концепции «Электронное правительство» в последнее время существенно увеличивается доля государственного сектора в предоставлении определенного набора информационных услуг гражданам и представителям бизнеса через web-технологии. Столь радужную картину использования различных преимуществ web-ресурсов омрачает лишь печальная статистика использования злоумышленниками их уязвимостей, причем как в экономических, так и в политических интересах. Можно привести немало примеров современных информационных кампаний, в которых бои в кибернетическом пространстве с целью взлома и блокирования средств массовой информации мало чем отличаются по накалу страстей от реальных столкновений на площадях (Newsru.com). Естественно, что популярным инструментом в арсенале участников данных акций является “проникновение через порт 80” и эксплуатация определенных уязвимостей, характерных для web-приложений. В связи с этим в данном исследовании вашему вниманию будут представлены рассуждения, связанные с проблемой широкого распространения уязвимостей web-ресурсов, основанные на анализе практических примеров их разработки, тестирования и внедрения. Статья не претендует на глубокое освещение вопроса методов безопасного программирования, так как этой проблеме посвящена масса специализированной литературы и накоплен огромный опыт их применения. Я бы хотел сосредоточиться на проблеме их редкого использования, ведь для некоторых программистов и менеджеров проектов вопросы обеспечения безопасности web-ресурсов по-прежнему остаются своего рода экзотикой. Надеюсь, что данная работа будет всего лишь незначительным шагом в нужном направлении и привлечет определенное внимание заинтересованных руководителей. Итак, обо всем по порядку. Статистика уязвимостей web-приложений В ходе тестирования на проникновение, аудита безопасности и других работ, выполненных экспертами международной компании Positive Technologies, была собрана внушительная статистика по защищенности нескольких сотен корпоративных web-приложений. Обзорная статистика уязвимостей таких приложений, представленная в 2012 году, свидетельствует о наличие уязвимостей высокой степени риска в 45% приложений, причем 78% данных уязвимостей были выявлены в сфере информационных технологий и телекоммуникаций. Уязвимостям средней степени риска были подвержены 90% всех рассмотренных систем, то есть, называя вещи своими именами, - практически каждая. Наиболее распространенным недостатком являлась возможность идентификации программного обеспечения (Fingerprinting), которая встречается в 72% приложений. На втором месте межсайтовое выполнение сценариев (Cross-Site Scripting), которому подвержены 63% рассмотренных систем. В «горячую десятку» вошли также две критические уязвимости — внедрение SQL-кода (SQL Injection) и обход каталога (Path Traversal), которым подвержены 33% и 18% исследованных web-ресурсов соответственно. Известно, что уязвимость сайта определяется еще в момент выбора языка. PHP оказался самым популярным языком для разработки web-приложений, так как на нем было написано 36% исследованных систем. Интересно, что именно эти системы оказались наименее защищенными: 83% web-ресурсов, разработанных с помощью PHP, содержали критические уязвимости. Web-приложения, разработанные на платформе ASP.NET, оказались наименее подвержены уязвимостям высокой степени риска (всего 10%), однако еще 80% приложений на ASP.NET содержали уязвимости средней критичности. Таким образом, о высоком уровне защищенности этих приложений говорить также не приходится. Используя недочеты, допущенные в ходе разработки и эксплуатации систем, злоумышленники получают возможность копировать и модифицировать информацию в корпоративных базах данных, осуществлять мошеннические действия, проникать во внутреннюю сеть организаций и многое, многое другое. Приведенная статистика красноречиво демонстрируют факт серьезной уязвимости современных web-ресурсов, однако по сравнению с предшествующими годами динамика все же положительная, так как средний уровень защищенности приложений по сравнению с предыдущими годами стал немного выше. Причины сложившейся ситуации Нигилизм или непрофессионализм разработчиков. Как уже упоминалось ранее, атакуя информационную инфраструктуру организации из сети Интернет, злоумышленники, прежде всего, используют ее web-ресурсы. Недооценка риска, который могут представлять уязвимости данных ресурсов, является, возможно, основной причиной низкого уровня защищенности большинства из них. Причиной этого факта является то, что безопасность сайта далеко не всегда является приоритетом для разработчика, так как традиционный подход к созданию web-ресурсов, направленный в первую очередь на решение задач, связанных с обеспечением функциональности различных модулей приложения, а не качества программного кода, является основной причиной существования уязвимостей различной степени риска. С практической точки зрения, игнорирование проблем безопасности приложений может быть связано еще и с негласным разделением IT-сообщества на касты «белых» и «синих» воротничков. При таком разделении разработчикам отводится роль элиты, занимающейся исключительно вопросами алгоритмизации и программирования, а представителям других, более «железных» профессий - почетная, но не столь престижная роль организации и защиты каналов передачи данных, обеспечения функционирования сетей и оборудования, обеспечения безопасности информации и так далее. Данное, безусловно, очень спорное утверждение о степени важности того или иного специалиста в области IT, является абсолютно бессмысленным, особенно на современном этапе тотального господства IP протокола, и относится к разряду известных споров о том, что же появилось раньше – яйцо или курица. Тем не менее подобные мнения, связанные с разделением обязанностей между специалистами тех или иных профессий, по-прежнему присутствуют. Следствием такого подхода является то, что некоторые вопросы обеспечения безопасности приложений отходят на второй план, а иногда и вовсе игнорируются в процессе разработки программного кода, причем высокий и, в большинстве случаев, очень даже заслуженный авторитет программиста совершенно не способствует повышению общего уровня безопасности разрабатываемых им систем, и приводит к тому, что доля сайтов с уязвимостями высокого уровня риска по-прежнему остается весьма значительной. Распространённость web-ресурсов. Как уже упоминалось ранее, доступность web-ресурса любому пользователю сети Интернет делает данный способ атаки наиболее выгодным для злоумышленника методом проникновения в корпоративную сеть организации и извлечения в дальнейшем существенной выгоды от эксплуатации выявленных уязвимостей. Именно поэтому массовое внедрение через web-ресурсы вредоносного кода в компьютеры обычных пользователей сети Интернет получило такое широкое распространение. Парадоксальность ситуации заключается именно в том, что все большему количеству угроз в кибернетическом пространстве с каждым годом противостоит все более наивный пользователь, полагающий, что для полной безопасности ему необходима лишь последняя версия антивирусного программного обеспечения, а также браузера со всеми установленными обновлениями.
Как показывает статистика, наблюдается не спад, а, наоборот, рост несерьезного отношения пользователей к своим паролям, учетным и персональным данным, которые вовсе не стараются максимально обезопасить себя от взломов и краж, а лишь упрощают данный процесс для злоумышленников. Среднестатистическому пользователю куда проще использовать вместо пароля свою дату рождения, имя любимого животного или какое-то распространенное слово, нежели придумать нечто сложное, потому как он уверен, что его учетная запись в социальных сетях или почтовый ящик никого не заинтересует. В итоге, такое безразличие рано или поздно приводит, как правило, к плачевным последствиям, - говорит Лусиа Маренса, аргентинский исследователь из Национального университета Кордовы.
Кроме того, результаты опроса, проведенного среди подрядчиков американских оборонных организаций компанией Threat Track Security, ведущей бизнес в области информационной безопасности, демонстрирует, что подавляющее большинство респондентов считает, что государство обеспечивает их всей необходимой поддержкой для защиты конфиденциальных данных. То есть, даже продвинутые пользователи стран с высоким уровнем проникновения информационных технологий в повседневную деятельность общества, искренне уверены в том, кто-то обеспечивает безопасность их навигации, а также защиту персональных данных в Интернете, обеспечивая комплексную эшелонированную оборону, включающую в себя, естественно, и процесс безопасности непосредственного web-ресурса. А что происходит в нашей стране и насколько подход к данной проблеме отличается от общепринятой в цивилизованном мире? С ответом на данный вопрос давайте постараемся разобраться вместе в следующем разделе.
Игнорирование проблемы Итак, мы уже выяснили, что возможность использования web-ресурсов в качестве платформы для атаки на информационные активы организации делает эти приложения привлекательной мишенью для злоумышленника. К тому же простота протокола HTTP позволяет разрабатывать эффективные методы автоматического анализа web-приложений и выявления в них уязвимостей, что значительно упрощает работу злоумышленников, позволяя им обнаружить большое число уязвимых ресурсов, чтобы затем провести атаку именно на те, которые представляют наибольший интерес. На таком фоне происходит ситуация, когда разработчики, осведомленные о потенциальном риске использования уязвимостей собственных приложений, не спешат, а иногда и вовсе не собираются ликвидировать критические уязвимости своих продуктов, так как в большинстве случаев заказчик web-приложения просто не предъявляет подобных требований в договоре на выполнение работ. Ведь речь чаще всего, опять же, идет исключительно о функциональности того или иного проекта. А если не просят, то зачем вообще задумываться о качестве программного кода? Объяснить подобное положение дел, руководствуясь какими-то здравыми соображениями, довольно сложно. Единственное, что хоть как-то может объяснить причину отсутствия данного пункта в договоре на разработку web-ресурса – снижение общей стоимости проекта, а также ограниченные сроки его реализации, хотя скупой, как известно, платит дважды, ведь речь в большинстве случаев идет именно о web-приложениях, а не о сайтах-визитках. Сайты электронного правительства, системы интернет-банкинга, порталы самообслуживания операторов мобильной телефонии — вот далеко не полный список подобных проектов. Безусловно, тестирование на проникновение (penetration testing), заключающееся в санкционированной попытке преодоления существующего комплекса безопасности web-ресурса и выявления существующих уязвимых мест, могло бы существенно изменить ситуацию к лучшему. Однако, в связи с рядом объективных причин, в нем в действительности мало кто заинтересован: заказчик – потому, что проект обходится дороже и срок его разработки увеличивается, а разработчик – потому, что устранение выявленных в ходе тестирования уязвимостей требует вмешательства более подготовленных программистов, да и сама по себе процедура тестирования также требует определенных материальных затрат, связанных с лицензированием специализированного программного обеспечения для выполнения тестирования либо аутсорсингом, связанным с выполнением данных работ. Вышеперечисленное, естественно, приводит к неизбежному, пускай даже незначительному по сравнению с общей стоимостью реализации всего проекта, но увеличению себестоимости разработки web-ресурса и, как следствие,отражается на результатах конкурсных отборов, где, как известно, в большинстве случаев главным критерием отбора все еще остается самая низкая предложенная цена. Вот и получается, что даже на фоне сегодняшних событий, связанных с разоблачениями Эдварда Сноудена, публикациями в Wikileaks, постоянного противоборства в кибернетическом пространстве, то есть в условиях повышенного интереса к информационной безопасности, выясняется, что делать одновременно красиво, качественно и безопасно – невыгодно с финансовой точки зрения, поэтому экономить приходится чаще всего на том, что не так сильно бросается в глаза, то есть на безопасности. Конечно, постепенно ситуация меняется к лучшему и положительным фактом является то, что на рынке разработки программного обеспечения нашей страны уже зарегистрированы случаи, когда заказчик, возможно действую интуитивно, просит включить тестирование на проникновение в договор на выполнение работ. Этот оптимистический факт символизирует начало важного процесса – осознание важности обеспечения безопасности информации в используемых web-ресурсах, а также желание заказчика нести определенные расходы, связанные с процессом безопасного программирования данных ресурсов. К сожалению, в изложенном примере заказчик поручил провести тестирование на проникновение непосредственному разработчику приложения, то есть заинтересованному лицу, а не независимой стороне. Однако не будем считать данное действие существенной ошибкой, так как во-первых, чрезвычайно важен факт того, что подобные услуги становятся востребованными на рынке, а во-вторых, разработчику, безусловно, легче исправить возможные уязвимости на стадии собственного тестирования web-ресурса, чем подвергнуть риску свою положительную репутацию, умолчав о наличии уязвимостей, и «потерять лицо» в случае возможных негативных последствий, возникающих в процессе будущей эксплуатации разработанного приложения. Потребительский подход А как же государство, (помните результаты опроса, проведенного компанией ThreatTrack Security), ведь его роль регулятора основных направлений государственной политики в данной области, а также мероприятий и механизмов, связанных с процессом обеспечения информационной безопасности, крайне важна? Действительно, в нашей стране существует ряд нормативных актов, регламентирующих данную сферу деятельности. Одним из таких документов является Постановление Правительства №1123 от 14.12.10 «Об утверждении требований по обеспечению безопасности персональных данных при их обработке в информационных системах персональных данных», - прекрасный и комплексный документ, в соответствии с которым меры по защите персональных данных являются составной частью работ по созданию, развитию и эксплуатации информационных систем. Документ предусматривает концептуальный подход к проблеме защиты персональных данных, а в контексте рассматриваемого примера безопасности web-ресурсов, будем считать, что и к процессу обеспечения безопасности информации в целом. Требования Постановления Правительства №1123 касаются в основном внедрения комплекса организационно-технических мероприятий, необходимых для обеспечения безопасности, конфиденциальности и целостности персональных данных при их обработке в информационных системах. Они также предусматривают:
  • необходимость выявления, протоколирования и устранения недостатков программного обеспечения (статья 72);
  • защиту и возможность обнаружения несанкционированных попыток изменения программного обеспечения для обработки персональных данных и информации (статья 76);
  • определения уровня защиты информационных систем персональных данных и предотвращения возможных случаев незаконного или случайного доступа к таким информационным системам, выявления слабых мест в механизмах их защиты представителями Национального центра по защите персональных данных. Данные проверки также предусматривают осуществление специальных технических мероприятий по имитации моделей доступа к информационным системам персональных данных (статья 83).
Таким образом, исходя из того, что всего лишь 3% документа посвящено процессу безопасного программирования, можно сделать вывод о том, что главная задача требований Постановления Правительства №1123 - защитить данные в процессе их обработки, то есть на этапе эксплуатации, а не на этапе их разработки, то есть фактически «латать дыры», а не предотвращать их появление. Разумеется, в случае добросовестной реализации держателями персональных данных требований, указанных в Постановлении( к слову, особенно результативно они могут быть внедрены в процессе интеграции с международным стандартом ISO/IEC 27001:2005 «Система менеджмента информационной безопасности»), каждый из нас может быть действительно более или менее спокоен за сохранность своих персональных данных, ведь защищены они тогда будут в этом случае действительно надежно. Однако, исходя из того, что к обычной категории персональных данных относится длинный перечень из 33 наименований, а большинство их держателей относится к их защите крайне пренебрежительно (иначе, например, не было бы так распространено тиражирование удостоверения личности, без копии которого трудно представить себе сегодняшние взаимоотношения с государственными или коммерческими организациями), можно сделать вывод о наличии исключительно потребительского подхода к проблеме безопасности информации со стороны организаций. Данный подход заключается в том, что организации, как правило, не заинтересованы в инвестициях в систему информационной безопасности, не предпринимают мер по организации независимых аудитов безопасности используемых информационных активов, предполагая, что этими вопросами должны заниматься специализированные структуры, например, представители Национального центра по защите персональных данных. Нетрудно догадаться, что самостоятельно данной организации справиться с подобными объемами работ абсолютно нереально, следовательно, наиболее рациональным решением в данной ситуации является объединение усилий всех заинтересованных участников процесса разработки и эксплуатации web-ресурсов. Результатом такого единого подхода к проблеме должна стать своего рода концепция «Эшелонированной защиты», важнейшим элементом которой, естественно, является процесс создания максимально безопасных приложений на этапе их разработки.
Пути решения По мнению Геннадия Макхметова, блогера популярного сайта habrahabr.ru, уязвимости в программном обеспечении были, есть и, скорее всего, будут, так как неуязвимый код, особенно в рамках крупного проекта, не способен написать никакой программист, вне зависимости от уровня его квалификации. Даже если полностью базироваться на методах безопасной разработки web-приложений, ошибки и уязвимости будут находить почти всегда. В качестве примера можно привести Open Source разработки, которые долгое время поддерживались сообществами программистов, но даже спустя десятилетия в них находили уязвимости архитектуры, или уязвимости в участках кода, который успешно эксплуатировался много лет и даже был подвергнут тестированию. Основной целью упомянутой выше концепции «Эшелонированной защиты», касающейся разработки web-ресурсов, является избежание или минимизация уязвимостей, то есть применение подхода так называемого безопасного программирования, основанного на том, что любая мера предосторожности, используемая в процессе разработки программного кода, может быть преодолена злоумышленником. Для этого механизм защиты web-ресурсов должен быть многоуровневым, где один элемент безопасности обязательно перекрывается другим. Достижение этой цели возможно в случае применения подобного подхода ко всем фазам жизненного цикла процесса разработки программного обеспечения. Процесс разработки должен развиваться одновременно с эволюцией угроз, направленных в адрес web-ресурсов. Разработчики должны знать и применять наилучшие практики безопасного программирования, быть готовы к неприятному процессу корректировок программного кода после выполнения необходимых процедур тестирования разработанных систем на проникновение, осуществлять самопроверки, использовать утилиты проверки кода и другие эффективные механизмы, повышающие эффективность их работы. Вполне вероятно, что благодаря техническому прогрессу в ближайшем будущем им в этом помогут компиляторы, обеспечивающие не только использование лучших практик кодирования, но и автоматического исправления существующих уязвимостей в системе безопасности web-ресурсов. Тем не менее разработчик вовсе не обязан знать, каким образом злоумышленник будет его атаковать, так же, как он не обязан создавать программный код, предотвращающий ту или иную уязвимость. Но разработчик должен понимать, какие его действия могут привести к появлению уязвимостей, и как он можем этого избежать. В этом ему поможет знание общих принципов безопасной архитектуры и дизайна web-ресурсов. Данные принципы общеизвестны и были сформулированы довольно давно, к ним относятся:
  • простота механизмов (economy of mechanism);
  • безопасность по умолчанию (fail-safe defaults);
  • полное проникновение защиты (complete mediation);
  • открытый дизайн (open design);
  • разделение полномочий (separation of privilege);
  • минимум привилегий (least privilege);
  • минимизация разделения ресурсов (least common mechanism);
  • психологическая приемлемость (psychological acceptability).
Но это в теории, а как дело обстоит на практике? А на практике выясняется, что одних только принципов совершенно недостаточно для проектирования результативной системы безопасности web-ресурса. В повседневной действительности мы, к сожалению, обращаем внимание только на видимую часть безопасности web-ресурса, то есть на его безопасное поведение. Оно включает в себя такие важные компоненты, как: аутентификация пользователя, контроль прав его доступа, фильтрация входных данных. Поведение - это то, что легко можно показать и протестировать, именно поэтому маркетологи обычно «продают» исключительно функции безопасности. Для того чтобы разрабатываемый ресурс был по настоящему безопасным, необходимо, чтобы он имел ещё и хорошо продуманную и безопасную структуру, которая находится в тени, которую сложно продемонстрировать и продать. От данной структуры напрямую зависит вероятность совершения ошибок в программе, трансформация совершенных ошибок в уязвимости и в дальнейшем – серьезность данных уязвимостей. Таким образом, решение проблемы обеспечения безопасности web-ресурсов заключается явно не в том, чтобы раздавать советы профессиональным разработчикам. Возможно, данное решение заключается в напоминании им о том, что для повышения безопасности web-приложений необходимо использовать очень несложные и хорошо известные технологии. Нужно только их обязательно использовать...

Сорокин Андрей Офицер по информационной безопасности DAAC System Integrator

icon icon icon
icon
icon icon icon icon icon
icon
icon