Безопасность Java-приложений в контексте требований ФСТЭК: вызовы, решения и сертификация

Безопасность Java-приложений и соответствие требованиям ФСТЭК

Java остаётся одной из ключевых технологий в разработке корпоративных и высоконагруженных систем. Однако постоянный рост кибератак, особенно в России, выдвигает на первый план вопросы безопасности приложений, включая защиту интерпретаторов и серверов приложений.

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

Популярность и безопасность Java

Java используется в 90% банковских приложений, более чем в 30 тыс. российских проектов и в 400 ГИС. Популярность Java объясняется возможностью написать код приложения один раз и запускать его на разных платформах, операционных системах и процессорах, что существенно экономит время разработчиков и сокращает сроки выпуска программных продуктов. Однако Java-приложения часто являются целью для злоумышленников из-за распространённости и открытости платформы и компонентов. По данным таких компаний, как Solar, Positive Technologies и “Лаборатории Касперского”, количество атак на корпоративные системы за последние три года выросло втрое. При этом фокус сместился на атаки на цепочки поставок ПО с открытым исходным кодом. Цепочки поставок ПО напрямую связаны с готовыми компонентами, из которых собрано приложение. Сегодня мы обратим внимание на интерпретаторы и серверы приложений, а также рассмотрим аспекты безопасности других компонентов приложений, таких как библиотеки и среды разработки.

Где кроются основные риски для Java-приложений?

По данным компании Axiom JDK, продукты которой сертифицированы по 4 уровню доверия ФСТЭК, для реализации безопасной среды исполнения Java-приложений требуются:

  • глубокое знание кодовой базы,
  • соответствие стандартам ГОСТ Р 56939-2024,
  • использование сертифицированных средств сборки,
  • применение принципов безопасной разработки (РБПО).

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

  • Интерпретаторы: байткод исполняется интерпретатором, что требует контроля за чистотой кода и корректным выполнением. Мало, кто обращает на это внимание, но для приложений на Java это особенно актуально.

  • Серверы приложений, такие как (Libercat, Tomcat, WildFly): отвечают на большое количество запросов от пользователей, обеспечивают безопасность и интеграцию с БД. Ошибки в конфигурации или устаревшие версии этих компонентов зачастую становятся точками входа для злоумышленников.

  • Библиотеки: область цепочек поставок, от которых зависят Java-приложения. Обычно в разработке Java-приложений используются сторонние библиотеки, которые располагаются в репозиториях, в том числе за пределами РФ (например, самый популярный источник — Maven Central). Использование подобных источников не соответствует современным требованиям, связанными с повышением уровня безопасности информационных систем, особенно для ЗОКИИ (Значимые Объекты Критической Информационной Инфраструктуры). Аналитики сходятся во мнении, что использование сторонних источников повышает риск эксплуатации уязвимостей, или “закладок”. Из-за отсутствия гарантий соответствия исходного кода исполняемому файлу библиотека скачивается “как есть”. Случаи эксплуатации уязвимостей находят подтверждение в реальных кейсах.

Отечественные решения: Axiom JDК и Libercat

Сервер Java-приложений Libercat и среда исполнения Axiom JDK работают в связке. Вместе они обеспечивают не только соответствие требованиям безопасности, но и удобство эксплуатации в современных DevOps-сценариях. Например, поддержка легковесных образов на базе Axiom Linux и Axiom JDK упрощает CI/CD и уменьшает нагрузку на инфраструктуру. Размеры таких образов начинаются от 73 МБ, что в 6 раз меньше традиционных, и позволяют экономить ресурсы инфраструктуры и обеспечивать безопасность приложений.

Axiom JDK Certified — это российский продукт, отвечающий нормативам безопасности законодательства РФ по 4 УД, а также требованиям, предъявляемым к современным информационным системам (ИС). Среди особенностей Axiom JDK Certified — поддержка отечественных ОС, таких как Астра Линукс, Альт, РЕД ОС и процессоров Байкал и Эльбрус. Возможные варианты поставки включают в себя возможность работы на 20 различных системных конфигурациях. Axiom JDK Certified реализует 8 функций безопасности.

Одним из элементов безопасности является обеспечение работы приложения в замкнутой программной среде (ЗПС). Axiom JDK реализует проверку цифровых подписей JAR- или WAR-файлов на уровне виртуальной машины JVM, что предотвращает запуск неподписанного кода в связке с алгоритмами ЗПС операционной системы.

