Slide 1

Slide 1 text

Подводные камни Security Development Lifecycle Болдырев А.Г. Компания «Код Безопасности» Software Engineering Conference Russia 2018 October 12-13 Moscow

Slide 2

Slide 2 text

Цель доклада: • обзор практики внедрения статического анализа • знакомство с методологией SDL Я - исследователь безопасности ПО 1. Опыт работы в области ИБ более 10 лет 2. Аудит безопасности собственных продуктов 3. Исследование защищенности информационных систем 4. Email: [email protected]

Slide 3

Slide 3 text

Жизненный цикл разработки программного обеспечения

Slide 4

Slide 4 text

Результат Ожидания Реальность

Slide 5

Slide 5 text

Waterfall 1 Проектирование 2 Дизайн 3 Кодирование 4 Тестирование 5 Поддержка

Slide 6

Slide 6 text

Agile

Slide 7

Slide 7 text

SDL for waterfall Core Security Training Establish Security Requirements Create Quality Gates/Bug Bars Security & Privacy Risk Assessment Establish Design Requirements Analyze Attack Surface Treat Modeling Use Approved Tools Deprecate Unsafe Functions Static Analysis Dynamic Analysis Fuzz Testing Attack Surface Review Incident Response Plan Final Security Review Release Archive Execute Incident Response Plan Training Requirements Design Implementation Verification Release Response

Slide 8

Slide 8 text

SDL for agile Core Security Training Establish Security Requirements Create Quality Gates/Bug Bars Security & Privacy Risk Assessment Establish Design Requirements Analyze Attack Surface Treat Modeling Use Approved Tools Deprecate Unsafe Functions Static Analysis Dynamic Analysis Fuzz Testing Attack Surface Review Incident Response Plan Final Security Review Release Archive Execute Incident Response Plan Training Requirements Design Implementation Verification Release Response

Slide 9

Slide 9 text

SDL vs ГОСТ Процесс Фаза SDL ГОСТ Р 56939 Обучение сотрудников Training Меры при менеджменте людских ресурсов Определение требования безопасности Requirements Меры при анализе требований ПО Моделирование угроз Design Меры при проектировании архитектуры Доверенные средства разработки Implementation Меры при менеджменте инфраструктуры среды разработки Статический анализ исходных текстов ПО Implementation Меры при конструировании ПО Динамический анализ Verification Меры при выполнении квалификационного тестирования Тестирование на проникновение Verification Меры при выполнении квалификационного тестирования Фаззинг-тестирование Verification Меры при выполнении квалификационного тестирования Реагирование на инцидент Release, Response Меры при решении проблем ПО в процессе эксплуатации

Slide 10

Slide 10 text

Verification Dynamic Analysis Fuzz Testing Attack Surface Review Статический анализ в SDL Training Core Security Training Requirements Establish Security Requirements Create Quality Gates/Bug Bars Security & Privacy Risk Assessment Design Establish Design Requirements Analyze Attack Surface Treat Modeling Use Approved Tools Deprecate Unsafe Functions Static Analysis Implementation Release Incident Response Plan Final Security Review Release Archive Response Execute Incident Response Plan Статический анализ

Slide 11

Slide 11 text

Статический анализ исходных текстов ПО Этапы внедрения: • Составление перечня языков программирования • Выбор статического анализатора • Внедрение статического анализа • Анализ и обработка результатов

Slide 12

Slide 12 text

Статический анализ исходных текстов ПО 1: #include 2: void test_func(int unknown_value){ 3: int check_var; 4: if (unknown_value) 5: {сheck_var = 5;} 6: std::cout<<"hi"<

Slide 13

Slide 13 text

1: #include 2: void test_func(int unknown_value){ 3: int check_var; 4: if (unknown_value) 5: {сheck_var = 5;} 6: std::cout<<"hi"<

Slide 14

Slide 14 text

Граф потока выполнения 1: #include 2: void test_func(int unknown_value){ 3: int check_var; 4: if (unknown_value) 5: {сheck_var = 5;} 6: std::cout<<"hi"<

Slide 15

Slide 15 text

Внедрение статического анализа Сppcheck plugin Scan-build plugin

Slide 16

Slide 16 text

Проблемы внедрения статического анализа и пути решения Этап Проблема Решение Составление перечня языков программирования Нет Выбор статического анализатора Большой выбор, разные методы Использование нескольких технологий анализа, апробирование на тестовых примерах Внедрение статического анализа Знание условий сборки, ограничение реализации Тесное сотрудничество с командой разработки Анализ и обработка результатов Большое количество “ложных” срабатываний Тонкая настройка статического анализатора под конкретный проект, введение процесса автоматической отбраковки “ложных” срабатываний

Slide 17

Slide 17 text

Выводы • Выполнили обзор основных подходов к разработке ПО (waterfall и agile) • Рассмотрели фазы методологии SDL • Убедились, что ГОСТ Р 56939-2016 не противоречит SDL • Выделили проблемы и пути их решения при внедрении статического анализа, как части SDL

Slide 18

Slide 18 text

Спасибо за внимание!

Slide 19

Slide 19 text

No content