SlideShare a Scribd company logo
1 of 15
Обнаружение уязвимостей логики
        приложений методом статического анализа
                Где правда, где реклама?

                 Петухов Андрей



                            РусКрипто 2013

Thursday, March 28,
Too Long, Didn’t Read




Thursday, March 28,
Преамбула




Thursday, March 28,
Welcome to the Real World, Neo
            • Глобальные задачи в мире ПО и стат. анализ
                ➡     безопасная разработка ПО
                ➡     проверка соответствия ПО заданным требованиям
            • Задачи могут решаться владельцем ПО либо
              внешним подрядчиком (in-house vs outsource)
            • Итого три варианта
                ➡     разработка у себя, проверка вне/разработка вне, проверка у себя/разработка
                      вне, проверка вне
            • Методически, применение стат. анализа в SDLC -
              решенная заздача
            • Проверка у себя vs проверка спец. конторой -
              разница в толерантности к ложным срабатываниям


Thursday, March 28,
Стат. анализ и типичные недостатки
            • Обычно связаны с некорректной обратботкой
              входных данных (англ. Input validation)
                ➡     возможность внедрения операторов SQL, возможность переполнения
                      буфера и т.п.
            • Есть модели для описания таких недостатков
                ➡     Non-interference, которая позже получила реализацию в виде т.н. подхода
                      taint-analysis
                ➡     общий шаблон недостатка: использование данных, контролируемых
                      пользователем, в критичных вызовах без предварительной проверки на
                      корректность
            • Понятно как искать, все умеют, борьба идет за
              снижение кол-ва ложных срабатываний и
              повышение полноты (нестандартные фреймворки)


Thursday, March 28,
Стат. анализ и специфичные недостатки
     • Для описания недостатка надо использовать термины из
       предметной области
         ➡     возможность манипуляции курсами обмена валют для получения выгоды
         ➡     возможность просмотра чужой истории платежей в системе ДБО
     • Классы недостатков (по-английски)
         ➡     insufficient access control, insufficient process validation, insufficient anti-automation
     • Для того, чтобы что-то искать, надо сформулировать,
       что искать; как сделать детектирование app specific
       недостатков “коробочно” (методически, технически)?
     • Еще можно еще вспомнить задачу проверки
       корректности протоколов и их свойств, но это out of
       scope


Thursday, March 28,
Амбула




Thursday, March 28,
Доступные исходные данные
     • Исходный код (текст)
     • Лексемы
     • Дерево синтаксического разбора (AST)
     • Граф потоков управления (CFG)
     • Графы зависимостей (DFG/PDG/SDG)
     • Множества состояний программы (см. абстрактная
       интерпретация)
     • Множества возможных значений переменных в точках
       программы
         ➡     возможные типы переменных, возможные значения строк (string analysis)




Thursday, March 28,
Задача
     •      Дано ПО в любом из перечисленных представлений
     •      Спецификации ПО нет
     •      Формальных требований к ПО нет
     •      Требуется найти app specific недостатки
     •      Речь идет только об уязвимостях реализации, а не
            конфигурации или эксплуатации




Thursday, March 28,
Что можно сделать с представлением?
     • Можно поискать наличие в представлении фрагмента,
       соответствующего заданному шаблону
         ➡     “сигнатурный” метод
         ➡     варианты: grep, регулярные выражения над потоком лексем, регулярные выражения
               над AST, поиск подграфа в графах зависимостей (taint-анализ - тоже сигнатурный!!)
         ➡     так делают все известные мне статические анализаторы
         ➡     откуда взять сигнатуру специфичного недостатка? получается, о его наличии надо
               знать заранее, чтобы написать такую сигнатуру? как насчет переносимости на
               другие приложения?




Thursday, March 28,
Что можно сделать с представлением?
     • Построить гипотезу спецификаций, неявно
       предполагаемых разработчиками, и проверить
       соответствие ПО им
         ➡     англ. extraction of intended behavior или specification inference
         ➡     реально научная задача, если вы понимаете, о чем я :)
         ➡     “Toward automated detection of logic vulnerabilities in web applications”
         ➡     “Static detection of logic flaws in service-oriented applications”
         ➡     “Static detection of access control vulnerabilities in web applications”
         ➡     так не делает ни один из известных мне статических анализаторов




Thursday, March 28,
P. S.




Thursday, March 28,
Как делаем мы?

     • Ручной поиск экземпляров, формирование сигнатур,
       сигнатурный анализ для обеспечения полноты
     • Используем grep, Appercut и свои собственные
       инструменты
     • См. задачу проверки соответствия ПО требованиям,
       которую решает внешний подрядчик (4-ый слайд)




Thursday, March 28,
In-house checks?

     • Как искать app specific недостатки in-house, учитывая
       требования к низкому числу ложных срабатываний и
       отсутствия своей экспертизы для написания сигнатур?
     • Увы.




Thursday, March 28,
Вопросы
            • Контакты
                ➡ Twitter: @p3tand
                ➡ Mob: +7 916 360-52-49
                ➡ Email: andrew.petukhov@solidlab.ru
                ➡ Blog: http://andrepetukhov.wordpress.com/




Thursday, March 28,

More Related Content

What's hot

Применение статического анализа кода в преподавании и в разработке свободного ПО
Применение статического анализа кода в преподавании и в разработке свободного ПОПрименение статического анализа кода в преподавании и в разработке свободного ПО
Применение статического анализа кода в преподавании и в разработке свободного ПОAndrey Karpov
 
Алексей Лянгузов
Алексей ЛянгузовАлексей Лянгузов
Алексей ЛянгузовSQALab
 
Что за зверь такой, тестировщик,?
Что за зверь такой, тестировщик,?Что за зверь такой, тестировщик,?
Что за зверь такой, тестировщик,?D K
 
Security Tesint: Sql injection
Security Tesint: Sql injectionSecurity Tesint: Sql injection
Security Tesint: Sql injectionSergey Polazhenko
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Tatyanazaxarova
 
Введение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовВведение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовDI GR
 
Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?beched
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QAFest
 
Интервью с Дмитрием Вьюковым – автором верификатора Relacy Race Detector (RRD)
Интервью с Дмитрием Вьюковым – автором верификатора Relacy Race Detector (RRD)Интервью с Дмитрием Вьюковым – автором верификатора Relacy Race Detector (RRD)
Интервью с Дмитрием Вьюковым – автором верификатора Relacy Race Detector (RRD)Tatyanazaxarova
 
Случайное тестирование
Случайное тестированиеСлучайное тестирование
Случайное тестированиеMarat Akhin
 
Интерпретация моделей машинного обучения
Интерпретация моделей машинного обученияИнтерпретация моделей машинного обучения
Интерпретация моделей машинного обученияДмитрий Колодезев
 
Тестировщики Vs Программисты
Тестировщики Vs ПрограммистыТестировщики Vs Программисты
Тестировщики Vs ПрограммистыAndrii Dzynia
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокTatyanazaxarova
 

What's hot (17)

Применение статического анализа кода в преподавании и в разработке свободного ПО
Применение статического анализа кода в преподавании и в разработке свободного ПОПрименение статического анализа кода в преподавании и в разработке свободного ПО
Применение статического анализа кода в преподавании и в разработке свободного ПО
 
Алексей Лянгузов
Алексей ЛянгузовАлексей Лянгузов
Алексей Лянгузов
 
Что за зверь такой, тестировщик,?
Что за зверь такой, тестировщик,?Что за зверь такой, тестировщик,?
Что за зверь такой, тестировщик,?
 
Security Tesint: Sql injection
Security Tesint: Sql injectionSecurity Tesint: Sql injection
Security Tesint: Sql injection
 
Что такое "Parallel Lint"?
Что такое "Parallel Lint"?Что такое "Parallel Lint"?
Что такое "Parallel Lint"?
 
Введение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовВведение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодов
 
Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?Что общего у CTF и тестов на проникновение?
Что общего у CTF и тестов на проникновение?
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
 
