27.04.2016
Все, что вы хотели узнать про «дыры» в коде, но не у кого было спросить
solarsecurity.ru +7 (499) 755-07-70
О чем пойдет речь
Что такое дыры
Как они появляются в коде
Какими инструментами их находить
Что делать с найденными дырами
2
solarsecurity.ru +7 (499) 755-07-70 3
Особенности разработки приложений с точки зрения ИБ
Дыры в софте:
Уязвимости
Недекларированные возможности (закладки)
solarsecurity.ru +7 (499) 755-07-70 4
Откуда берутся уязвимости
Культура разработки – разработчик не уделяет внимания: Языковым конструкциям, которые использует Коду, который используется как сторонний Безопасности связей между компонентами, которые
разрабатывает
Недостаток времени: Техническое задание разрабатывается быстро Программное обеспечение разработается быстро:
задержка в разработке – потеря денег
Можно удовлетворить только два из трех желаний: быстро, качественно и недорого
ОБЫЧНО – ЭТО БЫСТРО И НЕДОРОГО
solarsecurity.ru +7 (499) 755-07-70 5
Статистика за 2015 год
Более 75% успешных кибератак эксплуатируют «дыры» в ПО, т.к. на сегодняшний день это самое слабое звено технической защиты
Уязвимости для платформы Android – 15% из всех уязвимостей, публично опубликованных за 2015 год
SQLi – 8,4% из всех атак за прошедший 2015 год
solarsecurity.ru +7 (499) 755-07-70
Что делать при выявлении уязвимости
Идеальный вариант – устранить уязвимость, переписав код
Некоторые уязвимости веб-приложений можно закрыть наложенными средствами защиты
7
solarsecurity.ru +7 (499) 755-07-70
Bug bounty
Официальная возможность заработать на найденных дырах
В среднем – несколько сотен долларов за уязвимостьЧрезмерно активное исследование на дыры может
завалить исследуемую систему, к этому надо быть готовым
8
solarsecurity.ru +7 (499) 755-07-70
Что делать, если получили информацию об уязвимостях от внешних лиц
Поблагодарить человека за присланную информациюПроверить уязвимостьЕсли она подтвердилась – принять решение
об устранении, исходя из ее критичностиКритичные уязвимости устранять
как можно быстрееСтараться не отвечать
приславшему в стиле «да это вообще не уязвимость»
9
solarsecurity.ru +7 (499) 755-07-70 10
Сложности
Получить исходный код у разработчиков Убедиться, что код «собирается в проект» и не имеет
«неразрешенных зависимостей» Проверить код: корректно запустить скан Суметь понять, что написано в отчете Донести до разработчиков все найденные уязвимости и
объяснить их понятным языком
solarsecurity.ru +7 (499) 755-07-70
Методология безопасного программирования
SDL – Secure Development Lifecycle
Официально считается, что SDL был впервые внедрен в Microsoft в 2004 г.
SDL предполагает закладывание требований по ИБ еще на этапе ТЗ на систему.
Важным элементом является тестирование кода на безопасность с возможным наложением вето на передачу релиза в production
11
solarsecurity.ru +7 (499) 755-07-70
Кто, когда и сколько должен проверять софт
В идеале тестировать необходимо после внесения изменений в код
Если изменений не происходит, то рекомендуется делать проверки при обновлении базы уязвимостей
Тестировать должно независимое от разработки лицо, которое компетентно в вопросах ИБ
12
solarsecurity.ru +7 (499) 755-07-70 13
Как проверить софт?
solarsecurity.ru +7 (499) 755-07-70
Откуда брать информацию об уязвимостях. Некоторые источники
https://www.owasp.orghttps://cwe.mitre.org/https://capec.mitre.org/https://www.cvedetails.com/http://csrc.nist.gov/groups/ST/index.
html
14
solarsecurity.ru +7 (499) 755-07-70
Белый ящик. С исходниками или без
С исходниками нет сложностей с восстановлением кода
Без исходников можно брат приложение прямо из production, есть гарантия, что вы проверяете тот же самый код, а не зачищенную версию
Без исходников вы также анализируете дыры в скомпилированных кусках софта, взятого из других источников.
15
solarsecurity.ru +7 (499) 755-07-70
Проверка на НДВ («закладки»)
Самое глубокое тестирование на НДВ можно провести только силами эксперта. У него обязательно должна быть документация на систему
Автоматически можно искать НДВ в коде по шаблонным признакам:«Захардкоженный»
парольВременной триггер
16
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
solarsecurity.ru +7 (499) 755-07-70
Здесь могла бы быть ваша реклама
18
solarsecurity.ru +7 (499) 755-07-70
На что обратить внимание при выборе сканера
Поддержка тех языков программирования, которые Вам нужны
Понятный для Вас отчет: язык отчета, описание «дыр», рекомендаций итп
Возможность проверки приложений как по исходникам, так и без
Удобство работы: управление правилами поиска уязвимостей, кастомизация отчетов, интеграция с репозиториями, Bug Tracking Systems, IDE
Возможность генерации рекомендаций для наложенных СЗИ
Количество пропусков уязвимостейКоличество ложных срабатываний 19
solarsecurity.ru +7 (499) 755-07-70
Cloud vs OnSite
Облачный формат:как правило не требует
вложения в железо и софт
Но надо внутренне согласиться с передачей своего кода наружу
Как правило дешевле и выгоднее, если у Вас небольшие объемы анализируемого кода
20
solarsecurity.ru +7 (499) 755-07-70
Cloud vs OnSite
OnSiteТребует внедрения и
администрированияДает больше возможностей по
автоматизации SDLАнализируемый код не уходит
в облакоКак правило является
предпочтительным вариантом для клиентов с большим количеством разрабатываемого/анализируемого кода
21
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
solarsecurity.ru +7 (499) 755-07-70
Что должно быть в отчетах
Executive SummaryБенчмаркинг Статистика найденных уязвимостейДинамика изменения уязвимостейОписание найденных уязвимостей и возможных атакКритичность найденных уязвимостейРекомендации по корректировке кодаРекомендации по настройке
наложенных СЗИ (где применимо)Служебная информация
по анализируемому коду: структура проекта, объем кода итп.
23
solarsecurity.ru +7 (499) 755-07-70
ФСТЭК России про контроль кода
21 приказ:11. В случае определения в соответствии с Требованиями к защите персональных при их обработке в информационных системах персональных данных, утвержденными постановлением Правительства Российской Федерации от 1 ноября 2012 г. N1119, в качестве актуальных угроз безопасности персональных данных 1-го и 2-го типов дополнительно к мерам по обеспечению безопасности персональных данных, указанным в пункте 8 настоящего документа, могут применяться следующие меры:• проверка системного и (или) прикладного программного
обеспечения, включая программный код, на отсутствие недекларированных возможностей с использованием автоматизированных средств и (или) без использования таковых;
• тестирование информационной системы на проникновения;• использование в информационной системе системного и (или)
прикладного программного обеспечения, разработанного с использованием методов защищенного программирования. 24
solarsecurity.ru +7 (499) 755-07-70
Реестр отечественного ПО
25
solarsecurity.ru +7 (499) 755-07-70
Полезные ссылки
Анализаторы исходного кода – обзор рынка в России и в мире: https://www.anti-malware.ru/reviews/Code_analyzers_market_overview_Russia_and_world
Базы уязвимостей: https://www.owasp.org https://cwe.mitre.org/ https://capec.mitre.org/ https://www.cvedetails.com/ http://csrc.nist.gov/groups/ST/index.html
Microsoft SDL: https://www.microsoft.com/en-us/sdl/
http://bdu.fstec.ru/
26
Даниил ЧерновРуководитель направления
Application Securitywww.solarsecurity.ru