
демонстрационный PoC для CVE-2022-21877 (утечка памяти в контроллере дисковых пространств)
Этот репозиторий содержит эксплойт для CVE-2022-21877, найденный Quang Linh, работающим в STAR Labs. Это утечка информации, обнаруженная в драйвере spaceport.sys.
Сопровождающая запись в блоге доступна по этому адресу.
Чтобы собрать эксплойт, просто выполните .\build.
Для его запуска вам нужен пул на вашей машине, который может получить уровень (Tier). В моих тестах это означает наличие как минимум двух пулов хранения: изначального (primordial) и ещё одного. Всё потому, что к изначальному пулу нельзя подключить уровень.
Чтобы получить необходимую конфигурацию, вы можете настроить 3 виртуальных диска на виртуальной машине. Они будут автоматически использоваться Microsoft как изначальный пул. Затем вы можете перезагрузиться и добавить ещё два виртуальных диска. После этого вы можете создать второй пул с помощью следующей команды от имени администратора:
New-StoragePool -FriendlyName Pool2 -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -CanPool $True)
После завершения настройки запустите эксплойт от имени администратора, указав ему "FriendlyName" используемого пула (например, того, который вы только что создали).
Этот эксплойт позволяет утекать неконтролируемые данные, расположенные за системным буфером. Как объяснено в записи блога, мне не удалось вызвать контролируемую утечку конкретного объекта ядра. Вот как это выглядит:
