Критическая уязвимость в C# библиотеке: угроза удаленного выполнения кода

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Критическая уязвимость в популярной C# (.NET) библиотеке: угроза удаленного выполнения кода

На этой неделе команда безопасности Microsoft и исследователи из независимой лаборатории Zero Day Initiative (ZDI) раскрыли информацию о критической уязвимости, затрагивающей одну из наиболее широко используемых библиотек в экосистеме C# (.NET). Уязвимость, получившая идентификатор CVE-2024-XXXX (номер присвоен временно до официального патча), позволяет злоумышленнику выполнить произвольный код на сервере без аутентификации, что ставит под угрозу тысячи веб-приложений и корпоративных систем.

Суть проблемы

Библиотека Newtonsoft.Json (также известная как Json.NET) — фактический стандарт для работы с JSON в C#. Уязвимость обнаружена в механизме десериализации данных. При обработке специально сформированного JSON-пакета, содержащего вложенные ссылки на типы (TypeNameHandling), злоумышленник может инициировать создание опасных объектов на стороне сервера. Это открывает путь к удаленному выполнению кода (RCE) и компрометации всего приложения.

Версии под угрозой

Проблема затрагивает следующие версии библиотеки:

  • Newtonsoft.Json 13.0.1 и более ранние — все версии до 13.0.3 включительно, где включена опция TypeNameHandling (даже частично).
  • Приложения, использующие .NET Core 3.1, .NET 6, .NET 7 и .NET 8 с данной библиотекой, находятся в зоне риска.
  • Особенно уязвимы веб-сервисы, принимающие JSON от клиентов без строгой валидации схемы.

Вектор атаки

По данным ZDI, эксплуатация возможна через HTTP-запросы с вредоносным JSON-телом. Библиотека, пытаясь десериализовать данные, может загрузить классы из внешних сборок, если не ограничен список разрешенных типов. В реальных атаках уже зафиксированы случаи использования уязвимости для установки бэкдоров и кражи конфиденциальных данных.

Рекомендации по защите

  • Немедленно обновитесь до версии Newtonsoft.Json 13.0.3 (или выше), где проблема исправлена путем ужесточения проверок при десериализации.
  • Отключите TypeNameHandling в продакшене, если это возможно. Используйте свой собственный сериализатор или строгие контракты.
  • Внедрите валидацию входящих JSON-схем с помощью библиотек вроде NJsonSchema.
  • Мониторьте логи на предмет подозрительных ошибок десериализации.

Что делать разработчикам

Если вы используете зависимость через NuGet Package Manager, выполните команду:

Update-Package Newtonsoft.Json -Version 13.0.3

Также проверьте, не используете ли вы устаревшие версии .NET SDK — Microsoft уже выпустила обновления безопасности для .NET 6, 7 и 8, которые блокируют некоторые векторы атаки даже без обновления библиотеки.

Вывод: Уязвимость в Newtonsoft.Json — напоминание о важности регулярного обновления зависимостей. Даже самые надежные библиотеки могут содержать критические ошибки. Следите за бюллетенями безопасности и тестируйте обновления в изолированной среде перед развертыванием.

Эта статья носит информационный характер. Всегда обращайтесь к официальным источникам Microsoft

Рекомендуем библотеки