• /
  • /

Анализ исходного кода библиотек .NET на соответствие требованиям информационной безопасности

О клиенте

Компания-разработчик решений для защищённой передачи данных. Ключевые продукты используются в государственных и корпоративных информационных системах и требуют соответствия строгим требованиям информационной безопасности.

Проблема

Основой современных систем становится open source: Linux, Python, Nginx, ClickHouse, .NET и другие ключевые библиотеки и среды исполнения. Они используются как базовый слой для отечественных операционных систем и прикладного ПО, в том числе в рамках импортозамещения. При этом такие компоненты потенциально уязвимы, а устранение ошибок зависит от внешних разработчиков и сообщества.

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

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

  1. Масштаб. Даже open source-библиотеки — это огромные объемы кода. Только стек .NET — это гигабайты исходников. Проверка такого объема — это не разовая задача, а постоянный процесс.
  2. Отсутствие единого подхода. Формальные требования есть, но методики их выполнения в реальной разработке часто приходится выстраивать самостоятельно: какие инструменты использовать, как искать уязвимости, как подтверждать результаты.
  3. Зависимость от вендоров. Даже если уязвимость найдена, ее нельзя просто исправить — изменения нужно согласовать с авторами библиотеки или брать поддержку на себя.

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

Решение

Для решения этой задачи существует отдельный проект под координацией Института системного программирования РАН. В его рамках объединены научные организации и индустриальные разработчики, работающие с open source-компонентами, используемыми в защищённых системах.

Работа организована по направлениям в зависимости от технологических стеков. Мы участвуем в этом проекте и работаем в направлении анализа безопасности .NET/C# библиотек, которые входят в состав решений клиента.

Сначала мы анализируем исходный код — ищем потенциальные уязвимости и ошибки, которые могут привести к проблемам в работе или безопасности, выявляем возможную поверхность атаки. Затем используем динамическое тестирование (фаззинг). Это помогает увидеть, как код ведёт себя в реальных сценариях, и найти ошибки, которые не видны в статике. Также разбираем зависимости — потому что уязвимость может быть не в самой библиотеке, а глубже, в её компонентах.

Если мы находим проблему, дальше пытаемся её исправить вместе с авторами библиотеки. Если вендор не поддерживает версию или не принимает правки, команда фиксирует изменения на своей стороне и использует собственные сборки.

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

Что делали

Анализ уязвимостей и проверка кода
Статический анализ для выявления потенциальных уязвимостей в исходном коде и сторонних библиотеках, включая оценку поверхности атаки программного продукта. Дополнение динамическим тестированием для оценки поведения системы в реальных условиях. По результатам — выявление и устранение проблем.
Поддержка процессов сертификации
Подготовка и актуализация документации по безопасности продукта для прохождения сертификационных процедур. Взаимодействие с экспертами по сертификации для подтверждения соответствия требованиям, сопровождение обновлений продукта.
Подготовка сертифицированного дистрибутива и процессов сборки
Работа с сертифицированным дистрибутивом ASP.NET и прикладными библиотеками. Обеспечение соответствия сборок требованиям сертификации, автоматизация процессов сборки, тестирования и упаковки релизов.
Инструменты анализа и валидации
Разработка прикладных инструментов для анализа информации об уязвимостях и дефектах. Сопоставление результатов различных методов проверки для повышения точности и согласованности выводов.

Результат

Проверка библиотек стала встроенной частью разработки и подготовки к сертификации.

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

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