Libercat Certified — это сервер приложений на базе Apache Tomcat. В отличие от стандартного Apache Tomcat, Libercat Certified усилен средствами защиты для корпоративного и государственного применения в соответствии с требованиям ФСТЭК. Продукт обладает следующими преимуществами:

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

Создание безопасных приложений согласно требованиям ФСТЭК и ГОСТ

Давайте разберемся, что необходимо для того, чтобы разработать такой продукт, как Java Development Kit. В первую очередь, необходимо хорошо знать кодовую базу и то, как устроена Java. Java — это и рантайм, и язык программирования. Важно понимать спецификацию и знать отличия версий друг от друга, а также создавать и поддерживать минорные и мажорные версии продукта. Помимо того, есть и разные варианты сборки JDK. Например, версии Axiom JDK Express, в которых мы делаем различные оптимизации, связанные с увеличением производительности. При всём при этом код JDK достаточно сильно эволюционирует от версии к версии: меняются средства очистки памяти, появляются новые оптимизации и дополнительные требования выпуска новых и уникальных для России версий, соответствующих требованиям безопасности ФСТЭК. На первый взгляд, разработка JDK может показаться несложной. Спецификацию можно изучить и всё понять, но это порядка 1500 страниц документа и более 4000 функциональных требований, которые нужно реализовать и проверить, написав для них соответствующие тесты. Тесты должны гарантировать, что в конечном продукте все требования к виртуальной машине (JVM) и языку программирования (Java Language) полностью выполнены и соответствуют спецификации.

Всё это в нашей компании интегрировано в единый процесс, который соответствует рекомендациям ГОСТ и включает в себя следующие основные этапы:

  1. Статический анализ кода: позволяет выявить недостатки в коде. Используются инструменты ИСП РАН (Svace). Практика компании Axiom JDK показала, что при анализе 16 млн. строк исходного кода выявляется несколько сотен тысяч срабатываний, которые необходимо анализировать. Качество исходного кода и сами продукты становятся от этого лучше и безопаснее.
  2. Динамический анализ кода: позволяет провести проверки уже готового кода на уязвимости в процессе работы приложений посредством специальных средств фаззинга. Эти средства позволяют обеспечить защиту приложения от ввода последовательностей данных, которые могут привести к переполнению памяти.
  3. Композиционный анализ, формирование SBOM: формирование списка компонентов и их версий для отслеживания уязвимостей позволяет проанализировать каждую библиотеку или компонент приложения и сверить его с базой данных известных уязвимостей.
  4. Функциональное тестирование: позволяет гарантировать, что продукт полностью соответствует спецификации.
  5. Регрессионное тестирование: позволяет быть уверенным в том, что устранение уязвимости или ошибки в приложении не оказывает негативного эффекта на другую функциональность.
  6. Тестирование на совместимость: проверка работы на 20+ платформах и 200+ конфигурациях.
  7. Документирование: описания, отчёты, руководства — важная часть процесса.

Благодаря такому процессу достигается высокое качество и безопасность конечного программного продукта.

С какими вызовами сталкиваются разработчики

Сейчас широкое применение находят версии Java с долговременной технической поддержкой, мажорные версии (8, 11, 17 и 21). Объём кода каждой из этих версий составляет порядка 16 млн строк. То есть для того, чтобы произвести бинарный дистрибутив, нужно понимать, как всё функционирует. На это необходимо потратить несколько десятков человеко-лет разработки. Кодовая база JDK с 8 по 21 версии содержит около 16 млн строк кода. Если всё это умножить на количество платформ, которых более 20, то приходится одновременно контролировать несколько конвейеров сборки. Для этой операции очень важна промышленная автоматизация выпуска релизов.
Использование классического подхода, где можно собрать всё “вручную”, сопряжено с большим риском ошибок, что не позволит построить производство с высоким качеством продуктов.
Компания Axiom JDK применяет профессиональный подход с устойчивой и производительной инфраструктурой для выпуска продуктов и обновлений.

Кроме этого есть сборки 6 и 7 версий JDK под разные операционные системы и разные платформы, которые тоже необходимо поддерживать. И всё это нужно проверить и провести функциональное тестирование на соответствие спецификации.

Также необходимо поддерживать различные процессорные архитектуры ARM, RISC-V, x86, Байкал и Эльбрус. Всего мы тестируем более 200 конфигураций.

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

