Что такое теневой код и какие риски он создает

Что такое теневой код и какие риски он создает

Согласно новому исследованию, «теневой» код – сторонние скрипты и библиотеки, часто добавляемые в веб-приложения без проверки безопасности – создают риски для веб-сайтов и ставят под угрозу соблюдение правил конфиденциальности. Также сторонний код делает организации уязвимыми для атак цифрового скимминга.

Исследование, проведенное Osterman Research для PerimeterX, показало, что более 50% опрошенных специалистов по безопасности и разработчиков считают, что использование стороннего кода в своих приложениях сопряжено с большим риском. Тревога по поводу атак Magecart также значительно выросла по сравнению с прошлым годом – на 47%. Magecart, или электронный скимминг – это форма мошенничества, при которой данные транзакции перехватываются во время оформления заказа в интернет-магазине.

По оценкам специалистов, типичный веб-сайт примерно на 70% состоит из стороннего кода. Опрос показал, что хотя почти все веб-сайты используют по крайней мере некоторые сторонние клиентские скрипты, 60% опрошенных считают, что доля стороннего кода значительно ниже – это опасное заблуждение.

Уязвимость веб-приложений

Атаки на веб-сайты и веб-приложения продолжают расти. Одна из причин этого – распространенность стороннего кода. Когда компании создают веб-приложения, они используют код из многих источников, включая коммерческие проекты с открытым исходным кодом, часто создаваемые и поддерживаемые как профессиональными разработчиками, так и разработчиками-любителями.

Программисты используют сторонний код, потому что он позволяет им быстро создавать свои веб-сайты и приложения. Например, компании, скорее всего, добавят на свой сайт сторонний виджет чата вместо того, чтобы создавать его с нуля.

Атака на Ticketmaster. Как сторонний код делает веб-сайты уязвимыми

Рассмотрим атаку Magecart на Ticketmaster в июле 2018 года. В результате этой утечки данных хакеры смогли получить доступ к конфиденциальной информации о клиентах на веб-сайте Ticketmaster, взломав сторонний скрипт, используемый для обеспечения функциональности чат-бота. Проблема в том, что эта сторонняя функция работает непосредственно в браузере клиента, а браузер построен так, чтобы просто отображать код, отправленный с веб-сервера. Предполагается, что весь код, будь то собственный или сторонний, исправен. Если JavaScript считывает информацию, которую посетитель вводит в поле кредитной карты, браузер предполагает, что запрос является законным и удовлетворяет его. Вот так такие компании, как Ticketmaster, попали в эту ситуацию.

Обновление безопасности

Поскольку использование стороннего кода имеет важное значение для разработки веб-приложений, предлагаются четыре совета как обезопасить свой сайт от взлома хакеров.

1. Принять подход с нулевым доверием к стороннему коду

Предоставление стороннему коду доступа по умолчанию ко всему на вашем веб-сайте не совсем правильно. Вам стоит занести в белый список только тот код JavaScript, который требует доступа к конфиденциальной информации. Проведите инвентаризацию всего стороннего кода и заблокируйте ему доступ к любой другой информации на вашем сайте. Затем пройдите и добавьте разрешения обратного доступа только там, где это необходимо. Требуется ли виджету чата доступ к учетным данным посетителей при входе на сайт? Возможно, нет. Сохраняйте доступ только к тому коду, который действительно в нем нуждается.

2. Встраивайте сторонний код в окна iframe

Iframe – это элемент HTML, который позволяет разработчикам встраивать внешний контент (например, видео, карты и выписки из корзины покупок) в изолированную среду в окне браузера. Сторонний код, встроенный в iframe, будет отделен от исходного кода, который ваша команда добавляет в остальную часть веб-сайта. Все, что встроено в iframe, не может получить доступ к содержимому на главной веб-странице.

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

3. Размещайте сторонний код только там, где это абсолютно необходимо

Не подвергайте себя опасности, если в этом нет необходимости. Мы знаем, что есть код, которого нельзя избежать, например, вашей команде может понадобиться Google Analytics. Но нужно помнить, что это сопряжено с риском. Держите сторонний код ограниченным там, где он вам действительно нужен, и не включайте его в конфиденциальные разделы на своем веб-сайте. Так, многие банки не добавляют сторонние скрипты на свою страницу. У них может быть внешний код на своей домашней странице, но как только клиент входит в систему, все создается с использованием собственного кода, чтобы сохранить информацию о клиентах безопасной.

4. Реализуйте политику безопасности контента

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

Вывод. Вам нужен сторонний код для ведения вашего онлайн-бизнеса. Но вы не можете реально гарантировать безопасность всего кода. Слишком много разработчиков вовлечено в его создание. Даже если это безопасно, когда вы добавляете его в свое веб-приложение, нет гарантии, что исходный поставщик не подвергнется атаке или случайно не добавит уязвимый код в будущем. Единственный способ обеспечить безопасность данных ваших клиентов – это предположить, что весь сторонний код рано или поздно станет уязвимостью, а затем защитить ваше веб-приложение от взлома. Не думайте, что какой-либо код безопасен.