Что такое подделка межсайтовых запросов (CSRF)?

Опубликовано: 2023-04-12

Уязвимости межсайтовой подделки запросов (CSRF или XSRF) редко имеют высокий или критический рейтинг серьезности. Однако они все еще могут причинить много вреда. Они были второй по распространенности уязвимостью WordPress за последние годы после уязвимостей межсайтового скриптинга (XSS). Вы поймете, как лучше защитить свой веб-сайт, если будете знать, что такое уязвимость CSRF и как злоумышленники обычно ее используют.

Как обойти политику одинакового происхождения

Уязвимость CSRF позволяет злоумышленнику обойти стандартную функцию браузера, называемую политикой того же источника. Все веб-браузеры следуют этому правилу, чтобы предотвратить вмешательство, которое допускают CSRF. Обычно, когда вы загружаете веб-страницу, ваш браузер взаимодействует только с одним доменом или поддоменом, за исключением любых разрешенных исключений. И он будет принимать контент только по одному протоколу, HTTP или HTTPS (не по обоим), не предупреждая вас о наличии проблемы. Если злоумышленники обходят политику одного и того же источника, они также могут обманным путем заставить вас переходить по ссылкам, которые выполняют нежелательные действия, неожиданно взаимодействуя с другим сайтом.

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

Визуально у вас будет мало или совсем нет признаков того, что вы взаимодействуете с другим сайтом нежелательным образом. Кликджекинг работает следующим образом. Если ваш сайт WordPress был взломан с помощью CSRF-уязвимости, вы и ваши посетители можете стать жертвами фишинга, кликджекинга и чего-то похуже.

В этом руководстве мы подробно рассмотрим подделку межсайтовых запросов. Мы рассмотрим конкретный пример уязвимости CSRF, чтобы вы поняли, как они работают. Затем мы покажем вам, что вы можете сделать, чтобы предотвратить появление уязвимостей CSRF на вашем сайте. Мы также предложим некоторые способы свести на нет или ограничить ущерб, который может нанести успешный эксплойт CSRF, защитив ваш сайт от этих и других типов атак.

Давайте взглянем.

Как атака с подделкой межсайтовых запросов (CSRF) влияет на ваш сайт WordPress?

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

Если плагин на вашем сайте WordPress содержит уязвимость CSRF, злоумышленник может захватить некоторые учетные записи пользователей. Это был бы один из худших сценариев. Если украденная учетная запись имеет административную роль в WordPress или пользователь повторно использует свой пароль на других сайтах, ущерб может быть значительным.

Подделка межсайтовых запросов

Как работает CSRF-атака?

Чтобы CSRF-атака сработала, хакер должен выполнить три различных условия. Если вы понимаете их на общем уровне, у вас будет хорошее понимание некоторых основ веб-безопасности.

1. Обработка сеансов на основе файлов cookie

Как и другие приложения без сохранения состояния, WordPress использует файлы cookie сеанса для идентификации пользователей. В условиях низкой или скомпрометированной безопасности злоумышленник может испечь некоторые поддельные файлы cookie сеанса или манипулировать вошедшим в систему пользователем, чтобы выполнить нежелательные действия. WordPress будет принимать поддельные и манипулируемые запросы, которые исходят или кажутся исходящими от вошедшего в систему пользователя.

Хотя эксплойты CSRF часто нацелены на обработку сеансов на основе файлов cookie, это не единственная их цель. Атаки CSRF могут быть эффективны против любого приложения, которое автоматически добавляет учетные данные пользователя к запросам. По этой причине аутентификация на основе сертификатов и базовая аутентификация HTTP также подвержены уязвимостям CSRF.

2. Соответствующее действие может быть нацелено

В целевом приложении должно быть какое-то действие, которое жертвы могут быть обмануты. Это может быть привилегированное действие, например, изменение разрешений пользователя. Это может быть связано с данными пользователя, такими как обновление пароля пользователя. Это общие действия во всех веб-приложениях, включая WordPress. Они представляют ценность в качестве целей для хакеров, потому что они могут открыть им путь для кражи учетных записей пользователей и более глубокого поиска способов участия в краже, мошенничестве или других злонамеренных действиях.

3. Отсутствие непредсказуемых параметров запроса

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

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

