В Windows существует важный нюанс, о котором редко говорят в прикладном контексте защиты EDR.
Между моментом, когда объект нового процесса уже становится доступен из user mode, и моментом, когда kernel-mode драйвер безопасности получает/обрабатывает уведомление о его создании, может существовать короткий TOCTOU-разрыв.
Иными словами: прикладной код в некоторых сценариях успевает «попасть в окно» раньше, чем драйвер EDR применит свою политику через callbacks/notifications.
Если служба EDR запускается как обычный процесс, а не как PPL / Protected Process Light, такой разрыв теоретически может позволить сорвать её старт до того, как драйвер успеет полноценно защитить или изолировать процесс.
Важно: суть не в том, кто инициировал запуск процесса. Проблема архитектурная - объект процесса уже доступен на 3-м кольце, а уведомление в драйвере приходит позже.
Именно поэтому для критичных компонентов EDR недостаточно полагаться только на kernel callbacks. Защищаемый сервис должен стартовать в более жёсткой модели доверия, например как PPL, иначе появляется риск гонки между user mode и логикой защиты драйвера.
Код для того, чтобы попробовать это проэксплуатировать
https://github.com/JO1CaRE/killerservice/tree/main
May 14, 2026 1.2K 37