Что такое атаки CSRF и как их предотвратить?

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

Слабые или некачественные методы обеспечения безопасности веб-сайтов и небрежность на пути пользователя — некоторые из распространенных причин успешной CSRF-атаки.

Давайте посмотрим, что такое CSRF-атака и какие способы вы можете предотвратить от нее как разработчик или пользователь.

Как CSRF-атаки влияют на вас?

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

Например, включение процедур защиты от CSRF предотвращает междоменное вредоносное взаимодействие.

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

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

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

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

CSRF использовался для перехвата транзакций денежных средств через Интернет, а также для изменения имен пользователей и паролей, что приводило к потере пользователями доступа к затронутой службе.

Как злоумышленники захватывают ваши сеансы с помощью CSRF: примеры

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

Во время атаки CSRF действия GET, DELETE и PUT, а также уязвимые запросы POST являются основными целями злоумышленника.

Давайте посмотрим на значение этих терминов:

  • GET: запрос на получение результата от база данных; например, поиск Google.
  • POST: обычно для отправки запросов через веб-формы. Запрос POST является обычным явлением во время регистрации или входа пользователя в систему, также известный как аутентификация.
  • DELETE: удалить ресурс из базы данных. Вы делаете это всякий раз, когда удаляете свою учетную запись в определенной веб-службе.
  • PUT: запрос PUT изменяет или обновляет существующий ресурс. Пример — изменение вашего имени в Facebook.

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

Изменение IP-адреса затем регистрирует жертву на новом веб-сайте, где злоумышленник вставил ложную ссылку, которая отправляет реплицированную форму или измененный запрос сервера, который они создали через CSRF.

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

Пример CSRF-атаки GET-запроса

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

  https://websiteurl/pay? Amount = $ 10 & company = [аккаунт компании ABC]  

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

  https://websiteurl/pay? Amount = $ 20000 & company = [аккаунт злоумышленника]  

После того, как вы щелкнете ссылку на этот измененный запрос GET, вы совершите непреднамеренный перевод в учетную запись злоумышленника.

Выполнение транзакций через запросы GET — плохая практика и делает действия уязвимыми для атак.

Пример CSRF-атаки POST-запроса

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

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

Например, форма запроса POST может выглядеть так:

   





Однако злоумышленник может поменять ваши учетные данные, создав новую страницу и изменив форму выше на следующую:

   







В управляемой форме злоумышленник устанавливает значение поля суммы на «30000», меняет номер счета получателя на его номер, отправляет форму при загрузке страницы, а также скрывает поля формы от пользователя.

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

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

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

Еще одно действие, уязвимое для CSRF-атаки, — это изменение имени пользователя или пароля, пример запроса PUT. Злоумышленник копирует вашу форму запроса и заменяет ваш адрес электронной почты своим.

Затем они крадут ваш сеанс и либо перенаправляют вас на страницу, либо отправляют вам электронное письмо с предложением щелкнуть привлекательную ссылку.

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

Как предотвратить атаки CSRF в качестве разработчика

Одним из лучших методов предотвращения CSRF является использование часто меняющихся токенов вместо зависимости от файлов cookie сеанса для запуска изменения состояния на сервере.

По теме: Бесплатные руководства по пониманию цифровой безопасности и защиты вашей конфиденциальности

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

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

Реализация двух Система факторной аутентификации (2FA) для выполнения транзакций в вашем веб-приложении также снижает вероятность CSRF.

Можно инициировать CSRF через межсайтовый скриптинг (X SS), который включает внедрение сценария в пользовательские поля, такие как формы комментариев. Чтобы предотвратить это, рекомендуется включить автоматический экранирование HTML во всех полях пользовательских форм на вашем веб-сайте. Это действие не позволяет полям формы интерпретировать элементы HTML.

Как предотвратить атаки CSRF как пользователь

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

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

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

По теме: Лучшие частные поисковые системы, уважающие ваши данные

Как пользователь, вы также можете полагаться на сторонние аутентификаторы, такие как Google Authenticator или его альтернативы, для проверки вашей личности через Интернет.

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

Повысьте уровень своей веб-безопасности

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

Однако, как правило, вводятся другие уязвимости, пытаясь предотвратить другие. Поэтому будьте осторожны, чтобы не нарушить другие параметры безопасности при попытке заблокировать CSRF..

Оцените статью
oilgasindustry.ru
Добавить комментарий