
Crypto locale elevata: LiteBox v0.1.0 SNP CrngProvider è FastRng con seed pubblico 0x4d595df4d0f33173
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · litebox-snp-fixed-crng
Classe: Crypto / RNG prevedibile Portata: Locale (guest-vs-host)
LiteBox v0.1.0 (d8556e3) - Microsoft
SnpLinuxKernel::fill_bytes_crng è un FastRng globale di processo costruito con seed pubblico 0x4d595df4d0f33173 e un FIXME per chiamare l'host fidato. FastRng è documentato come xorshift* non crittografico (MAGIC = 0x2545F4914F6CDD1D). Su questo pin il trait CrngProvider richiede comunque uno stream crittograficamente sicuro. getrandom del guest e /dev/urandom attingono entrambi da questo generatore protetto da mutex.
La minaccia di SEV-SNP è un host non fidato che non può leggere le pagine private con C-bit. Un CRNG deterministico pubblico non ha bisogno di un bypass del C-bit. Chiunque abbia letto il seed (è nel crate) può riprodurre ogni byte CRNG successivo dal primo utilizzo, o da qualsiasi prefisso osservato.
Questo residuo è entropia prevedibile del guest. Non è RCE, non è RCE del kernel host, e non è VMPL0.
| ID | nessuna CVE al momento |
| Classe | Crypto / RNG prevedibile |
| Portata | Locale (guest-vs-host). Remota solo se un servizio di rete del guest deriva chiavi da questo stream |
| CWE | CWE-338, CWE-330 |
| CVSS | Alto: 7.1 CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| Prodotto | microsoft/litebox |
| Affetto | v0.1.0 (d8556e33676e47244bfefa139c1e9ff95bd67d53) litebox_runner_snp. Il post-tag #1555 3715aa7 (2026-10-08) è la correzione su main |
| Auth | hypervisor SNP non fidato, o chiunque abbia letto il seed pubblico |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1. Nessun hardware SNP |
Chi: un hypervisor SNP non fidato, o chiunque abbia clonato il crate. La vittima è il workload SNP guest che tratta getrandom / urandom come segreto.
| Metodo + sink | Privilegio |
|---|---|
xorshift* Python indipendente vs pin FastRng con seed 0x4d595df4d0f33173 | Stream identico di 512 byte (due chunk getrandom da 256 byte). Primi 16 byte 25c867c61e62ff15c0e2b0ba4fa70b4c |
Pin snp_impl.rs ancora su v0.1.0 | FIXME: call into the trusted host to get random bytes. più FastRng::new_from_seed(0x4d595df4d0f33173) |
| Metodo + sink | Privilegio |
|---|---|
SYS_getrandom del guest -> fill_bytes_crng | chunk successivi da 256 byte dello stream xorshift* pubblico nello userspace del guest. GRND_RANDOM / GRND_NONBLOCK sono ignorati |
read(/dev/urandom) del guest | lo stesso stream protetto da mutex |
| Hypervisor o lettore off-box del seed | ogni byte CRNG successivo dal primo utilizzo, o da qualsiasi prefisso osservato, senza decifrare la memoria privata SNP |
TLS / chiavi / nonce del guest derivati da getrandom / urandom | quei segreti sono prevedibili. Non rivendico uno stack TLS specifico |
Nessuna dal solo RNG.
AT_RANDOM sono hardcoded a DEADBEEF sullo shim Linux (separato, di per sé sotto Alto)0x13374a4159421337) - sotto la sogliaread stdin, write stdio, futex, clock_gettime, clone3, exit) con puntatori di proprietà del kernelgetrandom dell'host; LVBS usa ChaCha20 più RDRAND più una chiave root di piattaforma. SNP è la piattaforma di produzione che non lo faDiciotto ricerche su v0.1.0. fill_bytes_crng di SNP è uno spin::mutex attorno a FastRng::new_from_seed(0x4d595df4d0f33173) con un FIXME. Lo userland Linux e LVBS fanno già entropia reale. Non avevo hardware SNP. Il laboratorio compila il modulo FastRng del pin, serve lo stream su loopback e verifica una riproduzione Python indipendente. #1555 su main (2026-10-08) commuta questa funzione su getrandom dell'host. Quel commit non è nel tag.
cd lab
./run.sh
Loopback 127.0.0.1:19120. Progetto Compose litebox-snp-fixed-crng. Witness LITEBOX-SNP-FIXED-CRNG-WITNESS. Ultima riga:
SUCCESS litebox-snp-fixed-crng seed=0x4d595df4d0f33173 python-rust-stream-match=yes pin-FIXME-present=yes first16=25c867c61e62ff15c0e2b0ba4fa70b4c LITEBOX-SNP-FIXED-CRNG-WITNESS
Chiamare getrandom dell'host (o RDRAND più un segreto di piattaforma) da fill_bytes_crng. Questa è #1555 3715aa7 su main. Non distribuire un seed pubblico come CrngProvider.
L'intake del fornitore è MSRC (https://msrc.microsoft.com/create-report). Non aprire una issue pubblica su GitHub per microsoft/litebox.
Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]