
Примечание: Это перепост оригинального поста на StackOverflow. Меня направил сюда полезный пользователь, и я просто перепощу.
Я создал учетную запись StackOverflow в первый раз из-за этой раздражающей проблемы. Я устранял уязвимости на тестовом ПК VM на моей текущей работе, чтобы протестировать некоторые новые процедуры, и одна из уязвимостей была связана с предустановленным приложением "Paint3D" (Конкретно QID 91774для тех, кому интересно). Короче говоря, уязвимость была просто "устаревшей версией приложения". После обновления Paint3D до последней версии и подтверждения этого с помощью Powershell я заметил, что наше ПО для управления уязвимостями продолжало определять Paint3D как устаревшую версию. Уязвимость была обнаружена путем запроса объекта WMI "WIN32_InstalledStoreProgram", например так: фрагмент метода «Логика обнаружения угроз»Увидев, что эта уязвимость все еще проявляется даже после обновления до последней версии, я просто удалил Paint3D через меню «Настройки» > «Приложения».
Когда я запросил тот же объект WMI вручную с помощью команд Powershell "Get-WmiObject Win32_InstalledStoreProgram" и "Get-WmiObject Win32_InstalledStoreProgram | Format-List -Property Name, Version", я заметил, что для приложения, которое я удалил (Microsoft.MSPaint), было 2 записи. Одна была старой версией, с которой я обновился, другая была новой версией, до которой я обновился. Оба были удалены и подтверждены как удаленные. Я удалил отдельное приложение (Weather), чтобы проверить, может быть, объект WMI не обновляется автоматически, но после удаления и подтверждения с помощью приведенных выше команд Powershell приложение Weather было подтверждено как удаленное и удалено как запись в объекте WMI, в то время как две разные версии Microsoft.MSPaint остались. Я также удалил обычную версию "Paint" на случай, если проблема была в ней, но две записи остались.
Теперь о самом сложном. Microsoft Store выдает мне разные сообщения об ошибках каждый раз, когда я пытаюсь установить Paint3D. Я считаю, что это связано с тем, что MS Store также запрашивает один и тот же объект WMI и, видя, что у меня есть две «версии» «Paint3D», не может ничего установить. Я в тупике с этой маленькой проблемой. Исправление, которое я планирую реализовать, — это просто стереть эту виртуальную машину и продолжить процедуры устранения уязвимости, но я действительно хочу понять, почему это происходит и что может быть причиной этой проблемы. Я прочитал некоторую документацию о ручном редактировании и обновлении объектов WMI, однако я недостаточно знаю о WMI или объектах WMI, чтобы быть уверенным и эффективным. Это такая простая задача: обновить или удалить Paint3D. Я просто не представлял, что столкнусь с этим, и хотел бы хотя бы понять, что происходит.
Фрагмент объекта WMI, показывающий устаревшую версию MSPaint Фрагмент объекта WMI, показывающий текущую версию MSPaint, однако Paint3D полностью удален
Редактировать 1, 12:20 AM 9/1/2021: Просто продолжение, я попытался удалить своего пользователя AD из системы и получить чистый вход, но Paint3D все равно был удален, а Microsoft Store все еще не работал. Эта проблема характерна только для этого конкретного рабочего стола.
решение1
Моя проблема была с HEVCVideoExtension, но в остальном она похожа. Я попробовал сделать это таким образом из командной строки PowerShell администратора:
Получите полное имя пакета с помощью: Get-AppxPackage -AllUsers -Name "Microsoft.HEVCVideoExtension"
С полным именем пакета Microsoft.HEVCVideoExtension_1.0.41483.0_x64__8wekyb3d8bbwe
попробуйте это:
Remove-AppxPackage -AllUsers -Package "Microsoft.HEVCVideoExtension_1.0.41483.0_x64__8wekyb3d8bbwe"
В моем случае это не удалось, поскольку установка старой/устаревшей версии была выполнена под учетной записью пользователя, которая больше не установлена на машине.
Поэтому я выполнил полный сброс настроек Магазина Windows:
WSReset.exe
Затем я повторно выполнил Get-AppxPackage
команду, чтобы убедиться, что сброс сработал. Так и вышло.
В следующий раз, когда я запустил Магазин Windows, инициализация заняла целую вечность, но все заработало.
решение2
Удаление вредоносного ПО Windows может оказаться сложным, попробуйте удалить его с помощью PowerShell.
Запустите PowerShell от имени администратора, затем:
Получить-AppxPackage Microsoft.MSPaint | Удалить-AppxPackage
решение3
Вот решение, которое нам помогло.
Было несколько уязвимостей Sev 4 и 5, связанных с устаревшими приложениями Windows Store. Security Scan жаловался, что у нас старая версия приложений Windows Store. И он нашел ее, просканировав объект WMI. Но машина показывала обновленные приложения. Таким образом, было две версии приложений (старая и обновленная). Ничто не помогло решить эту проблему (удаление приложения, сброс Windows Store и т. д.).
Как возникла эта проблема — это уже другая история... Но вот решение. Как и было сказано в одном из комментариев, все сводилось к повреждению профилей пользователей.
Допустим, у вас есть:
- QID: 91698
- Название: Уязвимости библиотеки кодеков Microsoft Windows, делающие возможным удаленное выполнение кода
- Результаты сканирования: обнаружен уязвимый Microsoft Microsoft.WebpImageExtension версии «1.0.22753.0»
Шаги:
Подтвердите наличие двух пакетов PowerShell: Get-WmiObject -class Win32_InstalledStoreProgram | Where-Object name -like "*WebpImageExtension*"
Удалить старый пакет
PowerShell: Remove-AppxPackage -AllUsers -Package Microsoft.WebpImageExtension_1.0.22753.0_x64__8wekyb3d8bbwe.
Это "волшебный" шаг. Он приведет к ошибке 0x80070002, но создаст запись в реестре, которая нам позже понадобится "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\EndOfLife\S-1-12-XXXXXXX с Troubled packaged".
Удалить раздел реестра Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\EndOfLife\S-1-12-XXXXXXX с пакетом Troubled.
Убедитесь, что остался только один пакет PowerShell: выполните Get-WmiObject -class Win32_InstalledStoreProgram | Where-Object name -like "*WebpImageExtension*".