Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cve-2023-20573-poc — Доказательство концепции, демонстрирующее CVE-2023-20573: аппаратная уязвимость в AMD SEV-SNP, которая позволяет подавление повторной инъекции исключений в KVM, что делает возможной эксплуатацию на уровне инструкций. | Kitploit
Инструменты/GitHubGitHub/freax13/cve-2023-20573-poc
Анализ уязвимостейЭксплуатацияФаззингАппаратная БезопасностьЭксплуатация Бинарных Файлов
GitHubfreax13/cve-2023-20573-poc

cve-2023-20573-poc

Доказательство концепции, демонстрирующее CVE-2023-20573: аппаратная уязвимость в AMD SEV-SNP, которая позволяет подавление повторной инъекции исключений в KVM, что делает возможной эксплуатацию на уровне инструкций.

Репозиторий
62 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Использование PoC

Этот репозиторий содержит VMM, который загружает гостевую ОС SEV-SNP с пользовательским ядром. VMM и ядро представляют собой урезанную версию моего проекта. Для работы на хосте требуется модифицированное ядро Linux: https://github.com/Freax13/linux/tree/for-amd.

Доказательство концепции можно запустить следующим образом:

root@kitploit:~
cd host
cargo run -p vmm

Объяснение

Этот код переключается между двумя инструкциями:

root@kitploit:~
2:
    nop
    jmp 2b

Когда флаг TF установлен в регистре FLAGS, должны генерироваться исключения с чередованием указателя инструкций между двумя инструкциями.

Гостевой ядро определяет обработчик исключений, который просто логирует указатель инструкции, сообщенный в кадре стека прерываний. Теоретически логи должны выглядеть так:

root@kitploit:~
...
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
...

Однако на практике модифицированное хост-ядро подавляет реинжекцию, что приводит к следующим логам:

root@kitploit:~
...
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:53] last instruction was also nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:59] last instruction was also jmp
[INFO  kernel/src/exception.rs:50] nop
[INFO  kernel/src/exception.rs:56] jmp
[INFO  kernel/src/exception.rs:50] nop
...

Подавленные события появятся в логах хост-ядра:

root@kitploit:~
...
[798678.660473] kvm_amd: exit_int_info=80000301 exit_info_1=500000004 exit_info_2=180000000 exit_code=400
[798678.678645] kvm_amd: exit_int_info=80000301 exit_info_1=500000004 exit_info_2=180000000 exit_code=400
[798678.680906] kvm_amd: exit_int_info=80000301 exit_info_1=500000004 exit_info_2=180000000 exit_code=400
[798678.683491] kvm_amd: exit_int_info=80000301 exit_info_1=500000004 exit_info_2=180000000 exit_code=400
[798678.700844] kvm_amd: exit_int_info=80000301 exit_info_1=500000004 exit_info_2=180000000 exit_code=400
[798678.712970] kvm_amd: exit_int_info=80000301 exit_info_1=500000004 exit_info_2=180000000 exit_code=400
...

Это демонстрирует, что доставка исключения #DB была подавлена.

Скачать инструмент