Приложение - filearchive.cnews.r…

Download Report

Transcript Приложение - filearchive.cnews.r…

Services
Software
Cloud
Аудит безопасности кода
Докладчик: Денис Гундорин
Дата: 10 ноября 2011 г.
г. Москва
СОДЕРЖАНИЕ
 Кому необходимы безопасные приложения?
 Для чего нужна безопасность приложений?
 Подход разработчиков к безопасности.
 Как проверяется безопасность приложений?
 Как безопасность необходимо проверять?
 Наш подход
 Почему стоит выбрать нас?
Организации и собственное ПО
Любая организация обладает собственной
отличительной спецификой работы
Автоматизация
работы
организации
Заказ разработки приложений
“с нуля”
Доработка существующих на
рынке решений до требований
конечного заказчика
В большинстве организации существует уникальное ПО, не
встречающееся нигде больше
Безопасность при разработке приложений

Безопасность не всегда входит в функциональные требования
Функциональные
требования
“Система должна делать”
Не функциональные
требования
“Система должна быть”

Менталитет разработчика – главное алгоритм выполнения,
обработка исключений откладывается на последний момент

Сложность и трудоемкость тестов на безопасность –
качественный тест безопасности сопоставим с самой разработкой

Повторное использование кода – неправильная адаптация,
небезопасность исходного кода
Безопасности не всегда уделяется должное внимание при
разработке ПО
Тестирование на проникновение (pentest)
Тестирование на проникновение (pentest)
Рабочее окружение
Приложение
При тестировании приложение вместе с окружением
рассматривается как черный ящик
Плюсы и минусы Pentest (“черный ящик”)

Инструментальное тестирование pentest:
 Находит ошибки настройки стандартных приложений
и окружений (неправильная конфигурация)
 Производит аудит безопасности на уже известные
существующие ошибки (не обновленное ПО)
 Мало подходит для нестандартного ПО, каким и
является разработанное/доработанное ПО

Тестирование “вручную”:




Может анализировать нестандартное ПО
Трудозатратно по времени
Производится без анализа исходного кода
Не может обеспечить глубокий и полный анализ
работы приложения на наличие уязвимостей
 Находит только небольшое количество
существующих уязвимостей
Тестирование безопасности кода (“белый ящик”)
При анализе кода возможно посмотреть приложение
“изнутри”:
Приложение
Уязвимости возможно обнаружить путем прохождения сценариев
К-во сценариев проверенных
методом PenTest
К-во контролируемых сценариев при
анализе кода
Анализ исходного кода высокого уровня

Если есть исходный код языка высокого уровня
Как делаем?
Автоматизированные
средства
•
•
•
Ручной анализ кода
Большой набор средств: собственных и
сторонних
Высокое качество работы – т.к. сами знаем
средства “изнутри”
Автоматизированные средства требуют тонкой
настройки – работы производятся с учетом
уникальных особенностей каждого заказчика
А если нет исходного кода?
Зачастую, исходного кода просто нет, например:
 Старые приложения, которые уже никто не
поддерживает
 Приложение разработанное для вас
сторонними разработчиками
Анализ исполняемого кода
Обфусцированная
программа на ЯНУ
Деобфускация

Интерактивный
дизассемблер Ida Pro и
декомпилятор Hex Rays

Интерактивный
дизасемблер Ida Pro,
собственный
декомпилятор SmartDec

Низкоуровневые
анализаторы и
деобфускаторы,
собственный
декомпилятор SmartDec
Необфусцированная
программа на ЯНУ
Декомпиляция
•автоматическая
•полуавтоматическая
•ручная
Используемые инструменты
Декомпиляция

Интерактивный
дизассемблер Ida Pro и
декомпилятор Hex Rays

Интерактивный
дизасемблер Ida Pro,
собственный
декомпилятор SmartDec

Низкоуровневые
анализаторы и
деобфускаторы,
собственный
декомпилятор SmartDec
Анализ кода



.NET

