Архив метки: XML

Про уязвимость Remote Code Execution - TeamCity (CVE-2026-63077)

Про уязвимость Remote Code Execution - TeamCity (CVE-2026-63077)

Про уязвимость Remote Code Execution - TeamCity (CVE-2026-63077). TeamCity - проприетарное решение компании JetBrains, предназначенное для автоматизации сборки, тестирования и развёртывания программного обеспечения. TeamCity использует центральный сервер для координации сборок и отдельные агенты сборки (build agents) для их выполнения. Агент может взаимодействовать с сервером через протокол опроса агентов: он регистрируется, запрашивает у сервера следующую команду и сообщает, была ли эта команда выполнена успешно или завершилась ошибкой. Уязвимость позволяет неаутентифицированному удалённому злоумышленнику, имеющему доступ к on-premises инсталляции TeamCity Server по HTTP(S), выполнить произвольные команды операционной системы с привилегиями процесса TeamCity Server посредством протокола опроса агентов (agent polling protocol). Уязвимость вызвана небезопасной десериализацией XML-данных (CWE-502). В зависимости от привилегий, предоставленных процессу TeamCity Server, успешная эксплуатация уязвимости может привести к раскрытию данных TeamCity, конфигураций и сохранённых учётных данных, изменению состояния сервера, а также потенциальной компрометации целостности артефактов сборки и CI/CD-конвейеров.

⚙️ Сообщение об этой критической уязвимости было опубликовано в блоге компании JetBrains 27 июля. Уязвимость затрагивает все версии TeamCity On-Premises. Для устранения уязвимости необходимо обновиться до версии 2025.11.7 или 2026.1.3. В качестве компенсирующей меры можно установить плагин для TeamCity 2017.1 и более поздних версий, блокирующий эксплуатацию уязвимости. Для TeamCity 2017.1-2018.1 после установки плагина необходимо перезапустить сервер. Начиная с TeamCity 2018.2, плагин можно активировать без перезапуска сервера TeamCity. Также в качестве долгосрочной меры защиты серверов TeamCity вендор рекомендует ограничить сетевой доступ к странице входа в TeamCity и REST API доверенными сетями. Рекомендуется запускать сервер TeamCity от имени учётной записи операционной системы с минимально необходимым набором привилегий. Серверы TeamCity должны размещаться на выделенных хостах отдельно от агентов сборки, как описано в документации.

👾 Уязвимость была добавлена в CISA KEV 5 августа. Сообщение об эксплуатации уязвимости в реальных атаках было опубликовано в блоге компании JetBrains 7 августа. Вендор рекомендовал проверить журналы TeamCity на наличие сообщений com.thoughtworks.xstream.converters.ConversionException, которые могут указывать на успешную эксплуатацию уязвимости и необходимость проведения дополнительного расследования. После обновления сервера или установки блокирующего плагина можно проверять журналы на com.thoughtworks.xstream.security.ForbiddenClassException - это сообщение свидетельствует о блокировке попытки эксплуатации. Также на попытки эксплуатации могут указывать неавторизованные агенты сборки, особенно с именами, начинающимися на scan.

🛠 Технический разбор уязвимости и ссылка на публичный эксплойт были опубликованы 7 августа в блоге компании Rapid7. С 28 августа доступен Metasploit-модуль для упрощённой эксплуатации уязвимости.

🌐 По данным JetBrains, TeamCity используют более 30 000 организаций по всему миру из государственного, технологического, финансового, медицинского и других секторов, включая некоторые компании из Fortune 500. На 30 июля Censys детектировали около 4 500 инсталляций TeamCity, доступных из Интернет. Из них 450 использовали версии 2025.11.7 или 2026.1.3. Большинство остальных работали на более ранних версиях или не раскрывали информацию о версии.

Погонял, по случаю, ScanOVAL - бесплатный сканер уязвимостей от ФСТЭК

Погонял, по случаю, ScanOVAL - бесплатный сканер уязвимостей от ФСТЭК. На этот раз версию не под Linux, а под Windows (1.4.1). Делюсь впечатлениями.

1. Полезная штука, если качество детекта основного вашего СДУИ вызывает вопросы. Ставишь локально на тестовый хост ScanOVAL и качаешь OVAL-контент к нему, запускаешь, получаешь результаты, приводишь к листу CVE/БДУ идентификаторов, сравниваешься. Всё быстро, просто и бесплатно. Причем если зайти в VM-вендора с претензией "а вот решение X детектирует набор CVE совершенно отличный от того, что ваше решение детектирует для того же тестового хоста" можно получить отписку, что спрашивайте у вендора решения X, а у нас все правильно. В случае сканера от ФСТЭК так отмахнуться будет сложнее. 😏 Таким образом ScanOVAL можно рассматривать как эталонный сканер (не исключая, конечно, что проблемы могут быть и в нем).

2. Результаты работа сканера можно сохранить только в формате HTML. Довольно неожиданно. Но с другой стороны все парсабельно и жить можно. Основной идентификатор, по которому строится отчет, это БДУ. Но в отчете также приводятся ссылки на CVE, так что получить CVE-лист можно одним несложным grep-ом. Правда имейте в виду, что вам нужны именно строчки вида "CVE‑2023‑21716 (CVE)", если грепать просто регуляркой по CVE можно зацепить и описания вида "Уязвимость отлична от список CVE через запятую>".

3. В HTML отчете и GUI подтверждение почему уязвимость была продетектирована доступно в формате "путь до бинаря> (версия>)". В общем случае, конечно, дерево критериев OVAL в такую строчку не сворачивается. Но конкретно для OVAL-контента от АЛТЭКС-СОФТ возможно это и норм. Стандартные результаты в XML (OVAL Results) на самом деле тоже доступны. Лежат в C:\ProgramData\ScanOVAL, а именно в папке Temp. Там же есть и файл OVAL System Characteristics, и привычный OVAL HTML отчет, знакомый, например, по результатам OpenSCAP.

4. Нашел проблемку в руководстве по ScanOVAL. Декларируется, что программа может использоваться для "разработки и отладки описаний (определений) на языке OVAL". По факту сканер запускает только OVAL-контент подписанный ФСТЭКом. Если убрать из XML-контента тег с подписью и попытаться скормить контент ScanOVAL, то он его откажется запускать. Так что разрабатывать и отлаживать свой контент с помощью ScanOVAL не получится. Хотелось бы, чтобы либо описание поменяли, либо ограничение на запуск контента убрали (второе, безусловно, было бы гораздо предпочтительнее). 🙂