Уязвимость в System.Text.Json и System.Text.RegularExpressions после обновления до .NET 9

Вопрос или проблема

Я обновил sdk до .NET 9 и начал получать эти предупреждения (которые становятся ошибками из-за настройки):

Пакет ‘System.Text.Json’ 8.0.0 имеет известную уязвимость высокой степени серьезности, https://github.com/advisories/GHSA-hh2w-p6rv-4g7w

Пакет ‘System.Text.RegularExpressions’ 4.3.0 имеет известную уязвимость высокой степени серьезности, https://github.com/advisories/GHSA-cmhx-cq75-c4mj

Кажется, что сам .NET ссылается на эти пакеты, например (я получаю этот пакет в package.lock.json прямо под “net8.0”):

"System.Data.Common": {
        "type": "Transitive",
        "resolved": "4.3.0",
        "contentHash": "lm6E3T5u7BOuEH0u18JpbJHxBfOJPuCyl4Kg1RH10ktYLp5uEEE1xKrHW56/We4SnZpGAuCc9N0MJpSDhTHZGQ==",
        "dependencies": {
          "System.Collections": "4.3.0",
          "System.Globalization": "4.3.0",
          "System.IO": "4.3.0",
          "System.Resources.ResourceManager": "4.3.0",
          "System.Runtime": "4.3.0",
          "System.Runtime.Extensions": "4.3.0",
          "System.Text.RegularExpressions": "4.3.0",
          "System.Threading.Tasks": "4.3.0"
        }
      },

Я проверил, и более новых версий System.Data.Common нет, каков правильный способ решения этой проблемы?

Кажется довольно странным, что Microsoft выпустила .NET 9 с более строгой проверкой, и их собственная последняя библиотека System.Data.Common ссылается на устаревший и уязвимый пакет.

Ответ или решение

Уязвимости в System.Text.Json и System.Text.RegularExpressions после обновления до .NET 9

После обновления SDK до .NET 9 вы столкнулись с предупреждениями, которые были повышены до ошибки из-за настроек вашего проекта. Эти предупреждения касаются известных уязвимостей в пакетах System.Text.Json и System.Text.RegularExpressions:

  1. System.Text.Json: версия 8.0.0 имеет уязвимость, о которой можно прочитать здесь.
  2. System.Text.RegularExpressions: версия 4.3.0 также имеет уязвимость, информация доступна здесь.

Причины возникновения проблемы

Согласно вашему описанию, .NET 9 включает более строгие проверки на наличие уязвимостей. Ваша проблема заключается в том, что пакет System.Data.Common, который вы используете, зависит от устаревшей и уязвимой версии System.Text.RegularExpressions. Существует вероятность, что сам .NET 9 требует более новых версий этих пакетов, но по какой-то причине до сих пор ссылается на уязвимые версии.

Решение

Чтобы устранить данную проблему, вам нужно предпринять следующие шаги:

  1. Обновление зависимостей: Убедитесь, что все используемые вами пакеты и зависимости обновлены до последних стабильных версий. Используйте команду:

    dotnet list package --outdated

    Это позволит вам увидеть, какие пакеты нуждаются в обновлении.

  2. Принудительное восстановление пакетов:

    • Для того чтобы избавиться от устаревших зависимостей, попробуйте использовать команду:
      dotnet restore --force
    • Эта команда заставляет .NET заново установить все пакеты, возможно, это приведет к обновлению до более безопасных версий.
  3. Кастомизация зависимостей: Если обновление не решит проблему, можно принудительно установить более новые версии уязвимых пакетов в файле проектирования вашей библиотеки. Это можно сделать следующим образом:

    <ItemGroup>
     <PackageReference Include="System.Text.Json" Version="9.0.0" />
     <PackageReference Include="System.Text.RegularExpressions" Version="5.0.0" />
    </ItemGroup>

    Проверьте документирование по этим пакетам, чтобы убедиться, что они совместимы с другими библиотеками вашего проекта.

  4. Мониторинг уязвимостей: Убедитесь, что у вас настроены уведомления об уязвимостях через GitHub или другие ресурсы. Это поможет вам быть в курсе актуальных вопросов безопасности.

  5. Обратная связь от Microsoft: Направьте обратную связь разработчикам Microsoft о текущей ситуации с ними. Возможно, они уже знали о проблеме и работают над выпуском обновления, которое исправит эту зависимость.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...