лекция4 qa
лекция4 qaлекция4 qa
лекция4 qa
 
QA Лекция2
QA Лекция2QA Лекция2
QA Лекция2
 
лекция3 QA
лекция3 QAлекция3 QA
лекция3 QA
 
Интервью с Дмитрием Вьюковым – автором верификатора Relacy Race Detector (RRD)
Интервью с Дмитрием Вьюковым – автором верификатора Relacy Race Detector (RRD)Интервью с Дмитрием Вьюковым – автором верификатора Relacy Race Detector (RRD)
Интервью с Дмитрием Вьюковым – автором верификатора Relacy Race Detector (RRD)
 
Случайное тестирование
Случайное тестированиеСлучайное тестирование
Случайное тестирование
 
Интерпретация моделей машинного обучения
Интерпретация моделей машинного обученияИнтерпретация моделей машинного обучения
Интерпретация моделей машинного обучения
 
Тестировщики Vs Программисты
Тестировщики Vs ПрограммистыТестировщики Vs Программисты
Тестировщики Vs Программисты
 
50 оттенков красного
50 оттенков красного50 оттенков красного
50 оттенков красного
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
 

Viewers also liked

Al g5-presentation on language transfer
Al g5-presentation on language transferAl g5-presentation on language transfer
Al g5-presentation on language transferPhun Bandith
 
The interference of the first language
The interference of the first languageThe interference of the first language
The interference of the first languageMariam Nabilah
 
Interference Between First and Second Languages pp pres
Interference Between First and Second Languages pp presInterference Between First and Second Languages pp pres
Interference Between First and Second Languages pp presMarcela Israelsky
 
Olympic Games Fast Facts
Olympic Games Fast FactsOlympic Games Fast Facts
Olympic Games Fast FactsLemonly
 
interlanguage
  interlanguage  interlanguage
interlanguageMaiMaiza
 
Olympics 2012_ The details
Olympics 2012_ The detailsOlympics 2012_ The details
Olympics 2012_ The detailsguimera
 

Viewers also liked (9)

Al g5-presentation on language transfer
Al g5-presentation on language transferAl g5-presentation on language transfer
Al g5-presentation on language transfer
 
The interference of the first language
The interference of the first languageThe interference of the first language
The interference of the first language
 
Language Interference
Language InterferenceLanguage Interference
Language Interference
 
Interference Between First and Second Languages pp pres
Interference Between First and Second Languages pp presInterference Between First and Second Languages pp pres
Interference Between First and Second Languages pp pres
 
Olympic Games Fast Facts
Olympic Games Fast FactsOlympic Games Fast Facts
Olympic Games Fast Facts
 
interlanguage
  interlanguage  interlanguage
interlanguage
 
Olympics 2012_ The details
Olympics 2012_ The detailsOlympics 2012_ The details
Olympics 2012_ The details
 
Inter language
Inter languageInter language
Inter language
 
Recipes
RecipesRecipes
Recipes
 

Similar to Обнаружение уязвимостей логики приложений методом статического анализа. Где правда, где реклама?

технология и отладка по (47)
технология и отладка по (47)технология и отладка по (47)
технология и отладка по (47)romachka_pole
 
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...OWASP Russia
 
Метрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцахМетрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцахSQALab
 
Оценка эффективности работы аналитика
Оценка эффективности работы аналитикаОценка эффективности работы аналитика
Оценка эффективности работы аналитикаSQALab
 
Инструментальный анализ ИБ - РусКрипто'13
Инструментальный анализ ИБ - РусКрипто'13Инструментальный анализ ИБ - РусКрипто'13
Инструментальный анализ ИБ - РусКрипто'13Alexey Kachalin
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Alexey Neznanov
 
Курсы по веб-аналитике Академии Ашманова - Debugging в GA, Worst practice, тест
Курсы по веб-аналитике Академии Ашманова - Debugging в GA, Worst practice, тестКурсы по веб-аналитике Академии Ашманова - Debugging в GA, Worst practice, тест
Курсы по веб-аналитике Академии Ашманова - Debugging в GA, Worst practice, тестKirill Bushev
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаSkillsWiki
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаgeekfamilyrussia
 
