
High local crypto : LiteBox v0.1.0 SNP CrngProvider est un FastRng à graine publique 0x4d595df4d0f33173
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · litebox-snp-fixed-crng
Classe : Crypto / RNG prévisible Portée : Locale (invité-vs-hôte)
LiteBox v0.1.0 (d8556e3) - Microsoft
SnpLinuxKernel::fill_bytes_crng est un FastRng global au processus, construit avec la graine publique 0x4d595df4d0f33173 et un FIXME pour appeler l'hôte de confiance. FastRng est documenté comme un xorshift* non cryptographique (MAGIC = 0x2545F4914F6CDD1D). Sur ce pin, le trait CrngProvider exige toujours un flux cryptographiquement sûr. Le getrandom de l'invité et /dev/urandom puisent tous deux dans ce générateur protégé par mutex.
La menace de SEV-SNP est un hôte non fiable qui ne peut pas lire les pages privées à bit C. Un CRNG déterministe public n'a pas besoin de contournement du bit C. Quiconque a lu la graine (elle est dans le crate) peut rejouer chaque octet CRNG suivant depuis la première utilisation, ou depuis tout préfixe observé.
Ce reliquat est de l'entropie d'invité prévisible. Ce n'est pas une RCE, ni une RCE du noyau hôte, ni du VMPL0.
| ID | pas encore de CVE |
| Classe | Crypto / RNG prévisible |
| Portée | Locale (invité-vs-hôte). Distante uniquement si un service réseau de l'invité tire des clés de ce flux |
| CWE | CWE-338, CWE-330 |
| CVSS | Élevé : 7.1 CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Produit | microsoft/litebox |
| Affecté | v0.1.0 (d8556e33676e47244bfefa139c1e9ff95bd67d53) litebox_runner_snp. Le post-tag #1555 3715aa7 (2026-10-08) est le correctif sur main |
| Auth | hyperviseur SNP non fiable, ou quiconque a lu la graine publique |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 uniquement. Pas de matériel SNP |
Qui : un hyperviseur SNP non fiable, ou quiconque a cloné le crate. La victime est la charge de travail SNP invitée qui traite getrandom / urandom comme secret.
| Méthode + cible | Privilège |
|---|---|
xorshift* Python indépendant vs pin FastRng avec graine 0x4d595df4d0f33173 | Flux identique de 512 octets (deux blocs getrandom de 256 octets). 16 premiers octets 25c867c61e62ff15c0e2b0ba4fa70b4c |
Pin snp_impl.rs toujours sur v0.1.0 | FIXME: call into the trusted host to get random bytes. plus FastRng::new_from_seed(0x4d595df4d0f33173) |
| Méthode + cible | Privilège |
|---|---|
SYS_getrandom de l'invité -> fill_bytes_crng | blocs suivants de 256 octets du flux xorshift* public dans l'espace utilisateur de l'invité. GRND_RANDOM / GRND_NONBLOCK sont ignorés |
read(/dev/urandom) de l'invité | le même flux protégé par mutex |
| Hyperviseur ou lecteur hors-boîte de la graine | chaque octet CRNG suivant depuis la première utilisation, ou depuis tout préfixe observé, sans déchiffrer la mémoire privée SNP |
TLS / clés / nonces de l'invité tirés de getrandom / urandom | ces secrets sont prévisibles. Je ne revendique pas de pile TLS spécifique |
Aucune provenant du RNG seul.
AT_RANDOM sont codés en dur à DEADBEEF sur le shim Linux (séparé, en dessous d'Élevé à lui seul)0x13374a4159421337) - en dessous du seuilread stdin, write stdio, futex, clock_gettime, clone3, exit) avec des pointeurs détenus par le noyaugetrandom de l'hôte ; LVBS utilise ChaCha20 plus RDRAND plus une clé racine de plateforme. SNP est la plateforme de production qui ne le fait pasDix-huit chasses sur v0.1.0. Le fill_bytes_crng de SNP est un spin::mutex autour de FastRng::new_from_seed(0x4d595df4d0f33173) avec un FIXME. L'espace utilisateur Linux et LVBS font déjà de la vraie entropie. Je n'avais pas de matériel SNP. Le labo compile le module FastRng du pin, sert le flux sur loopback, et correspond à un rejeu Python indépendant. #1555 sur main (2026-10-08) bascule cette fonction vers le getrandom de l'hôte. Ce commit n'est pas dans le tag.
cd lab
./run.sh
Loopback 127.0.0.1:19120. Projet Compose litebox-snp-fixed-crng. Témoin LITEBOX-SNP-FIXED-CRNG-WITNESS. Dernière ligne :
SUCCESS litebox-snp-fixed-crng seed=0x4d595df4d0f33173 python-rust-stream-match=yes pin-FIXME-present=yes first16=25c867c61e62ff15c0e2b0ba4fa70b4c LITEBOX-SNP-FIXED-CRNG-WITNESS
Appeler le getrandom de l'hôte (ou RDRAND plus un secret de plateforme) depuis fill_bytes_crng. C'est #1555 3715aa7 sur main. Ne pas livrer une graine publique comme CrngProvider.
Le canal de réception du fournisseur est MSRC (https://msrc.microsoft.com/create-report). Ne pas ouvrir d'issue GitHub publique sur microsoft/litebox.
Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]