Контакты
Подписка
МЕНЮ
Контакты
Подписка

Применение методов анализа исходного кода при оценке защищенности информационных систем

Применение методов анализа исходного кода при оценке защищенности информационных систем

В рубрику "Разработка" | К списку рубрик  |  К списку авторов  |  К списку публикаций

Применение методов анализа исходного кода при оценке защищенности информационных систем

Разработчики программных продуктов уделяют много внимания функциональности и скорости доставки приложений, как правило, в ущерб безопасности, что подтверждается различными исследованиями. При этом достаточно эксплуатации даже одной уязвимости (например, выполнение произвольного кода), чтобы привести к полному нарушению работоспособности информационной системы и ее компрометации. О том, как этого избежать, пойдет речь в данной статье.
Константин Саматов
Руководитель направления в Аналитическом центре Уральского центра систем безопасности,
член правления Ассоциации руководителей служб информационной безопасности,
преподаватель дисциплин информационной безопасности в УрГЭУ и УРТК им. А.С. Попова.
Для надежной и корректной работы механизмов обеспечения безопасности в программном обеспечении необходимо регулярно проводить анализ исходного кода.

Современный подход к организации бизнес-процессов построен на широком использовании программных продуктов, в том числе на базе веб-технологий: официальные сайты, форумы, корпоративные порталы, интернет-магазины и аукционы, порталы услуг, электронные торговые площадки – все это стандартные элементы информационной инфраструктуры любой современной компании. Нарушение их штатного функционирования вследствие реализации одной или нескольких угроз информационной безопасности может привести к существенным финансовым и репутационным издержкам. По данным исследования компании Positive Technologies за 2019 г., злоумышленники активно используют уязвимости веб-сайтов: 92% веб-приложений позволяют проводить атаки на пользователей, а 82% найденных уязвимостей связаны с ошибками при разработке кода. Бреши безопасности в 16% исследованных сайтах давали возможность контролировать не только само веб-приложение, но и сервер, на котором оно запущено1.

Для того чтобы этого избежать, необходимо в процессе проектирования, создания и эксплуатации программного обеспечения применять методы безопасной разработки и анализа безопасности исходного кода.

Что такое анализ безопасности исходного кода и где он применяется?

Анализ безопасности исходного кода – это анализ программного обеспечения на предмет выявления уязвимостей информационной безопасности, допущенных при его разработке.

92% веб-приложений позволяют проводить атаки на пользователей, при этом 82% найденных уязвимостей связаны с ошибками при разработке кода. Бреши безопасности в 16% исследованных сайтов давали возможность контролировать не только само веб-приложение, но и сервер.

Существует три группы методов анализа исходного кода:

  • динамические методы – методы анализа безопасности программного обеспечения, требующие выполнения программ на реальном или виртуальном процессоре, с доступом к исходному коду и к среде его функционирования;
  • статические методы – методы анализа безопасности программного обеспечения с доступом к его исходному коду, но не требующие выполнения (запуска) программ;
  • гибридные методы – методы, совмещающие два предыдущих подхода.

Статические методы анализа исходного кода могут быть использованы при создании и эксплуатации программного обеспечения, а динамические – на этапе ввода в эксплуатацию и в процессе эксплуатации.

Алгоритм анализа безопасности исходного кода

В общем виде, без учета особенностей конкретного проекта или процесса, алгоритм анализа безопасности исходного кода можно представить в виде следующей последовательности шагов – рис. 1.


На практике анализ исходного кода широко применяется совместно с другими методами анализа защищенности и нередко становится одной из стадий проекта анализа защищенности информационных систем.

Так, большинство проектов анализа защищенности, с которыми приходилось сталкиваться автору, включали в себя следующие стадии:

На практике анализ исходного кода широко применяется совместно с другими методами анализа защищенности и нередко становится одной из стадий проекта анализа защищенности информационных систем.

1. Анализ защищенности методами черного и серого ящика, т.е. динамический анализ безопасности программного обеспечения без доступа к исходному коду:

  • метод черного ящика направлен на поиск уязвимостей, использование которых позволяет злоумышленнику, не имеющему никаких привилегий, реализовать следующие виды угроз: получение несанкционированного доступа к информации, полного или частичного контроля над приложением и его использование для организации атак на рабочие места пользователей информационной системы;
  • метод серого ящика аналогичен предыдущему, с тем лишь исключением, что под злоумышленником подразумевается пользователь, обладающий определенным набором привилегий в информационной системе.

2. Анализ защищенности методом белого ящика – динамический и статический анализ безопасности исходного кода.

3. Разработка рекомендаций и итогового отчета.

4. Проверка корректности устранения выявленных уязвимостей.


В качестве конкретного примера подобного проекта можно привести анализ защищенности интернет-магазина, одного из наиболее распространенных на сегодняшний день видов информационных ресурсов – табл. 1.

Проблемы практики анализа исходного кода и их решение

Основными проблемами, встречающимися в практике анализа исходного кода, являются:

Перечень актуальных уязвимостей строится на основе рекомендаций производителей по безопасной конфигурации программного обеспечения, материалов свободных исследовательских групп по поиску уязвимостей, каталогов уязвимостей.

1. Отсутствие программ – анализаторов исходного кода для некоторых языков программирования. В таких случаях возможна лишь ручная проверка кода.

2. Недостаток специалистов, владеющих конкретным языком программирования и одновременно имеющих представления о безопасности и безопасной разработке. На практике зачастую либо программисты не имеют особого понятия о механизмах защиты, либо специалисты по информационной безопасности плохо разбираются в программировании. Устранить такую проблему можно только обучением.

3. Для динамических методов анализа необходимо уметь собирать приложения и разворачивать их на тестовом стенде. Это приведет либо к достаточно большим трудозатратам, если привлекать для анализа внешнего исполнителя, либо потребует выделения для тестового стенда постоянных вычислительных мощностей.

Для надежной и корректной работы механизмов обеспечения безопасности в программном обеспечении необходимо регулярно проводить анализ исходного кода.

4. При аутсорсинге (использовании услуг внешнего подрядчика) возникает еще одна проблема: программы для анализа исходного кода могут являться частью сред разработки, используемых разработчиками компании. В этом случае внешнему подрядчику потребуется организация полноценного рабочего места разработчика на территории заказчика (в т.ч. с использованием удаленного доступа), со всеми вытекающими последствиями: широкие привилегии по доступу к информационным ресурсам компании, необходимость защищенного канала связи, регламентация обязанностей и ответственности в соглашениях.

Резюме

Подведем итог: для надежной и корректной работы механизмов обеспечения безопасности в программном обеспечении необходимо регулярно проводить анализ исходного кода. При этом для большего эффекта в части выявления уязвимостей нужно использовать гибридные методы анализа безопасности, сочетание статических и динамических методов.

___________________________________________
1 https://www.ptsecurity.com/ru-ru/research/analytics/cybersecurity-2019-2020/

Опубликовано: Журнал "Information Security/ Информационная безопасность" #1, 2020

Приобрести этот номер или подписаться

Статьи про теме