M> Вопрос первый можно ли ставить пакет у которого указаны уязвимости и как можно считать уязвимость устранена?
Ну nuget как-то проводит проверки и собирает информацию о наличии уязвимостей в тех или иных версиях пакетов. . Но строго говоря ты никогда не может быть уверен что уязвимостей нет. Можешь только значить что нет известных уязвимостей.
M> Вопрос второй как понять что использовать вместо устаревшей библиотеки?
Либо новую версию той же библиотеки, либо что-то совсем более другое аналогичное по теме. Тут уж сам решаешь.
В данном конкретном случае с Microsoft.AspNetCore все немного сложнее. Они сперва были отдельными пакетами, устанавливаемыми независимо от фреймворка, что позиционировалось как большой шаг вперед по сравнению с .net framework ASP.NET, где они были интегрированы. Но начиная с, кажется, 3.1, AspNet.Core опять включили в состав .NET, и использовать надо именно библиотеки из него.
M> Вопрос третий. Если нет незакрытых уязвимостей можно ли ставить устаревший пакет в проект (к примеру, чтобы не переписывать код завязанный на старый пакет)?
Конечно можно, почему нет?
И даже с имеющимися незакрытыми уязвимостями — тоже можно, если согласен с рисками их наличия.