Использование уязвимости CSRF для изменения адресов электронной почты учетных записей пользователей — пример

Вот более подробный пример. На самом деле он не будет работать, но он иллюстрирует основные концепции эффективного эксплойта CSRF.

Рассмотрим запрос на изменение электронной почты. Когда пользователь выполняет это действие, он делает HTTP-запрос, который выглядит примерно так:

 POST /test HTTP/1.1 Host: yourwebsite.com Content-Type: application/x-www-form-urlencoded Content-Length: 60 Cookie: session=yvthgjrudhgeQkAPzeQ5gHgTvlyxHfsAfE;[email protected]

Почему это работает

Это соответствует условиям, необходимым для CSRF, если/потому что:

  • Целевой сайт/приложение использует файл cookie сеанса, чтобы определить, какой пользователь отправил запрос, и нет никаких других токенов или механизмов для отслеживания сеансов пользователей. Вот почему разработчики должны использовать токены CSRF и/или файлы cookie SameSite.
  • Изменение адреса электронной почты пользователя является важным действием в интересах злоумышленника. Это точно! Если вы можете изменить адрес электронной почты пользователя на тот, который находится под вашим контролем, вы можете получить полный контроль над его учетной записью.
  • Злоумышленник знает параметры запроса, необходимые для изменения адреса электронной почты пользователя, и может генерировать для них допустимые значения. Эти параметры не являются секретными, и нетрудно определить, какие адреса электронной почты многие люди используют для своих учетных записей в Интернете. Сеансовый файл cookie сложнее.

Как злоумышленник может украсть файлы cookie сеанса

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

Когда вы нажимаете на эти мошеннические ссылки, они отправляют запрос на изменение адреса на целевой и уязвимый для CSRF сайт. Если вы вошли на этот сайт, запрос будет действительным. Ваш аккаунт был украден — вы сдали свои ключи.

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

Предполагая, что другие меры безопасности, такие как атрибут файла cookie SameSite, отсутствуют, уязвимый целевой сайт будет обрабатывать поддельный запрос так же, как действительный. Если на целевом веб-сайте не применяется этап подтверждения изменения адреса или если злоумышленник может обойти его, злоумышленник успешно изменит адрес пользователя на любой, который выберет злоумышленник.

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

Механизмы доставки для атак CSRF и отраженных межсайтовых сценариев (Reflected XSS) аналогичны.

В большинстве случаев злоумышленники размещают свой вредоносный код на ложном сайте, который они контролируют. Это может быть законный сайт, который они уже скомпрометировали, поэтому Google ведет список вводящих в заблуждение сайтов. Все браузеры будут предупреждать своих пользователей, если вы находитесь в этом списке! Вот почему iThemes Security проверяет каждый день, чтобы убедиться, что ваш сайт не стал инструментом хакера.

Заставить потенциальных жертв посетить вводящий в заблуждение веб-сайт — это просто вопрос основных социальных сетей и маркетинга по электронной почте. Иногда вредоносный код просто размещается на популярном сайте в активной зоне.

Злоумышленнику может даже не понадобиться веб-сайт, чтобы заманить своих жертв. Некоторые простые эксплойты CSRF используют метод GET. Это то, что делает ваш браузер, когда вы нажимаете ссылку или вводите URL-адрес в адресной строке. Он делает запрос GET, используя URL-адрес в ссылке или предоставленный вами. Иногда CSRF-атаку можно полностью выполнить с помощью одного GET-запроса к уязвимому веб-сайту. В подобных ситуациях злоумышленнику может не понадобиться использовать вводящий в заблуждение веб-сайт. Они могут просто скормить своим жертвам вредоносный URL-адрес напрямую.

Защита вашего сайта от атак с подделкой межсайтовых запросов (CSRF)

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

Помимо управления обновлениями и предупреждения об уязвимых плагинах и темах, iThemes Security Pro упрощает настройку и управление правилами безопасности на основе пользователей и ролей. Делегируйте привилегии по принципу наименьших привилегий. Защитите свой логин, восстановление пароля и контактные формы с помощью CAPTCHA. Не давайте своим пользователям больше возможностей, чем им нужно. Требовать от пользователей с более высокими привилегиями использовать более надежные методы аутентификации. И, безусловно, используйте самый удобный и простой способ входа в WordPress без пароля: ключи доступа!