Найти тему
ByteNote

РБПО и влияние нового ГОСТа на правила игры

Согласно приказу ФСТЭК от 1 декабря 2023 №240 можно не только сертифицировать программное обеспечение (ПО) средств защиты информации (СЗИ), но и пройти сертификацию процессов безопасной разработке и получить сертификат соответствия (документ, подтверждающий требования безопасности информации), что конечно же, облегчит жизнь компании. В Российской Федерации темой разработки безопасного программного обеспечения занимаются с подачей регуляторов, а также на научной основе.

Актуальность создания безопасного программного обеспечения

Разработка безопасного программного обеспечения (РБПО) - ПО, разработанное с использованием совокупности мер, направленных на предотвращение появления и устранение уязвимостей программы. Требования к РБПО изложены в приказе ФСТЭК от 13 февраля 2013 №17, в том числе экспертиза исходного кода, статического и динамического анализа.

Помимо определения рассматриваемого процесса, стоит разобраться и с методологией безопасного жизненного цикла (ЖЦ).

Методология безопасного ЖЦ объекта оценки (ОО) - соблюдение совокупности принципов, правил, мер, требований, а также последовательность мероприятий ЖЦ для целей предотвращения появлений и устранения уязвимостей в ОО, поддержание доверия к ОО на всём протяжении ЖЦ ОО и обеспечения необходимого и достаточного уровня безопасности ОО.

Цель РБПО - обеспечение высокой конкурентоспособной скорости разработки и внедрения безопасных программных продуктов (более подробно - ГОСТ Р 56939 - 2016, пункт 7.4.1 Общие положения). Кажется теперь стало немного понятнее.

Говоря об РБПО, стоит задуматься, что является критериями и показателями безопасности ПО:

  1. Отсутствие уязвимостей;
  2. Отсутствие недостатков.

Что такое недостатки, а также достаточно ли отсутствия уязвимостей для того, чтобы считать ПО безопасным выясняют специалисты данной области.

Кому нужно РБПО?

  • собственные нужды;
  • заказчики;
  • пользователи;
  • финансовые сферы;
  • промышленные сектора;
  • сферы IT и телекомпании;
  • организации, имеющие или получающие лицензию на создание средств защиты информации (СЗИ).

Согласно приказу ФСТЭК России от 25 декабря 2017 №239, среди требований к программным и программно-аппаратным средствам, применяемым для обеспечения безопасности значимых объектов, можно обнаружить требования к испытаниям по выявлению уязвимостей ПО - сформулировано, что результаты оценки должны быть включены в проектную документацию на значимых объектах и предоставлены субъекту критической информационной инфраструктуры (КИИ).

ГОСТ 56939 также направлен на предотвращение и устранение уязвимостей программы.

ГОСТ Р 71207 - 2024

Наконец, в свежем и недавно вышедшем (01.04.2024) ГОСТе сформулировано понятие критической ошибки, что является большим плюсом для РБПО.

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

Интерпретируемые языки:

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

Компилируемые языки (добавляется к ошибкам, изложенных выше):

  • ошибки целочисленного переполнения и некорректного совместного использования знаковых и беззнаковых чисел;
  • ошибки переполнения буфера.

С и С++:

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

Практический пример ошибки управления динамической памятью:

void ...
{
...
} else {
delete ops;
legatos [ops -> track() ] = 0;
}

Стоит заметить, что всё условно и относительно, а потому некритическая ошибка на первый взгляд может быть критической. ГОСТ также подразумевает использование набора статических анализаторов, так как выбор одного варианта бывает сложен. Кроме того, в документе изложены требования к инструментам статического анализа. (Анализатор запускается != анализатор внедрён). Интересным фактом является и то, что сторонний код библиотек - теперь тоже ваш код и его также необходимо проверять.

По итогам стандарта ясно, что стоит руководствоваться фразой "Хорошо делай - хорошо будет", но всё таки вопрос разработчиков "Чем руководствоваться и в какую сторону развивать статический анализатор?" остаётся открытым.

Управление процессом безопасной разработки

Решения в данной области могут применяться на основе:

  • разной целевой аудитории;
  • разной детализации;
  • разного угла зрения.

Единой основой является объективные данные телеметрии.

Источниками данных могут являться системы управления задачами, исходным кодом, артефактами, инцидентами. Системы отслеживания дефектов, инструменты безопасности ПО, а также сервисы CI/CD.

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

Результатами будут являться:

  • Становление полноценной частью инженерного процесса разработки защищённого ПО;
  • Реализация прозрачного процесса, управляемого на основе метрик;
  • Уменьшение количества уязвимостей ПО и стоимости их устранения;
  • Наращивание внутренней экспертизы в части безопасной разработки.

Полезные статьи для более подробного ознакомления с темой:

Моё разочарование в софте
Безопасная разработка и уязвимости программного кода
ГОСТ Р 56939-2016 Защита информации. Разработка безопасного программного обеспечения. Общие требования - docs.cntd.ru