2. solarsecurity.ru +7 (499) 755-07-70
О чем пойдет речь
Что такое дыры
Как они появляются в коде
Какими инструментами их находить
Что делать с найденными дырами
2
3. solarsecurity.ru +7 (499) 755-07-70
Особенности разработки приложений
с точки зрения ИБ
Дыры в софте:
Уязвимости
Недекларированные
возможности (закладки)
3
4. solarsecurity.ru +7 (499) 755-07-70
Откуда берутся уязвимости
4
Культура разработки – разработчик не уделяет внимания:
Языковым конструкциям, которые использует
Коду, который используется как сторонний
Безопасности связей между компонентами, которые разрабатывает
Недостаток времени:
Техническое задание разрабатывается быстро
Программное обеспечение разработается быстро:
задержка в разработке – потеря денег
Можно удовлетворить только два из трех желаний: быстро,
качественно и недорого
ОБЫЧНО – ЭТО БЫСТРО И НЕДОРОГО
5. solarsecurity.ru +7 (499) 755-07-70
Статистика за 2015 год
5
Более 75% успешных кибератак эксплуатируют
«дыры» в ПО, т.к. на сегодняшний день это самое
слабое звено технической защиты
Уязвимости для платформы Android – 15% из всех
уязвимостей, публично опубликованных за 2015 год
SQLi – 8,4% из всех атак за прошедший 2015 год
7. solarsecurity.ru +7 (499) 755-07-70
Что делать при выявлении уязвимости
Идеальный вариант – устранить уязвимость, переписав код
Некоторые уязвимости веб-приложений можно закрыть
наложенными средствами защиты
7
8. solarsecurity.ru +7 (499) 755-07-70
Bug bounty
Официальная возможность заработать на найденных дырах
В среднем – несколько сотен долларов за уязвимость
Чрезмерно активное исследование на дыры может завалить
исследуемую систему, к этому надо быть готовым
8
9. solarsecurity.ru +7 (499) 755-07-70
Что делать, если получили информацию
об уязвимостях от внешних лиц
Поблагодарить человека за присланную информацию
Проверить уязвимость
Если она подтвердилась – принять решение
об устранении, исходя из ее критичности
Критичные уязвимости устранять
как можно быстрее
Стараться не отвечать
приславшему в стиле
«да это вообще не уязвимость»
9
10. solarsecurity.ru +7 (499) 755-07-70
Сложности
10
Получить исходный код у разработчиков
Убедиться, что код «собирается в проект» и не имеет
«неразрешенных зависимостей»
Проверить код: корректно запустить скан
Суметь понять, что написано в отчете
Донести до разработчиков все найденные уязвимости и
объяснить их понятным языком
11. solarsecurity.ru +7 (499) 755-07-70
Методология безопасного
программирования
SDL – Secure Development Lifecycle
Официально считается, что SDL был впервые внедрен в Microsoft в
2004 г.
SDL предполагает закладывание требований по ИБ еще на этапе ТЗ
на систему.
Важным элементом является тестирование кода на безопасность с
возможным наложением вето на передачу релиза в production
11
12. solarsecurity.ru +7 (499) 755-07-70
Кто, когда и сколько должен проверять
софт
В идеале тестировать
необходимо после внесения
изменений в код
Если изменений не происходит,
то рекомендуется делать
проверки при обновлении
базы уязвимостей
Тестировать должно
независимое от разработки
лицо, которое компетентно
в вопросах ИБ
12
14. solarsecurity.ru +7 (499) 755-07-70
Откуда брать информацию об
уязвимостях. Некоторые источники
https://www.owasp.org
https://cwe.mitre.org/
https://capec.mitre.org/
https://www.cvedetails.com/
http://csrc.nist.gov/groups/ST/index.html
14
15. solarsecurity.ru +7 (499) 755-07-70
Белый ящик. С исходниками или без
С исходниками нет сложностей с
восстановлением кода
Без исходников можно брат
приложение прямо из production, есть
гарантия, что вы проверяете тот же
самый код, а не зачищенную версию
Без исходников вы также
анализируете дыры в
скомпилированных кусках софта,
взятого из других источников.
15
16. solarsecurity.ru +7 (499) 755-07-70
Проверка на НДВ («закладки»)
Самое глубокое тестирование
на НДВ можно провести только
силами эксперта. У него
обязательно должна быть
документация на систему
Автоматически можно искать
НДВ в коде по шаблонным
признакам:
«Захардкоженный» пароль
Временной триггер
16
17. solarsecurity.ru +7 (499) 755-07-70
Продукты для статического анализа кода
17
IBM Security AppScan Source
APPERCUT
HP Fortify Static Code Analyzer
Checkmarx Static Code Analysis
PT Application Inspector
Solar inCode
19. solarsecurity.ru +7 (499) 755-07-70
На что обратить внимание при выборе
сканера
Поддержка тех языков программирования, которые Вам нужны
Понятный для Вас отчет: язык отчета, описание «дыр»,
рекомендаций итп
Возможность проверки приложений как по исходникам, так и без
Удобство работы: управление правилами поиска уязвимостей,
кастомизация отчетов, интеграция с репозиториями, Bug Tracking
Systems, IDE
Возможность генерации рекомендаций для наложенных СЗИ
Количество пропусков уязвимостей
Количество ложных срабатываний
19
20. solarsecurity.ru +7 (499) 755-07-70
Cloud vs OnSite
Облачный формат:
как правило не требует вложения
в железо и софт
Но надо внутренне согласиться
с передачей своего кода наружу
Как правило дешевле и выгоднее,
если у Вас небольшие объемы
анализируемого кода
20
21. solarsecurity.ru +7 (499) 755-07-70
Cloud vs OnSite
OnSite
Требует внедрения и
администрирования
Дает больше возможностей по
автоматизации SDL
Анализируемый код не уходит
в облако
Как правило является
предпочтительным вариантом для
клиентов с большим количеством
разрабатываемого/анализируемого
кода
21
22. solarsecurity.ru +7 (499) 755-07-70
Основные языки
22
ActionScript
Delphi
MXML (Flex)
ASP.NET
VB.NET,
C# (.NET)
C/C++
Classic ASP (with
VBScript)
COBOL
HTML
JavaScript
AJAX
JSP
Objective-C
PL/SQL
Python
T-SQL
Visual Basic
VBScript
XML
PHP
Scala
Java
Java for
Android
23. solarsecurity.ru +7 (499) 755-07-70
Что должно быть в отчетах
Executive Summary
Бенчмаркинг
Статистика найденных уязвимостей
Динамика изменения уязвимостей
Описание найденных уязвимостей и возможных атак
Критичность найденных уязвимостей
Рекомендации по корректировке кода
Рекомендации по настройке
наложенных СЗИ (где применимо)
Служебная информация
по анализируемому коду: структура проекта,
объем кода итп.
23
24. solarsecurity.ru +7 (499) 755-07-70
ФСТЭК России про контроль кода
21 приказ:
11. В случае определения в соответствии с Требованиями к защите
персональных при их обработке в информационных системах
персональных данных, утвержденными постановлением Правительства
Российской Федерации от 1 ноября 2012 г. N1119, в качестве актуальных
угроз безопасности персональных данных 1-го и 2-го типов дополнительно
к мерам по обеспечению безопасности персональных данных, указанным в
пункте 8 настоящего документа, могут применяться следующие меры:
• проверка системного и (или) прикладного программного обеспечения,
включая программный код, на отсутствие недекларированных
возможностей с использованием автоматизированных средств и (или)
без использования таковых;
• тестирование информационной системы на проникновения;
• использование в информационной системе системного и (или)
прикладного программного обеспечения, разработанного с
использованием методов защищенного программирования.
24
#6: Все это приводит к неутешителной статистике.
А что было раньше? Почему это стало актуально сейчас? Раньше было тоже самое. Только софт раньше был не последним рубежом защиты, а стал первым рубежом. В некоторых случаях вторым.
Дыры в средствах защиты периметра хорошо защищены. Теперь атаки чаще всего проходят через дыры в самом ПО, которое торчат наружу. Наша статистика это подвтерждает.
#8: Вообще, в реальной жизни, можно и принять риск. Если владелец системы говорит, ну и пусть взламывают, там все равно нет ничего ценного
#9: A bug bounty program is a deal offered by many websites and software developers by which individuals can receive recognition and compensation for reporting bugs, especially those pertaining to exploits and vulnerabilities. These programs allow the developers to discover and resolve bugs before the general public is aware of them, preventing incidents of widespread abuse. Bug bounty programs have been implemented by Facebook,[1] Yahoo!,[2] Google,[3] Reddit,[4] and Square.[5]
#10: Также смотрим на ответ, что делать, если нашли уязвимость.
Но есть отягчающее обстоятельство. Если вы ошибочно забьете на серьезную уязвимость, это может обидеть исследователя
#12: Кейс с проверкой кода, когда логины пароли уходили в логи для удобной отладки.
#13: В масштабах крупного разработчика имеет смысл внедрять сдл и максимально его автоматизировать.