220 likes | 484 Views
Аудит безопасности кода. Докладчик : Денис Гундорин Дата : 10 ноября 2011 г. г . Москва. СОДЕРЖАНИЕ. Кому необходимы безопасные приложения? Для чего нужна безопасность приложений? Подход разработчиков к безопасности. Как проверяется безопасность приложений?
E N D
Аудит безопасности кода • Докладчик: Денис Гундорин • Дата: 10 ноября 2011 г. • г. Москва
СОДЕРЖАНИЕ • Кому необходимы безопасные приложения? • Для чего нужна безопасность приложений? • Подход разработчиков к безопасности. • Как проверяется безопасность приложений? • Как безопасность необходимо проверять? • Наш подход • Почему стоит выбрать нас?
Организации и собственное ПО Заказ разработки приложений “с нуля” Автоматизация работы организации Доработка существующих на рынке решений до требований конечного заказчика В большинстве организации существует уникальное ПО, не встречающееся нигде больше Любая организация обладает собственной отличительной спецификой работы
Безопасность при разработке приложений • Безопасность не всегда входит в функциональные требования Функциональные требования Не функциональные требования “Система должна делать” “Система должна быть” • Менталитет разработчика – главное алгоритм выполнения, обработка исключений откладывается на последний момент • Сложность и трудоемкость тестов на безопасность – качественный тест безопасности сопоставим с самой разработкой • Повторное использование кода – неправильная адаптация, небезопасность исходного кода Безопасности не всегда уделяется должное внимание при разработке ПО
Тестирование на проникновение (pentest) Тестирование на проникновение (pentest) Рабочее окружение Приложение При тестировании приложение вместе с окружением рассматривается как черный ящик
Плюсы и минусы Pentest (“черный ящик”) • Инструментальное тестирование pentest: • Находит ошибки настройки стандартных приложений и окружений (неправильная конфигурация) • Производит аудит безопасности на уже известные существующие ошибки (не обновленное ПО) • Мало подходит для нестандартного ПО, каким и является разработанное/доработанное ПО • Тестирование “вручную”: • Может анализировать нестандартное ПО • Трудозатратно по времени • Производится без анализа исходного кода • Не может обеспечить глубокий и полный анализ работы приложения на наличие уязвимостей • Находит только небольшое количество существующих уязвимостей
Тестирование безопасности кода (“белый ящик”) При анализе кода возможно посмотреть приложение “изнутри”: Приложение Уязвимости возможно обнаружить путем прохождения сценариев К-во сценариев проверенных методом PenTest К-во контролируемых сценариев при анализе кода
Анализ исходного кода высокого уровня • Большой набор средств: собственных и сторонних • Высокое качество работы – т.к. сами знаем средства “изнутри” • Автоматизированные средства требуют тонкой настройки – работы производятся с учетом уникальных особенностей каждого заказчика Если есть исходный код языка высокого уровня
А если нет исходного кода? • Старые приложения, которые уже никто не поддерживает • Приложение разработанное для вас сторонними разработчиками Зачастую, исходного кода просто нет, например:
Анализ исполняемого кода Обфусцированная программа на ЯНУ • Интерактивный дизассемблер Ida Pro и декомпилятор Hex Rays • Интерактивный дизасемблер Ida Pro, собственный декомпилятор SmartDec • Низкоуровневые анализаторы и деобфускаторы, собственный декомпилятор SmartDec Деобфускация Необфусцированная программа на ЯНУ • Декомпиляция • автоматическая • полуавтоматическая • ручная
Используемые инструменты Декомпиляция Анализ кода .NET FxCop Gendarme StyleCop C Antic BLAST Clang Lint Splint C++ Clang Static Analyzer cppcheck cpplint Java FindBugs Hammurapi PMD Squale Python Pychecker Pyflakes Pylint Собственные разработки Собственные консолидаторы • Интерактивный дизассемблер Ida Pro и декомпиляторHex Rays • Интерактивный дизасемблерIda Pro, собственный декомпиляторSmartDec • Низкоуровневые анализаторы и деобфускаторы, собственный декомпиляторSmartDec Все инструменты собраны в единый комплекс, позволяющий решать поставленную задачу с высокими показателями качества и производительности
Наше решение Обфусцированная программа на ЯНУ Программа на языке высокого уровня Деобфускация • Аудит ИБ кода • автоматический • полуавтоматический • ручной Необфусцированная программа на ЯНУ • Декомпиляция • автоматическая • полуавтоматическая • ручная Консолидированный отчет
Мы предлагаем • Вам не нужно задумываться для какой платформы написано приложение • Поддерживается ли оно разработчиками • Существует ли исходный код • Обсфурцированно ли приложение Приложения Windows, Linux Приложения для мобильных устройств Веб-приложения С наличием исходного кода Только исполняемый код Аудит безопасности приложений
Результат аудита безопасности кода • Глубокий качественный анализ безопасности приложения, включая: • Оценку ИБ кода по совокупности критериев • Список всех выявленных уязвимостей с обоснованием рисков использования • Рекомендации по очередности устранения выявленных уязвимостей • Описанием критичности и трудоемкости устранения выявленных уязвимостей • Дополнительная информация по запросу Заказчика
Почему мы? • Тесты на проникновение • Инструментальные • Ручные • Социальная инженерия • Аудит безопасности кода приложений • Приложения с наличием исходного кода • Приложения без исходного кода • Выполненые проекты в отраслях: банки, гос. компании, телеком операторы, производственный сектор. • Softline – это надежность: • Крупная международная компания (65 городов 21 страны мира, 35 городов в России, филиалы в СНГ) • Более 13 лет успешного развития • Высокая компетентность подтвержденная независимыми исследованиями • Полный спект дополнительных услуг Softline предлагает единый вход для решения задач по аудиту безопасности:
Вопросы? Денис Гундорин Руководитель направления инфраструктурных решений информационной безопасности Т +7 (495) 232 00 23 доб. 1469 М +7 (926) 475 21 15 denis.gundorin@softline.ru
Дополнительные сервисы Восстановление алгоритмов из унаследованных приложений Анализ работы унаследованных систем Восстановление интерфейсов унаследованных систем Восстановление компилируемого кода для унаследованных приложений
Информационная безопасность и современный бизнес По данным Британского офиса по кибер преступлениям за 2010 год мировые корпорации понесли ущерб в размере $1 триллиона в результате наличия уязвимостей в программном обеспечении. Ущерб от атак на системы мировых гигантов по данным на 2000 год за одну минуту простоя оценивается в $180 000 для amazon.com, в $225 000 для аукциона ebay, в $90 000 для интернет-магазинов. Аудит информационной безопасности системы должен быть систематический и целостный: от бизнес-процессов, которые лежат в ее основе, до непосредственного анализа самого кода.
Виды уязвимостей • Ошибки работы с памятью могут стать причиной: • Аварийного завершения программы • Возможности передачи управления вредоносному коду • Ошибки проверки ввода могут стать причиной: • Вредоносного искажения данных • Race condition могут стать причиной: • Обхода ограничений прав доступа • Захват чужих прав доступа • другие уязвимости…
Пример уязвимости переполнения буфера Здесь может находится адрес перехода