View
260
Download
3
Category
Preview:
Citation preview
Обзор ограничений современных технологий в области ИБ
Петухов Андрей ЛБИС ВМК МГУ
Disclaimer • Это не научный доклад, но научно-‐популярный • Всё равно большинство актуальных задач сводится к проблеме останова МТ или P=NP, расходимся
• Тогда зачем? – обсудить актуальные нерешенные практические задачи в вебе
• Warning для практиков: используется сочетание “методически решенная задача”
• Не будет слайда с Боромиром
Scope • Технологии поиска недостатков в веб-‐приложениях этапа
разработки – черным ящиком – в исходном коде
• Технологии защиты веб-‐приложений от атак на эти недостатки
• Out of scope: – технологии поиска или недопущения недостатков внедрения и
эксплуатации
– технологии защиты от атак на эти недостатки
Фреймворк для рассуждений • Веб-‐фреймворки берут рутину на себя, популярен
принцип safe by default – ORM, HTML через объектные модели, защита от CSRF на уровне
фреймворка, даже XXE того • Повышается уровень абстракции API
– Vaadin и GWT на сервере и Angular.JS на клиенте • Тенденция к исчезновению типичных недостатков в новом
коде • Описанные задачи в старом коде научились решать
(методически) сравнительно неплохо – Trinity: статические анализаторы, black-‐box сканеры и WAF
• Но только не для applica�on specific недостатков
WTF applica�on specific недостатки? • Типичные -‐ это input valida�on
– в общем случае -‐ некорректное использование API внешних подсистем
– порождают класс injec�on-‐атак – injec�on-‐атаки порождают в запросах структурные (синтаксические) аномалии
• Applica�on-‐specific -‐ это логика – в общем случае API -‐ собственное; правила использования есть только в голове авторов
– порождают класс атак на логику (abuse/misuse/hijacking и т.п.) – в запросах нет структурных аномалий
Примеры applica�on specific недостатков • Уязвимости авторизации • Нарушение целостности процесса – процедуры checkout’ов
• Некорректное использование криптографических примитивов – купоны и прочие тикеты
• Ошибки интеграции aka неверные допущения о границах доверия – интернет-‐магазины, платежные системы, OAuth туда же
• Вменяемой типизации и классификации нет
Статические анализаторы • Построить Data-‐Flow представление программы – боль для нестрого типизированных языков – боль связывать представления через хранилища
• Получить возможные значения переменных в каждой точке – наследование, интерфейсы, reflec�on
Статические анализаторы • Найти уязвимости в соответствии с моделью
– используемая модель -‐ модель невмешательства имени Деннинг
– данные из недоверенного канала попадают в канал с высоким уровнем доверия
• Как классифицировать каналы? – по имени вызовов API – по маркерным значениям в множестве возможных значений переменной
• Типичные vs applica�on specific – API заранее неизвестно, маркеры тоже непонятно какие
Black-‐box сканеры • Задачи: crawling & analysis • Сrawling классических приложений – разбор HTML, заполнение форм, вызов обработчиков
• Сrawling SPA (GWT, Vaadin) – h�p://dashboard.demo.vaadin.com/, Google AdWords – динамический анализ JS и состояния DOM
• Проблема – экспоненциальное кол-‐во последовательностей взаимодействия для полного обхода интерфейса
h�p://dashboard.demo.vaadin.com/
SPA -‐ проблемы и задачи • Как определить множество элементов UI и способы их
активации? • Обработчики событий могут добавляться/удаляться
динамически • Код может генерироваться динамически или приходить
с сервера • Обработка событий
– делегированная обработка – фазы перехвата и всплытия – возможность остановки распространения
SPA -‐ проблемы и задачи • Как определить, какие действия в UI -‐ полезные? – как понять, что мы изменили интерфейс и перешли в новое состояние?
• Что входит в состояние? – состояние DOM? содержимое localStorage? URI? глобальные переменные? состояние таймеров?
• Как сравнивать состояния между собой? • По какой стратегии переходить в новые состояния? – на странице AdWords 132 обработчика, и только 15% из них повторяющиеся
• Как возвращаться в предыдущие состояния?
h�p://goo.gl/YTgrua
SPA -‐ проблемы и задачи • Проблемы со временем
– таймеры – ожидание конца начальной загрузки – асинхронные запросы
• Сrawljax работает очень плохо, остальные -‐ еще хуже • Итого, основная проблема:
– для полного обхода надо вызывать все возможные комбинации UI-‐элементов на всех страницах
• НО: – в любой момент могут появиться новые обработчики (в т.ч. на посещенных страницах)
– могут быть удалены еще не посещенные обработчики
WAF • Обнаружение атак без структурных аномалий в параметрах или статистических аномалий в трафике
Итого: CHALLENGES • Как искать applica�on specific баги?
– нет API для реализации бизнес-‐логики => нет сигнатур для стат анализатора на основе последовательности вызовов API
• Как ловить атаки, не вызывающие структурные аномалии в запросах/ответах? – нет структурных аномалий в запросах => нет сигнатур на основе
синтаксиса • Как построить модель анализируемого SPA приложения?
– черным ящиком со стороны клиента – на уровне промежуточного фильтра (WAF) – из исходного кода
• Актуальные задачи: динамический анализ JS+DOM и майнинг инвариантов поведения из трафика
Вопросы?
• Лаборатория безопасности ИС ВМК МГУ • h�p://secsem.ru/ • petand@seclab.cs.msu.su • @p3tand
Recommended