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