Share This
Связаться со мной
Крути в низ
Categories
//Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Совместно с Яндекс.Практикумом рассказываем о популярных уязвимостях во фронтенде, о которых должен знать мидл или тот, кто хочет им стать. Также: лекции, курсы, XSS- SQL-сканеры и awesome-списки. Обсудить

iz dzhunov v midly zachem frontend razrabotchiku informacionnaja bezopasnost abdd8e2 - Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

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

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

1. SQL-инъекция

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

iz dzhunov v midly zachem frontend razrabotchiku informacionnaja bezopasnost 86ba399 - Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Рис. 1. Мамины эксплойты: о пользе экранирования символов

Для защиты необходимы следующие действия:

  • проверка и фильтрация вводимых пользователем данных;
  • экранирование символов;
  • использование параметризованных запросов.

Что нужно знать: основные команды и устройство баз данных.

Кейсы

  • Утечка OAuth-токенов GitHub и GitLab через SQL-инъекцию.
  • Данные более 8 млн пользователей Freepik были похищены с помощью SQL-инъекции.
  • Ботнет Vollgar заражает до 3000 БД в день.
  • Хакеры атаковали веб-интерфейс устройств Grandstream с помощью SQL-инъекции, чтобы использовать их для DDOS-атак.
  • Фото Скарлетт Йоханссон использовалось для атаки на серверы с СУБД PostgreSQL. Хакеры создали ботнет из 700 тыс. серверов для майнинга криптовалюты.
  • Малварь «PLEASE_READ_ME» атаковал 85 00 MySQL-серверов и украл четверть миллиона баз данных.

2. XML-инъекция

Для передачи данных между браузером и сервером приложения могут использовать расширяемый язык разметки XML. Считывающий документ XML-парсер может иметь потенциально опасные и уязвимые функции, на которые нацелена инъекция. В результате злоумышленник получает чувствительную информацию и удаленно выполняет код. Таким способом, например, можно проводить DOS- и XSS-атаки, а также подделывать запросы со стороны сервера (SSRF).

iz dzhunov v midly zachem frontend razrabotchiku informacionnaja bezopasnost fe52d55 - Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Рис. 2. Схема XML-атаки (XML External Entitiy Attack): 1) хакер сканирует сайт и проводит XML-атаку, 2) XML-процессор анализирует разметку, 3) внедрение вредоносного кода, 4) обработка XML-запроса, 5) хакер получает информацию.

Для защиты необходимо:

  • использовать последние версии XML-парсеров и отключить в них уязвимые функции.
  • внедрить проверку и фильтрацию поступающих XML-документов.
  • вместо XML использовать JSON.

Что нужно знать: XML.

Кейсы

  • Через XML-RPC хакеры внедряли вредоносный код на сайты WordPress, который атакует другие сайты по словарю.
  • Этичный хакер заработал 9 тыс. долларов, после успешной XML-атаки на Uber.
  • Глобальный сбой в работе Blu-ray плееров Samsung вследствие XML-атаки.

3. Атака XSS

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

iz dzhunov v midly zachem frontend razrabotchiku informacionnaja bezopasnost 32df35a - Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Рис. 3. Схема XSS-атаки: 1) хакер проводит XSS-инъекцию, 2) скрипт запускается каждый раз при открытии пользователю, 3) информация передается хакеру

Для защиты необходимо:

  • не давать возможность пользователям вставлять теги, стили;
  • экранировать символы, которые пользователи вводят в формы, заменяя их на HTML-мнемоники. Пример замены: > вместо >
  • санитайзить код (js-xss, DOMPurify, sanitize-html);
  • использовать Content-Security-Policy, который описывает правила загрузки данных на странице;
  • использовать динамический (zaproxy.org) и статистический анализ кода (eslint.org);
  • пользоваться инструментом Snyk для поиска уязвимости в модулях.

Что нужно знать: HTML и JS.

Кейсы

  • С 29 по 31 мая 2020 года был зарегистрирован всплеск XSS-атак на сайты WordPress: было проведено 130 млн атак.
  • Хакерская группа получила данные кредитных карт, эксплуатируя уязвимость в платежных формах на веб-сайте авиакомпании British Airways.
  • Фейсбук заплатил 25 тыс. долларов за найденную XSS-уязвимость.
  • Четырнадцатилетний белый хакер заработал 25 тыс. долларов за найденную уязвимость в Spark AR Studio.

4. Слабая аутентификация