Эффективное взаимодействие тестировщика и аналитика
Эффективное взаимодействие тестировщика и аналитикаЭффективное взаимодействие тестировщика и аналитика
Эффективное взаимодействие тестировщика и аналитикаSQALab
 
Call of Postgres: Advanced Operations (part 4)
Call of Postgres: Advanced Operations (part 4)Call of Postgres: Advanced Operations (part 4)
Call of Postgres: Advanced Operations (part 4)Alexey Lesovsky
 
Н. Желнова "Оценка эффективности работы аналитика", DUMP-2014
Н. Желнова "Оценка эффективности работы аналитика", DUMP-2014Н. Желнова "Оценка эффективности работы аналитика", DUMP-2014
Н. Желнова "Оценка эффективности работы аналитика", DUMP-2014it-people
 
5 alina petrenko - key requirements elicitation during the first contact wi...
5   alina petrenko - key requirements elicitation during the first contact wi...5   alina petrenko - key requirements elicitation during the first contact wi...
5 alina petrenko - key requirements elicitation during the first contact wi...Ievgenii Katsan
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1sgdread
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)Iosif Itkin
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кодаTatyanazaxarova
 

Similar to Обнаружение уязвимостей логики приложений методом статического анализа. Где правда, где реклама? (20)

технология и отладка по (47)
технология и отладка по (47)технология и отладка по (47)
технология и отладка по (47)
 
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
[1.4] «Ой, не шмогла». Обзор ограничений современных технологий в области ...
 
Метрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцахМетрики автоматизированного тестирования на пальцах
Метрики автоматизированного тестирования на пальцах
 
Analyst Days 2014
Analyst Days 2014Analyst Days 2014
Analyst Days 2014
 
Оценка эффективности работы аналитика
Оценка эффективности работы аналитикаОценка эффективности работы аналитика
Оценка эффективности работы аналитика
 
Инструментальный анализ ИБ - РусКрипто'13
Инструментальный анализ ИБ - РусКрипто'13Инструментальный анализ ИБ - РусКрипто'13
Инструментальный анализ ИБ - РусКрипто'13
 
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
Неотрефлексированный сдвиг парадигмы: от поколений языков программирования вы...
 
Team workflow
Team workflowTeam workflow
Team workflow
 
Курсы по веб-аналитике Академии Ашманова - Debugging в GA, Worst practice, тест
Курсы по веб-аналитике Академии Ашманова - Debugging в GA, Worst practice, тестКурсы по веб-аналитике Академии Ашманова - Debugging в GA, Worst practice, тест
Курсы по веб-аналитике Академии Ашманова - Debugging в GA, Worst practice, тест
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчика
 
Рейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчикаРейтинг навыков .NET-разработчика
Рейтинг навыков .NET-разработчика
 
Эффективное взаимодействие тестировщика и аналитика
Эффективное взаимодействие тестировщика и аналитикаЭффективное взаимодействие тестировщика и аналитика
Эффективное взаимодействие тестировщика и аналитика
 
Call of Postgres: Advanced Operations (part 4)
Call of Postgres: Advanced Operations (part 4)Call of Postgres: Advanced Operations (part 4)
Call of Postgres: Advanced Operations (part 4)
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
Н. Желнова "Оценка эффективности работы аналитика", DUMP-2014
Н. Желнова "Оценка эффективности работы аналитика", DUMP-2014Н. Желнова "Оценка эффективности работы аналитика", DUMP-2014
Н. Желнова "Оценка эффективности работы аналитика", DUMP-2014
 
SqaВфны8
SqaВфны8SqaВфны8
SqaВфны8
 
5 alina petrenko - key requirements elicitation during the first contact wi...
5   alina petrenko - key requirements elicitation during the first contact wi...5   alina petrenko - key requirements elicitation during the first contact wi...
5 alina petrenko - key requirements elicitation during the first contact wi...
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
 

