Компании российского корпоративного сектора и государственные организации разрабатывают с нуля или дорабатывают с учётом специфических требований прикладное и системное программное обеспечение — биллинг, информационные банковские системы, CRM, ERP, ЭДО, СУБД, САПР, АСУ и другие. С этим процессом связаны 4 главные опасности для защищаемой информации предприятия:
- Ошибки программирования, которые не только препятствуют нормальной работе приложений (зависания, BSOD, потеря данных), но и «приглашают» злоумышленника ими воспользоваться.
- Расширение функциональных возможностей приложений в ущерб безопасности. Разработчики используют наиболее простые (но не безопасные!) приёмы в погоне за сроками и удобством.
- Встраивание функций, которые делают возможным обход механизмов защиты. Разработчики ПО оставляют такие функции для облегчения тестирования и отладки приложений, но забывают их отключить в финальной версии.
- Программные закладки, которые умышленно встраиваются в исходный код приложений или в обновления ПО и используются для получения несанкционированного доступа к информации или других вредоносных действий. В исходный код закладки встраивает либо сам разработчик, либо атаковавший его злоумышленник.
Для чего нужен аудит программного обеспечения
Неважно, разрабатываете ли вы приложения сами или заказываете разработку на стороне, исследование программного обеспечения на разных этапах жизненного цикла преследует 3 цели:
- Снизить риски прямых финансовых потерь от атак на бизнес-приложения, которые содержат ошибки или закладки.
- Повысить защищённость корпоративных информационных систем благодаря контролю разработки и внедрения ПО в промышленную эксплуатацию.
- Сберечь репутацию компании. Чем меньше ошибок в исходном коде и при эксплуатации приложений — тем меньше риск сбоев, простоев и негативного опыта пользователей.
Задачи аудита ПО
Выявление уязвимостей разработанного кода
Исследователи «Перспективного мониторинга» применяют методы статического и динамического анализа для выявления уязвимостей скомпилированного и исходного кода. По результатам работ мы составляем перечень выявленных уязвимостей с описанием и классификацией, приводим сценарии успешных атак, которые может реализовать злоумышленник, и что сделать, чтобы устранить эти уязвимости.
Мониторинг уязвимостей сторонних компонентов ПО
Злоумышленники эксплуатируют для проведения атак общеизвестные уязвимости сторонних сервисов, служб и библиотек, которые используются при разработке ПО. Яркие примеры таких уязвимостей — Heartbleed и Shellshock. Чтобы предотвратить это, необходимо непрерывно собирать и обрабатывать актуальную информацию о выявленных уязвимостях. Мы информируем клиента в режиме онлайн и помогаем предотвращать компьютерные атаки данного типа.
Анализ защищённости системы обновлений
Чтобы выяснить возможности злоумышленника подменить обновления ПО, мы исследуем инфраструктуру, задействованную при доставке и установке обновлений, и технические меры по защите обновлений, реализованные в самом ПО. Результатом являются рекомендации по корректировке ПО и мерам защиты инфраструктуры, направленным на снижение риска подмены обновлений.
Анализ системы журналирования
Для мониторинга событий и проведения расследований инцидентов в информационной системе необходима регистрация полной информации в журналах и настройка систем мониторинга на определение критических для безопасности последовательностей событий. Если у заказчика не настроены средства мониторинга и журналирования, мы дадим рекомендации как правильно это сделать.
Внедрение практик безопасной разработки ПО (SDL)
Чтобы реализовать желаемые функциональные возможности приложений без ущерба безопасности и снизить издержки на устранение уязвимостей, проводится ряд проверок, связанных с безопасностью на всех этапах жизненного цикла: разработки требований, архитектуры, кода, тестировании, внедрении и эксплуатации. «Перспективный мониторинг» проведёт такие проверки в качестве внешнего эксперта или поможет внедрить практики безопасной разработки у заказчика.
Что в результате?
- Перечень слабостей и уязвимостей разработанного кода и архитектуры, ошибок встраивания программных средств защиты.
- Описание методов и сценариев проведения компьютерных атак с использованием выявленных уязвимостей с подтверждениями успешности их проведения и достигнутых результатов.
- Описание причин появления и методов устранения выявленных уязвимостей, включающее в себя внесение изменений в принятые организационные меры и ПО, установку необходимых обновлений, изменение настройки применяемых средств защиты или ввод в эксплуатацию дополнительных.
- Внедрённые средства автоматизации статической или динамической проверки разработанного кода и обновлений ПО на наличие уязвимостей.
- Работающая методология оценки актуальных угроз ПО.