OWASP виды уязвимостей для фронтенда

Судя по статистике большинство ресурсов в интернете уязвимы для различных client-side атакам. И из этого следует, что довольно не часто разработчики задумываются об угрозах. Рассмотрим некоторые виды атак для фронтенда, библиотек (фреймворков) и примеры. XSS (Cross-Site Scripting) Самая популярная уязвимость на фронтовой части т.к при попадании кода злоумышленника в ДОМ дерево и получив возможность выполнять […]

Судя по статистике большинство ресурсов в интернете уязвимы для различных client-side атакам. И из этого следует, что довольно не часто разработчики задумываются об угрозах. Рассмотрим некоторые виды атак для фронтенда, библиотек (фреймворков) и примеры.

XSS (Cross-Site Scripting)

Самая популярная уязвимость на фронтовой части т.к при попадании кода злоумышленника в ДОМ дерево и получив возможность выполнять код на стороне пользователя, можно сделать различные атаки. А на стороне клиента хранится сессия, куки, storage. и всё это становится доступным!

XSS делится на 3 части:

1. Stored XSS

Так называемое персистентное XSS — это уязвимость которая срабатывает при взаимодействии с приложением которое хранило в себе какие-либо не валидированные данные (с инъекцией JS). Например, пользователь вводит комментарий с содержимым:

<script>alert("любой js код, который будет выполняться у каждого пользователя")</script>
// в Vue.js потенциально опасный код может вызывать директива v-html
// в React.js метод dangerouslySetInnerHTML (само название говорит о себе)

И если сервер не экранирует и никак не обрабатывает введенный текст, а client side выводит как HTML, то опубликованный комментарий будет выполнять JS код. Конечно же кроме комментария, могут быть и любые другие input поля который позволяет сохранить форма на сервер.

2. Reflected XSS

Называют не персистентным XSS и уязвимость появляется на сайтах моментально на ввод пользователя. Отличие от Stored XSS, это то, что инъекция js не хранится в БД, а выводится моментально пользователю, но точно такая же в плане защиты и обработки данных введённых пользователем (защиты нету). Происходить это может как с GET, так и с POST запросами. Самый популярный пример для вывода вводимых данных является поиск на сайтах:

сайт-которому-я-доверяю.рф/page.php?search=<script>alert("Вас взломали")</script>

А как взламывают? Вам присылают на почту (куда угодно) ссылку на сайт которому вы доверяете, но у сайта не предусмотрена корректная валидация и позволяет выполнить любой JS код, как только пользователь зайдет на страницу.

DOM-Based XSS

Уязвимость связана только с DOM и наверное в настоящее время практически не встречается. Фактически это тоже как и Reflected XSS связано с URL, но не связано с сервером, а с нативным js где в теории URL (GET параметры или HASH) попадает напрямую в обработку например метода document.write или eval. И получается XSS.

<script> document.write(location.href); </script>
or
// вы перешли на url https://site.ru/#https://www.evil.net
to = location.hash.slice(1)
if (to.startsWith('https:')) {
  location = to;
}

Стоит добавить ещё к возможным уязвимостям это Web Messaging API который потенциально может получить сообщение от стороннего ресурса и если неправильно обработать.

Основные опасные методы у javascript

document.write()
document.writeln()
document.domain
element.innerHTML
element.outerHTML
element.insertAdjacentHTML
element.onevent

И основные потенциальные цели взлома в браузере:

document.URL
document.documentURI
document.URLUnencoded
document.baseURI
location
document.cookie
document.referrer
window.name
history.pushState
history.replaceState
localStorage
sessionStorage
IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB)
Database

Итого

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

Читайте также
VUE VAPOR: новая экспериментальная фича
VUE VAPOR: новая экспериментальная фича
VUE VAPOR: новая экспериментальная фича

Vue.js представляет Vapor Mode — новую стратегию компиляции, которая выводит производительность ваших приложений на новый уровень.

Рассказываем об обновлениях Firefox 119
Рассказываем об обновлениях Firefox 119
Рассказываем об обновлениях Firefox 119

В октябре вышли обновления Firefox 119. Также сформировали обновление ветки с длительным сроком поддержки — 115.4.0.

Shopify открывает Ruvy, инструментарий для создания Wasm-модулей из Ruby-кода
Shopify открывает Ruvy, инструментарий для создания Wasm-модулей из Ruby-кода
Shopify открывает Ruvy, инструментарий для создания Wasm-модулей из Ruby-кода

Ruvy от компании Spotify — это инструментарий WebAssembly, способный транслировать Ruby-код в модули Wasm, основанный на ruby.wasm. Ruvy реализован на языке Rust и содержит некоторые оптимизации для повышения производительности и упрощения выполнения Wasm-модулей.

В Django 5 появилось 5 новых функций
В Django 5 появилось 5 новых функций
В Django 5 появилось 5 новых функций

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