Вопрос или проблема
Я обновил 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
:
- System.Text.Json: версия 8.0.0 имеет уязвимость, о которой можно прочитать здесь.
- System.Text.RegularExpressions: версия 4.3.0 также имеет уязвимость, информация доступна здесь.
Причины возникновения проблемы
Согласно вашему описанию, .NET 9 включает более строгие проверки на наличие уязвимостей. Ваша проблема заключается в том, что пакет System.Data.Common
, который вы используете, зависит от устаревшей и уязвимой версии System.Text.RegularExpressions
. Существует вероятность, что сам .NET 9 требует более новых версий этих пакетов, но по какой-то причине до сих пор ссылается на уязвимые версии.
Решение
Чтобы устранить данную проблему, вам нужно предпринять следующие шаги:
-
Обновление зависимостей: Убедитесь, что все используемые вами пакеты и зависимости обновлены до последних стабильных версий. Используйте команду:
dotnet list package --outdated
Это позволит вам увидеть, какие пакеты нуждаются в обновлении.
-
Принудительное восстановление пакетов:
- Для того чтобы избавиться от устаревших зависимостей, попробуйте использовать команду:
dotnet restore --force
- Эта команда заставляет .NET заново установить все пакеты, возможно, это приведет к обновлению до более безопасных версий.
- Для того чтобы избавиться от устаревших зависимостей, попробуйте использовать команду:
-
Кастомизация зависимостей: Если обновление не решит проблему, можно принудительно установить более новые версии уязвимых пакетов в файле проектирования вашей библиотеки. Это можно сделать следующим образом:
<ItemGroup> <PackageReference Include="System.Text.Json" Version="9.0.0" /> <PackageReference Include="System.Text.RegularExpressions" Version="5.0.0" /> </ItemGroup>
Проверьте документирование по этим пакетам, чтобы убедиться, что они совместимы с другими библиотеками вашего проекта.
-
Мониторинг уязвимостей: Убедитесь, что у вас настроены уведомления об уязвимостях через GitHub или другие ресурсы. Это поможет вам быть в курсе актуальных вопросов безопасности.
-
Обратная связь от Microsoft: Направьте обратную связь разработчикам Microsoft о текущей ситуации с ними. Возможно, они уже знали о проблеме и работают над выпуском обновления, которое исправит эту зависимость.
Заключение
Обновление .NET до версии 9, безусловно, полезно для обеспечения безопасности и улучшения работы вашего приложения. Однако ситуации, когда библиотеки с известными уязвимостями продолжают использоваться, могут оказаться довольно сложными. Следуя описанным шагам, вы сможете решить проблему и сделать ваше приложение более безопасным. Не забывайте о важности регулярного обновления зависимостей и мониторинга уязвимостей в используемых вами пакетах.