Непродуманный механизм аутентификации клиента дает возможность перехватить или подобрать логин/пароль к веб-приложению с помощью брутфорса и атаки «Человек посередине». В этом случае хакер крадет сессию пользователя и с ее помощью выдает себя за него.

iz dzhunov v midly zachem frontend razrabotchiku informacionnaja bezopasnost 95faa0a - Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Рис. 4. Схема атаки «Человек посередине»

Брутфорс – метод перебора всех возможных сочетаний символов для получения пароля. Если количество неудачных попыток входа не ограничено, то пароль можно подобрать брутфорсом. Чтобы ускорить процесс, используются словари с готовыми хэшами, данные утечек и атаки по маске (подробнее читайте в нашей статье).

iz dzhunov v midly zachem frontend razrabotchiku informacionnaja bezopasnost 83965a7 - Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Рис. 5. Схема атаки методом грубой силы (брутфорсом)

Как защититься:

  • периодически инвалидировать сессии;
  • не передавать данные в открытом виде;
  • включить проверку на слабый пароль;
  • ограничить неудачное количество попыток входа;
  • подключить многофакторную аутентификацию.

Что нужно знать: механизмы аутентификации.

Кейсы

  • С помощью брутфорс-атаки на WordPress-сайты более 7 тыс. онлайн-магазинов были подменены на мошеннические.
  • Злоумышленники обошли многофакторную аутентификацию SolarWinds и внедрили вредоносное ПО в обновления их клиентов.
  • Небольшая утечка данных компании AdGuard после брутфорса.
  • Авиакомпания Cathay Pacific была оштрафована на 630 тыс. долларов правительством Великобритании из-за слабых механизмов защиты, которые привели к успешной брутфорс-атаке.

5. CSRF

Межсайтовая подделка запроса (CSRF) позволяет выполнить действие, передав в запросе определенные параметры. Например, пользователю приходит письмо с ссылкой на сайте, где тот авторизован. После перехода по ней выполняется заданный злоумышленником запрос.

iz dzhunov v midly zachem frontend razrabotchiku informacionnaja bezopasnost 2467520 - Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Рис. 6. Схема межсайтовой подделки запроса (CSRF): 1) хакер отправляет пользователю вредоносную ссылку, 2) пользователь переходит по ссылке и тем самым отправляет POST-запрос на сервер, 3) запрос выполняется от имени учетной записи пользователя

Как защититься:

  1. использовать токены в клиентских запросах.

Что нужно знать: требуется уметь «солить» пароли.

Кейсы

  • Серверы сети ресторанов Subway взломали и отправили пользователям на электронную почту письма с вредоносными ссылками.
  • В феврале 2016 года австрийская аэрокосмическая компания FACC AG потеряла 42 млн долларов из-за фишинга.
  • Злоумышленники получили 500 ГБ незашифрованных файлов производителя ароматизаторов Symrise, используя фишинговые письма.
  • Хакеры украли данные 65 тыс. пользователей с сайта японского разработчика игра Koei Tecmo.
  • Баг-хантер получил 3 тыс. долларов за найденную уязвимость на сайте отзывов Glassdoor.

Из отчета службы компьютерной безопасности Edgescan за 2020 год (.pdf) следует, что у 68% компаний не хватает сотрудников департамента ИБ. Они оценивают свой уровень защиты как «средний». Чаще всего встречаются SQL-инъекции (42%) и XSS-атаки (19%). Из двух миллионов просканированных веб-приложений 3.7% имеют уязвимость в базе данных. В небольших организациях – до 100 сотрудников – критических уязвимостей меньше (0.1% от общего числа), чем простых (95.9%). В больших организациях с более 10 000 сотрудников критических уязвимостей в десять раз больше.

iz dzhunov v midly zachem frontend razrabotchiku informacionnaja bezopasnost 8f60035 - Из джунов в мидлы: зачем фронтенд-разработчику информационная безопасность?

Приложения всех компаний уязвимы вне зависимости от количества сотрудников и их профессионализма. Всегда сохраняется ненулевая вероятность, что веб-приложение могут взломать. Чтобы снизить риски нужно заниматься образованием и хорошо знать свой инструмент. Для этого мы составили список курсов и лекций по ИБ, SQL и фронтенду.

Лекции по ИБ во фронтенде

  • безопасность: уязвимости вашего приложения – Алексей Богачук рассказывает о XSS-атаках и почему фреймворки не спасают;
  • безопасность веб-приложений – лекция об угрозах из списка OWASP Top 10.