Для каждой версии продукта ежеквартально выпускаются исправления.

Доверенные репозитории и безопасность зависимостей

Более 70% уязвимостей в ПО связаны с заимствованными компонентами. Для решения этой задачи мы активно разрабатываем и наполняем наш доверенный репозиторий Java-библиотек Axiom Repo. Конвейер, проверки и публикации планируется вывести на скорость до 100 библиотек в день. Помимо того, что необходимо исследовать исходные коды, необходимо также иметь проверенные средства сборки Java-приложений.

ФСТЭК выпустил соответствующее письмо о повышении безопасности приложений с использованием методов композиционного анализа. На текущий момент это инструмент, больше похожий на инвентаризацию. В дальнейшем так или иначе возникнет задача — если какие-то библиотеки содержат уязвимости, то нужно где-то взять их исходный код и организовать процесс исправления, связавшись с производителем. Если это невозможно, то сделать свою версию библиотеки, собрать её и обеспечить доверие.

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

В прошлом году был утвержден ГОСТ Р по безопасной разработке ПО. В нём описано 25 процессов. 23 процесса уже выполняются в компании Axiom JDK. Наши процессы соответствуют описанным требованиям.

Такие подходы обеспечивают безопасность цепочки поставок и зависимостей.

Импортозамещение и поддержка отечественных технологий

OpenIDE — российская среда разработки, практически не зависящая от зарубежных сервисов. В этом продукте собрано всё необходимое для того, чтобы разработчикам было легко разрабатывать программное обеспечение на Java. Этот продукт создаётся группой компаний: Axiom JDK, Группа Астра и компания Haulmont. Сейчас уже доступен первый релиз OpenIDE. Концепция простая: мы взяли из комьюнити-версии Intellij IDEA всё лучшее и убрали всё лишнее. Чтобы больше завязать разработку на российскую инфраструктуру, мы минимизировали количество компонентов, которые обращаются к зарубежным ресурсам. Мы также взяли проекты плагинов и там, где лицензия позволяет, пересобрали их в своём маркетплейсе.

Сертификация КС3 и УД4

Основные продукты компании Axiom JDK (Axiom JDK и Libercat) имеют сертификаты ФСТЭК России УД4. Ведётся работа по оценке влияния в соответствии с требованиями КС3. Это требует усиления механизмов защиты и прохождения аудита ФСБ.

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

На фоне ужесточения требований регуляторов и стремительного развития цифровой экономики сертификация компонентов системного ПО — это не только вопрос соответствия нормам, но и стратегический инструмент обеспечения устойчивости ИТ-инфраструктуры организаций.

Рекомендации для разработчиков

Реализация новых требований оказывает влияние на весь рынок системного ПО. Она подталкивает разработчиков и интеграторов к переходу на отечественные решения, поддерживающие ЗПС и применение сертифицированных решений, соответствующих профилям защиты. Такие платформы, как Axiom JDK и Libercat, становятся основой технологического суверенитета.

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

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

  1. Фокус на внутреннюю экспертизу: сертификацию нельзя полностью переложить на внешних консультантов. Нужны свои специалисты по безопасности.

  2. Автоматизация процессов CI/CD: автоматизированные средства сборки и тестирования снижают риск человеческих ошибок.

  3. Использование доверенных компиляторов, проверенных библиотек и инфраструктурных продуктов с сертификатом ФСТЭК: позволяет минимизировать риски безопасности.

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

Проверьте свою версию JDK на известные уязвимости в нашем CVE-сканере.

Заключение

Обеспечение безопасности Java-решений — это сложный, но необходимый процесс. Он требует не только технической подготовки, но и глубокого понимания нормативной базы. Российские продукты, такие как Axiom JDK, Libercat и доверенный репозиторий Java-библиотек Axiom Repo в совокупности с другими продуктами компании Axiom JDK демонстрируют, что импортозамещение компонентов Java-приложений доступно всем участникам рынка. Успех зависит от сотрудничества регуляторов, разработчиков и бизнеса, а также от готовности инвестировать в безопасность на всех этапах жизненного цикла ПО.

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

Author image

Алексей Захаров

Директор по технологическому консалтингу Axiom JDK

Axiom JDK info@axiomjdk.ru Axiom JDK logo Axiom Committed to Freedom 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 Axiom JDK 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67