## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-VPORTAL-AFD
# AFD
CVE-2022-24494
Уязвимость представляет собой произвольное чтение памяти. Корневая причина — отсутствие проверки адреса памяти, поступающего из пользовательского режима, который используется в операции memcpy для копирования данных из этого адреса памяти в пул памяти. Отсутствие проверки находится по адресу Afd!AfdTliIoControl+0x40B

Как видно на скриншоте выше, адрес памяти из пользовательского режима копируется из InputBuffer+0x20 первый раз с правильной проверкой через MmUserProbeAddress, находится ли адрес памяти в пространстве адресов пользовательского режима. Однако второй раз этот же адрес памяти копируется из InputBuffer+0x20 в регистр RAX, но на этот раз без надлежащей проверки адреса памяти с помощью MmUSerProbeAddress. Из-за отсутствия проверки можно указать произвольный адрес ядра. Позже этот адрес копируется в выделение памяти пула (тег: AfdL) с помощью операции memcpy, как показано ниже в AfdTliIoControl+0x5AB:

PoC ниже показывает адрес ядра, переданный из пользовательского режима (0xffffffdeadbeef01)

Драйвер пытается прочитать по этому недопустимому адресу памяти, что приводит к BSOD:

Значение, скопированное в указатель dst в операции memcpy, позже передаётся драйверу tcpip.sys. Я не углублялся в то, какие внутренние объекты затрагиваются и можно ли утечь память из пользовательского режима, вызывая API, которые могут получить данные из этих потенциальных внутренних объектов.
Microsoft несколько месяцев спустя опубликовала исследование, в котором рассказывается о потенциальном влиянии подобных уязвимостей (произвольное чтение памяти) на повышение привилегий (EoP):
https://msrc-blog.microsoft.com/2022/03/22/exploring-a-new-class-of-kernel-exploit-primitive/