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