Курсы по ИБ во фронтенде

Курсы по информационной безопасности для фронтенда в основном на английском языке и платные.

На английском:

  • веб-приложения: безопасность для новичков – введение в десять наиболее распространенных угроз по версии OWASP за полтора часа;
  • безопасность в Angular – создание безопасных приложений на основе лучших практик OWASP и обеспечение безопасности веб-сервера на Node.js;
  • этичный хакинг и пентестинг веб-приложений – практические методы взлома и их не устаревающие принципы;
  • OWASP: основы информационной безопасности – в этом курсе дается базовый обзор угроз из списка OWASP;
  • продвинутый хакинг и защита веб-приложений – узнаете, как тестировать веб-инфраструктуру, используя различные векторы атак в реальном времени;
  • курс по SQL-инъекциям – поймете разницу между разными вариантами SQL-атаки: Union Based, Boolean Based, Error Based и Time Based SQL-инъекции;
  • курс по межсайтовому скриптингу (XSS) – курс знакомит с XSS, его производными и объясняет, как эксплуатировать XSS в старых и современных веб-приложениях;
  • хакинг и пентестинг веб-приложений с нуля – научитесь собирать информацию о цели атаки, обнаруживать и эксплуатировать уязвимости.

На русском:

  • этичный Веб хакинг для начинающих – основы SQL, различные методы тестирования, установка бэкдора, использование программ Burp Suite, ZAP Proxy, SQLMap.

Курсы по SQL

На английском:

  • гайд по SQL для новичков – узнаете что такое CRUD, агрегация, вложенные запросы и многое другое;
  • MySQL с нуля – трехчасовой курс по основам MySQL, 77 тыс. лайков и 700 дизлайков;
  • введение в базы данных и SQL-запросы – курс познакомит с синтаксисом SQL и даст представление о концепции баз данных. Опыт программирования не требуется.

На русском:

  • начальный курс SQL – лекции и практические задания от преподавателя с 15-летним стажем в анализе данных с помощью SQL-запросов;
  • базы данных SQLite. Знакомство с библиотекой SQLite – познакомитесь с работой реляционных баз данных и языком запросов SQL;
  • Уроки SQL для начинающих: часть 1, 2, 3, 4, 5, 6, 7, 8 – научитесь создавать БД, работать с таблицами, создавать индексы и узнаете как использовать псевдонимы для выборки данных.

SQL-инъекции

  • шпаргалка по SQL-инъекциям;
  • Wiki по SQL-инъекциям.

Сканеры SQL-инъекций

  • SQLMap;
  • jSQL Injection;
  • NoSQLMap;
  • DSSS;
  • explo;
  • Leviathan.

XSS

  • Cross-Site Scripting – Google;
  • шпаргалка по XSS и безопасности HTML 5 ;
  • awesome-список по XSS;
  • туториал по XSS;
  • примеры скриптов для XSS-инъекции;
  • еще коллекция скриптов для XSS-инъекции.

XSS-сканеры

  • XSStrike;
  • PwnXSS;
  • NoXss;
  • XssPy.

Awesome-списки и курсы по фронтенду

Уязвимости нулевого дня (англ. zero day) могут присутствовать во фреймворках, поэтому нужно тщательно их изучить.

  • Angular awesome-списки: 1, 2, 3;
  • React awesome-списки: 1, 2, 3;
  • Vue.js awesome-список: 1;
  • список Youtube-каналов по фронтенду на русском и английском языках;
  • Яндекс.Практикум – курс для продолжающих фронтенд-разработчиков. Погрузитесь в JS, TS, алгоритмы и React. Плюс проекты в портфолио;
  • FreeCodeCamp – онлайн-тренажеры по HTML, CSS, JS и React для начинающих;
  • бесплатный курс по веб-разработке – 13-часовой курс по веб-разработке от HTML, CSS, Bootstrap до PHP, JS, Node.js и Angular.

Итоги

В этой статье мы рассмотрели только самые популярные уязвимости. Полный их список значительно шире. Если базовому кодингу можно научиться самому (много информации в свободном доступе), то материалов по ИБ во фронтенде значительно меньше. Чтобы перейти на средний уровень, джуну потребуются серьезные познания в области безопасности приложений и сопутствующие вещи: как минимум, основы SQL, очень хорошее знание JavaScript и современных JS-фреймворков.

  • 13 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close