Современные web-приложения существуют в среде, которая заметно отличается от той, которая была на заре существования сети Интернет. Они стали важными инструментами работы компаний, но, при этом, их функционирование зачастую не очень соответствует тому на что рассчитаны браузеры, движки которых, зачастую, создавались много лет назад. Причем рост и расширение функциональности web-приложений происходили столь быстро, что не всегда удавалось добиться всего, чего хотелось. Это особенно очевидно в том случае, если речь идет об обеспечении безопасности web-приложений. И хотя большинство компании использует определенные механизмы защиты своих web-приложений, только некоторые из них имеют действительно серьезные, комплексные программы обеспечения безопасности web-приложений. Этот факт порождает две проблемы. Во-первых, отсутствие полноценной программы значительно повышает риски и серьезно ухудшает последствия потенциальных атак. А во-вторых, отсутствие единой программы значительно увеличивает стоимость поддержания приемлемого уровня безопасности web-приложения, при котором риски и последствия потенциальных атак будут минимальными.
В данном отчете представлена информация о том, как построить прагматичную программу безопасности web-приложения за разумную стоимость, но, при этом, обеспечив его эффективную защиту. Вместо того, чтобы углубляться в конкретные детали какой-либо одной технологии, мы выделим основные составляющие системы безопасности и то как они должны взаимодействовать между собой. Начнем с того, что расскажем о том, чем отличаются web-приложения от коммерческих и других приложений. Затем мы предложим основные обоснования, которые можно использовать для получения бюджета для данной задачи. А также сосредоточим внимание на специфических потребностях в области безопасности web-приложений, углубимся в детали основных компонентов безопасности и, в результате, объединим их в общую программу безопасности web-приложений, основанную на типичных примерах использования.
Проблема безопасности web-приложений
Коммерческие web-приложения развивались таким образом, что стали головоломкой с точки зрения безопасности. Несмотря на то, что все в ИБ наблюдали за их появлением развитием, на первых этапах их относили к приложениям с не очень высоким уровнем риска. Но в короткое время web-приложения выросли из экспериментальных программ в критически важные бизнес-приложения. Спросите у любого разработчика web-приложений и он расскажет вам историю о том, как их маленький внутренний проект вдруг стал важнейшей частью бизнеса, как только они сделали ошибку, расхвалив его бизнес-подразделению своей компании. В результате, сейчас нет возможности прервать развитие web-приложений и вернуться к основам, чтобы учесть все важные моменты, которые были упущены на заре становления, что в итоге привело к текущей ситуации в плане безопасности:
- До начала активного использования web-приложений, лишь малое число компаний организовали взаимодействие своих внутренних систем с внешним миром. И даже те, кто сделали это, предоставляли доступ лишь бизнес-партнерам, а с широким кругом пользователей работали и вовсе – единицы.
- Web-приложения выросли самостоятельно – начинали с информационных сайтов, которые были лишь чуть больше, чем каталоги. А затем через базовые сервисы они были связаны с критически важными бэк-енд системами.
- Те приложения, что разрабатывались достаточно долго и не менее долго насыщались функционалом, зачастую вызывают к себе излишнее доверие, хотя по факту могут быть также уязвимы, как и те, что делались впопыхах. В данном случае срабатывает классический принцип “лягушка в кастрюле” – если лягушку закинуть в горячую воду, то она сразу выпрыгнет, а если подогревать воду постепенно, то сварится, даже не заметив этого.
- Протоколы web-приложений разработаны с целью обеспечить простоту и гибкость взаимодействия, но при этом, в значительной степени уязвимы.
- Инструменты и методы разработки web-приложений очень быстро развиваются, но по-прежнему полагаются на большое количество унаследованного кода.
- Угрозы для web-приложений развиваются также быстро, как и сами web-приложения, а кроме того, регулярно появляются угрозы в отношении того, что было сделано в прошлом. Web изначально не предназначался для безопасного запуска критических приложений, а это значит, что все разработанные приложения фактически используют неподходящую для этого платформу.
- Только некоторые приложения разработаны с нуля с учетом всех требований безопасности, а также поддерживаются в актуальном состоянии достаточно долго.
- Когда случаются инциденты безопасности, имеются проблемы с их обнаружением и анализом.