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

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

Константин Саматов, 14/06/20

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


Константин Саматов
Руководитель направления в Аналитическом центре Уральского центра систем безопасности,
член правления Ассоциации руководителей служб информационной безопасности,
преподаватель дисциплин информационной безопасности в УрГЭУ и УРТК им. А.С. Попова.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Отсутствие программ – анализаторов исходного кода для некоторых языков программирования. В таких случаях возможна лишь ручная проверка кода.
  2. Недостаток специалистов, владеющих конкретным языком программирования и одновременно имеющих представления о безопасности и безопасной разработке. На практике зачастую либо программисты не имеют особого понятия о механизмах защиты, либо специалисты по информационной безопасности плохо разбираются в программировании. Устранить такую проблему можно только обучением.
  3. Для динамических методов анализа необходимо уметь собирать приложения и разворачивать их на тестовом стенде. Это приведет либо к достаточно большим трудозатратам, если привлекать для анализа внешнего исполнителя, либо потребует выделения для тестового стенда постоянных вычислительных мощностей.
  4. При аутсорсинге (использовании услуг внешнего подрядчика) возникает еще одна проблема: программы для анализа исходного кода могут являться частью сред разработки, используемых разработчиками компании. В этом случае внешнему подрядчику потребуется организация полноценного рабочего места разработчика на территории заказчика (в т.ч. с использованием удаленного доступа), со всеми вытекающими последствиями: широкие привилегии по доступу к информационным ресурсам компании, необходимость защищенного канала связи, регламентация обязанностей и ответственности в соглашениях.

Резюме

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

Темы:Безопасная разработка

Хотите сотрудничать?

Выберите вариант!

Печатное издание
Интернет-портал
Стать автором
Комментарии

More...