Контакты
Подписка 2025

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме

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

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

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

Посетить
Кибербезопасность
Форум ITSEC 2025 (весна) для AppSec, Security Champions, DevOps-инженеров, тестировщиков, специалистов по ИБ
Участвуйте 3-4 июня →
Статьи по той же темеСтатьи по той же теме

  • Безопасность приложений на базе SAP и 1С начинается с проверки кода
    Екатерина Герлинг, ведущий инженер-аналитик Лаборатории стратегического развития продуктов кибербезопасности Аналитического центра кибербезопасности ООО “Газинформсервис”
    После ухода SAP с российского рынка система 1С стала чуть ли не единственной альтернативой, но разработка под эту платформу требует значительных ресурсов, а специалистов не хватает. При этом анализ и защита кода для таких систем — сложный процесс, требующий специализированных решений. На российском рынке есть решения, которые помогут обеспечить безопасность корпоративных приложений на 1С и SAP.
  • О безопасности заимствованных компонентов Open Source
    Алексей Хорошилов, руководитель Центра исследований безопасности системного программного обеспечения, ведущий научный сотрудник ФГБУН “ИСП РАН”
    Open Source стал неотъемлемой частью современного мира. Сегодня уже нет необходимости объяснять, что это такое, – с этим явлением все давно свыклись и приняли его как данность. Однако возникает другой вопрос: как эффективно и зрело работать с Open Source?
  • Автоматизация и экономика для обеспечения жизненного цикла безопасного ПО
    Борис Позин, технический директор ЗАО "ЕС-лизинг", д.т.н., профессор базовой кафедры “Информационно-аналитические системы” МИЭМ НИУ ВШЭ, главный научный сотрудник ИСП РАН
    Проблема обнаружения уязвимостей и недекларированных возможностей специалистами в жизненном цикле ПО автоматизированных систем становится все более актуальной в последние годы, особенно в связи с активизацией работ по импортозамещению, использованием свободного ПО, развитием масштабных проектов систем корпоративного уровня в различных отраслях народного хозяйства.
  • Как соответствовать требованиям ЦБ РФ при защите мобильных приложений
    Юрий Шабалин, Ведущий архитектор Swordfish Security
    Профиль защиты прикладного программного обеспечения – это методический документ Банка России, согласно которому приложения должны проходить оценку на соответствие госстандарту в специальных лабораториях.
  • 6 мифов о безопасной разработке и сертификации ПО
    Дмитрий Пономарев, технический директор ООО НТЦ “Фобос-НТ”, сотрудник ИСП РАН
    За последние пять лет система сертификации СЗИ претерпела колоссальные изменения, практически сменив свой вектор, и продолжает активно развиваться. Если вы проходили испытания до 2019 г., или даже до 2023 г., скорее всего вы будете сильно удивлены числу произошедших перемен и их объему.
  • Управление уязвимостями при разработке ОС Astra Linux
    Владимир Тележников, директор департамента научных исследований “Группы Астра”
    Управление уязвимостями играет ключевую роль в процессе разработки и эксплуатации любой операционной системы.

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

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

Печатное издание
Интернет-портал
ВЫСТУПИТЬ НА КОНФЕРЕНЦИЯХ
СТАТЬ АВТОРОМ
Linux
Защиту СУБД и данных обсудим на ITSEC 2025
Посетите 3-4 июня →

More...
ТБ Форум 2025
4 июня | Форум ITSEC 2025 Доверенные корпоративные репозитории
Жми, чтобы участвовать

More...