
Alto crypto local: LiteBox v0.1.0 SNP CrngProvider é FastRng de semente pública 0x4d595df4d0f33173
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · litebox-snp-fixed-crng
Classe: Cripto / RNG Previsível Alcance: Local (convidado-vs-hospedeiro)
LiteBox v0.1.0 (d8556e3) - Microsoft
SnpLinuxKernel::fill_bytes_crng é um FastRng global de processo construído com semente pública 0x4d595df4d0f33173 e um FIXME para chamar o hospedeiro confiável. FastRng está documentado como xorshift* não criptográfico (MAGIC = 0x2545F4914F6CDD1D). Neste pin, o trait CrngProvider ainda exige um fluxo criptograficamente seguro. O getrandom do convidado e /dev/urandom ambos consomem deste gerador protegido por mutex.
A ameaça do SEV-SNP é um hospedeiro não confiável que não consegue ler páginas privadas com bit C. Um CRNG determinístico público não precisa de um bypass de bit C. Qualquer um que leu a semente (ela está no crate) pode reproduzir cada byte subsequente do CRNG desde o primeiro uso, ou a partir de qualquer prefixo observado.
Este resíduo é entropia previsível do convidado. Não é RCE, não é RCE do kernel do hospedeiro, e não é VMPL0.
| ID | sem CVE ainda |
| Classe | Cripto / RNG Previsível |
| Alcance | Local (convidado-vs-hospedeiro). Remoto apenas se um serviço de rede do convidado derivar chaves deste fluxo |
| 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 |
| Produto | microsoft/litebox |
| Afetado | v0.1.0 (d8556e33676e47244bfefa139c1e9ff95bd67d53) litebox_runner_snp. O pós-tag #1555 3715aa7 (2026-10-08) é a correção na main |
| Autenticação | hipervisor SNP não confiável, ou qualquer um que leu a semente pública |
| Licença | GNU Affero GPL v3.0 |
| Laboratório | apenas 127.0.0.1. Sem hardware SNP |
Quem: um hipervisor SNP não confiável, ou qualquer um que clonou o crate. A vítima é a carga de trabalho do convidado SNP que trata getrandom / urandom como secreto.
| Método + destino | Privilégio |
|---|---|
xorshift* independente em Python vs pin FastRng com semente 0x4d595df4d0f33173 | Fluxo idêntico de 512 bytes (dois chunks de getrandom de 256 bytes). Primeiros 16 bytes 25c867c61e62ff15c0e2b0ba4fa70b4c |
Pin snp_impl.rs ainda em v0.1.0 | FIXME: call into the trusted host to get random bytes. mais FastRng::new_from_seed(0x4d595df4d0f33173) |
| Método + destino | Privilégio |
|---|---|
SYS_getrandom do convidado -> fill_bytes_crng | próximos chunks de 256 bytes do fluxo xorshift* público no espaço de usuário do convidado. GRND_RANDOM / GRND_NONBLOCK são ignorados |
read(/dev/urandom) do convidado | o mesmo fluxo protegido por mutex |
| Hipervisor ou leitor externo da semente | cada byte subsequente do CRNG desde o primeiro uso, ou a partir de qualquer prefixo observado, sem descriptografar a memória privada do SNP |
TLS / chaves / nonces do convidado derivados de getrandom / urandom | esses segredos são previsíveis. Não afirmo uma pilha TLS específica |
Nenhuma proveniente apenas do RNG.
AT_RANDOM são DEADBEEF codificados no shim do Linux (separado, abaixo de Alto por si só)0x13374a4159421337) - abaixo do limiteread stdin, write stdio, futex, clock_gettime, clone3, exit) com ponteiros de propriedade do kernelgetrandom do hospedeiro; LVBS usa ChaCha20 mais RDRAND mais uma chave raiz de plataforma. SNP é a plataforma de produção que não o fazDezoito caçadas na v0.1.0. O fill_bytes_crng do SNP é um spin::mutex em torno de FastRng::new_from_seed(0x4d595df4d0f33173) com um FIXME. O userland do Linux e o LVBS já fazem entropia real. Eu não tinha hardware SNP. O laboratório compila o módulo FastRng do pin, serve o fluxo em loopback, e corresponde a uma reprodução independente em Python. O #1555 na main (2026-10-08) muda esta função para o getrandom do hospedeiro. Esse commit não está na tag.
cd lab
./run.sh
Loopback 127.0.0.1:19120. Projeto Compose litebox-snp-fixed-crng. Testemunha LITEBOX-SNP-FIXED-CRNG-WITNESS. Última linha:
SUCCESS litebox-snp-fixed-crng seed=0x4d595df4d0f33173 python-rust-stream-match=yes pin-FIXME-present=yes first16=25c867c61e62ff15c0e2b0ba4fa70b4c LITEBOX-SNP-FIXED-CRNG-WITNESS
Chame o getrandom do hospedeiro (ou RDRAND mais um segredo de plataforma) a partir de fill_bytes_crng. Isso é o #1555 3715aa7 na main. Não distribua uma semente pública como CrngProvider.
O intake do fornecedor é o MSRC (https://msrc.microsoft.com/create-report). Não abra uma issue pública no GitHub em microsoft/litebox.
Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]