More from Andrew Petukhov

Армия освобождения домохозяек: структура, состав вооружений, методы коммуникации
Армия освобождения домохозяек: структура, состав вооружений, методы коммуникацииАрмия освобождения домохозяек: структура, состав вооружений, методы коммуникации
Армия освобождения домохозяек: структура, состав вооружений, методы коммуникацииAndrew Petukhov
 
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...Andrew Petukhov
 
No locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructureNo locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructureAndrew Petukhov
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionAndrew Petukhov
 
Обеспечение безопасности расширений в корпоративных информационных системах
Обеспечение безопасности расширений в корпоративных информационных системахОбеспечение безопасности расширений в корпоративных информационных системах
Обеспечение безопасности расширений в корпоративных информационных системахAndrew Petukhov
 
Detecting Insufficient Access Control in Web Applications
Detecting Insufficient Access Control in Web ApplicationsDetecting Insufficient Access Control in Web Applications
Detecting Insufficient Access Control in Web ApplicationsAndrew Petukhov
 
Benchmark сканеров SQL injection
Benchmark сканеров SQL injectionBenchmark сканеров SQL injection
Benchmark сканеров SQL injectionAndrew Petukhov
 
Обнаружение уязвимостей в механизме авторизации веб-приложении
Обнаружение уязвимостей в механизме авторизации веб-приложенииОбнаружение уязвимостей в механизме авторизации веб-приложении
Обнаружение уязвимостей в механизме авторизации веб-приложенииAndrew Petukhov
 
Access Control Rules Tester
Access Control Rules TesterAccess Control Rules Tester
Access Control Rules TesterAndrew Petukhov
 
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...Andrew Petukhov
 

More from Andrew Petukhov (10)

Армия освобождения домохозяек: структура, состав вооружений, методы коммуникации
Армия освобождения домохозяек: структура, состав вооружений, методы коммуникацииАрмия освобождения домохозяек: структура, состав вооружений, методы коммуникации
Армия освобождения домохозяек: структура, состав вооружений, методы коммуникации
 
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
 
No locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructureNo locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructure
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter edition
 
Обеспечение безопасности расширений в корпоративных информационных системах
Обеспечение безопасности расширений в корпоративных информационных системахОбеспечение безопасности расширений в корпоративных информационных системах
Обеспечение безопасности расширений в корпоративных информационных системах
 
Detecting Insufficient Access Control in Web Applications
Detecting Insufficient Access Control in Web ApplicationsDetecting Insufficient Access Control in Web Applications
Detecting Insufficient Access Control in Web Applications
 
Benchmark сканеров SQL injection
Benchmark сканеров SQL injectionBenchmark сканеров SQL injection
Benchmark сканеров SQL injection
 
Обнаружение уязвимостей в механизме авторизации веб-приложении
Обнаружение уязвимостей в механизме авторизации веб-приложенииОбнаружение уязвимостей в механизме авторизации веб-приложении
Обнаружение уязвимостей в механизме авторизации веб-приложении
 
Access Control Rules Tester
Access Control Rules TesterAccess Control Rules Tester
Access Control Rules Tester
 
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
 