– FxCop
– Gendarme
– StyleCop
C
–
–
–
–
–
Antic
BLAST
Clang
Lint
Splint
C++

Java
–
–
–
–
FindBugs
Hammurapi
PMD
Squale
Python
– Pychecker
– Pyflakes
– Pylint

– Clang Static
Analyzer

– cppcheck
– cpplint
Собственные
разработки
Собственные
консолидатор
ы
Все инструменты собраны в единый комплекс, позволяющий
решать поставленную задачу с высокими показателями
качества и производительности
Наше решение
Обфусцированная
программа на ЯНУ
Деобфускация
Необфусцированная
программа на ЯНУ
Декомпиляция
•автоматическая
•полуавтоматическая
•ручная
Программа на языке высокого
уровня
Аудит ИБ кода
•автоматический
•полуавтоматический
•ручной
Консолидированный отчет
Мы предлагаем

Аудит безопасности приложений
• Вам не нужно задумываться для какой
платформы написано приложение
• Поддерживается ли оно разработчиками
• Существует ли исходный код
• Обсфурцированно ли приложение
Вебприложения
Приложения
Windows,
Linux
Приложения
для
мобильных
устройств
С наличием исходного кода
Только исполняемый код
Результат аудита безопасности кода

Глубокий качественный анализ безопасности
приложения, включая:
– Оценку ИБ кода по совокупности критериев
– Список всех выявленных уязвимостей с
обоснованием рисков использования
– Рекомендации по очередности устранения
выявленных уязвимостей
– Описанием критичности и трудоемкости
устранения выявленных уязвимостей
– Дополнительная информация по запросу
Заказчика
Почему мы?

Softline предлагает единый вход для решения задач
по аудиту безопасности:
 Тесты на проникновение
 Инструментальные
 Ручные
 Социальная инженерия
 Аудит безопасности кода приложений
 Приложения с наличием исходного кода
 Приложения без исходного кода
 Выполненые проекты в отраслях: банки, гос. компании,
телеком операторы, производственный сектор.

Softline – это надежность:




Крупная международная компания (65 городов 21 страны
мира, 35 городов в России, филиалы в СНГ)
Более 13 лет успешного развития
Высокая компетентность подтвержденная независимыми
исследованиями
Полный спект дополнительных услуг
Вопросы?
Денис Гундорин
Руководитель направления инфраструктурных
решений информационной безопасности
Т +7 (495) 232 00 23 доб. 1469
М +7 (926) 475 21 15
[email protected]
Дополнительные сервисы

Восстановление алгоритмов из
унаследованных приложений

Анализ работы унаследованных систем

Восстановление интерфейсов унаследованных
систем

Восстановление компилируемого кода для
унаследованных приложений
Информационная безопасность и
современный бизнес

По данным Британского офиса по кибер преступлениям
за 2010 год мировые корпорации понесли ущерб в
размере $1 триллиона в результате наличия
уязвимостей в программном обеспечении.

Ущерб от атак на системы мировых гигантов по данным
на 2000 год за одну минуту простоя оценивается в $180
000 для amazon.com, в $225 000 для аукциона ebay, в $90
000 для интернет-магазинов.

Аудит информационной безопасности системы должен
быть систематический и целостный: от бизнеспроцессов, которые лежат в ее основе, до
непосредственного анализа самого кода.
Виды уязвимостей

Ошибки работы с памятью могут стать причиной:
– Аварийного завершения программы
– Возможности передачи управления
вредоносному коду

Ошибки проверки ввода могут стать причиной:
– Вредоносного искажения данных

Race condition могут стать причиной:
– Обхода ограничений прав доступа

Захват чужих прав доступа

другие уязвимости…
Пример уязвимости переполнения буфера
variable
name
A
value
[null string]
hex
value
00
B
1979
00
00
00
variable
name
00
00
00
00
07
A
BB
B
value
'e'
'x'
'c'
'e'
's'
's'
'i'
'v'
25856
hex
65
78
63
65
73
73
69
76
65
Здесь может находится адрес
перехода
00