Обнаружение уязвимостей логики приложений методом статического анализа. Где правда, где реклама?

  • 1. Обнаружение уязвимостей логики приложений методом статического анализа Где правда, где реклама? Петухов Андрей РусКрипто 2013 Thursday, March 28,
  • 2. Too Long, Didn’t Read Thursday, March 28,
  • 4. Welcome to the Real World, Neo • Глобальные задачи в мире ПО и стат. анализ ➡ безопасная разработка ПО ➡ проверка соответствия ПО заданным требованиям • Задачи могут решаться владельцем ПО либо внешним подрядчиком (in-house vs outsource) • Итого три варианта ➡ разработка у себя, проверка вне/разработка вне, проверка у себя/разработка вне, проверка вне • Методически, применение стат. анализа в SDLC - решенная заздача • Проверка у себя vs проверка спец. конторой - разница в толерантности к ложным срабатываниям Thursday, March 28,
  • 5. Стат. анализ и типичные недостатки • Обычно связаны с некорректной обратботкой входных данных (англ. Input validation) ➡ возможность внедрения операторов SQL, возможность переполнения буфера и т.п. • Есть модели для описания таких недостатков ➡ Non-interference, которая позже получила реализацию в виде т.н. подхода taint-analysis ➡ общий шаблон недостатка: использование данных, контролируемых пользователем, в критичных вызовах без предварительной проверки на корректность • Понятно как искать, все умеют, борьба идет за снижение кол-ва ложных срабатываний и повышение полноты (нестандартные фреймворки) Thursday, March 28,
  • 6. Стат. анализ и специфичные недостатки • Для описания недостатка надо использовать термины из предметной области ➡ возможность манипуляции курсами обмена валют для получения выгоды ➡ возможность просмотра чужой истории платежей в системе ДБО • Классы недостатков (по-английски) ➡ insufficient access control, insufficient process validation, insufficient anti-automation • Для того, чтобы что-то искать, надо сформулировать, что искать; как сделать детектирование app specific недостатков “коробочно” (методически, технически)? • Еще можно еще вспомнить задачу проверки корректности протоколов и их свойств, но это out of scope Thursday, March 28,
  • 8. Доступные исходные данные • Исходный код (текст) • Лексемы • Дерево синтаксического разбора (AST) • Граф потоков управления (CFG) • Графы зависимостей (DFG/PDG/SDG) • Множества состояний программы (см. абстрактная интерпретация) • Множества возможных значений переменных в точках программы ➡ возможные типы переменных, возможные значения строк (string analysis) Thursday, March 28,
  • 9. Задача • Дано ПО в любом из перечисленных представлений • Спецификации ПО нет • Формальных требований к ПО нет • Требуется найти app specific недостатки • Речь идет только об уязвимостях реализации, а не конфигурации или эксплуатации Thursday, March 28,
  • 10. Что можно сделать с представлением? • Можно поискать наличие в представлении фрагмента, соответствующего заданному шаблону ➡ “сигнатурный” метод ➡ варианты: grep, регулярные выражения над потоком лексем, регулярные выражения над AST, поиск подграфа в графах зависимостей (taint-анализ - тоже сигнатурный!!) ➡ так делают все известные мне статические анализаторы ➡ откуда взять сигнатуру специфичного недостатка? получается, о его наличии надо знать заранее, чтобы написать такую сигнатуру? как насчет переносимости на другие приложения? Thursday, March 28,
  • 11. Что можно сделать с представлением? • Построить гипотезу спецификаций, неявно предполагаемых разработчиками, и проверить соответствие ПО им ➡ англ. extraction of intended behavior или specification inference ➡ реально научная задача, если вы понимаете, о чем я :) ➡ “Toward automated detection of logic vulnerabilities in web applications” ➡ “Static detection of logic flaws in service-oriented applications” ➡ “Static detection of access control vulnerabilities in web applications” ➡ так не делает ни один из известных мне статических анализаторов Thursday, March 28,
  • 13. Как делаем мы? • Ручной поиск экземпляров, формирование сигнатур, сигнатурный анализ для обеспечения полноты • Используем grep, Appercut и свои собственные инструменты • См. задачу проверки соответствия ПО требованиям, которую решает внешний подрядчик (4-ый слайд) Thursday, March 28,
  • 14. In-house checks? • Как искать app specific недостатки in-house, учитывая требования к низкому числу ложных срабатываний и отсутствия своей экспертизы для написания сигнатур? • Увы. Thursday, March 28,
  • 15. Вопросы • Контакты ➡ Twitter: @p3tand ➡ Mob: +7 916 360-52-49 ➡ Email: andrew.petukhov@solidlab.ru ➡ Blog: http://andrepetukhov.wordpress.com/ Thursday, March 28,