
High local crypto: LiteBox v0.1.0 SNP CrngProvider는 public-seed FastRng 0x4d595df4d0f33173입니다
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · litebox-snp-fixed-crng
분류: 암호 / 예측 가능한 RNG 도달 범위: 로컬 (게스트 대 호스트)
LiteBox v0.1.0 (d8556e3) - Microsoft
SnpLinuxKernel::fill_bytes_crng는 공개 시드 0x4d595df4d0f33173으로 생성된 프로세스 전역 FastRng이며, 신뢰할 수 있는 호스트를 호출하라는 FIXME가 달려 있습니다. FastRng는 문서상 비암호학적 xorshift*입니다 (MAGIC = 0x2545F4914F6CDD1D). 이 핀에서 CrngProvider 트레이트는 여전히 암호학적으로 안전한 스트림을 요구합니다. 게스트 getrandom과 /dev/urandom 모두 이 뮤텍스로 보호된 생성기에서 값을 가져옵니다.
SEV-SNP의 위협 모델은 C-bit 프라이빗 페이지를 읽을 수 없는 비신뢰 호스트입니다. 공개된 결정적 CRNG는 C-bit 우회가 필요하지 않습니다. 시드를 읽은 사람(크레이트에 들어 있습니다)은 최초 사용 시점부터, 또는 관찰된 임의의 접두사부터 이후의 모든 CRNG 바이트를 재현할 수 있습니다.
이 잔여물은 예측 가능한 게스트 엔트로피입니다. RCE도, 호스트 커널 RCE도, VMPL0도 아닙니다.
| ID | 아직 CVE 없음 |
| 분류 | 암호 / 예측 가능한 RNG |
| 도달 범위 | 로컬 (게스트 대 호스트). 게스트 네트워크 서비스가 이 스트림에서 키를 가져오는 경우에만 원격 |
| CWE | CWE-338, CWE-330 |
| CVSS | 높음: 7.1 CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N |
| 제품 | microsoft/litebox |
| 영향받음 | v0.1.0 (d8556e33676e47244bfefa139c1e9ff95bd67d53) litebox_runner_snp. 태그 이후 #1555 3715aa7 (2026-10-08)이 main의 수정 사항 |
| 인증 | 비신뢰 SNP 하이퍼바이저, 또는 공개 시드를 읽은 사람 |
| 라이선스 | GNU Affero GPL v3.0 |
| 랩 | 127.0.0.1 전용. SNP 하드웨어 없음 |
누가: 비신뢰 SNP 하이퍼바이저, 또는 크레이트를 복제한 사람. 피해자는 getrandom / urandom을 비밀로 취급하는 SNP 게스트 워크로드입니다.
| 방법 + 싱크 | 권한 |
|---|---|
독립적인 Python xorshift* 대 시드 0x4d595df4d0f33173의 핀 FastRng | 동일한 512바이트 스트림 (256바이트 getrandom 청크 두 개). 첫 16바이트 25c867c61e62ff15c0e2b0ba4fa70b4c |
핀 snp_impl.rs가 여전히 v0.1.0 | FIXME: call into the trusted host to get random bytes. 그리고 FastRng::new_from_seed(0x4d595df4d0f33173) |
| 방법 + 싱크 | 권한 |
|---|---|
게스트 SYS_getrandom -> fill_bytes_crng | 게스트 사용자 공간에서 공개 xorshift* 스트림의 다음 256바이트 청크. GRND_RANDOM / GRND_NONBLOCK은 무시됨 |
게스트 read(/dev/urandom) | 동일한 뮤텍스 스트림 |
| 하이퍼바이저 또는 시드의 오프박스 판독자 | SNP 프라이빗 메모리를 복호화하지 않고도 최초 사용 시점부터, 또는 관찰된 임의의 접두사부터 이후의 모든 CRNG 바이트 |
getrandom / urandom에서 가져온 게스트 TLS / 키 / 논스 | 해당 비밀은 예측 가능함. 특정 TLS 스택을 주장하지는 않음 |
RNG 단독으로 인한 것은 없음.
AT_RANDOM은 Linux shim에서 하드코딩된 DEADBEEF (별개 사항, 그 자체로는 High 미만)0x13374a4159421337)를 사용 - 기준 미달read stdin, write stdio, futex, clock_gettime, clone3, exit) 커널 소유 포인터와 함께getrandom을 호출함; LVBS는 ChaCha20 + RDRAND + 플랫폼 루트 키를 사용함. SNP는 그렇게 하지 않는 프로덕션 플랫폼임v0.1.0에서 18번의 추적. SNP fill_bytes_crng는 FIXME와 함께 FastRng::new_from_seed(0x4d595df4d0f33173)를 감싼 spin::mutex입니다. Linux 사용자 공간과 LVBS는 이미 실제 엔트로피를 사용합니다. SNP 하드웨어는 없었습니다. 랩은 핀 FastRng 모듈을 컴파일하고, 루프백에서 스트림을 제공하며, 독립적인 Python 재현과 일치시킵니다. main의 #1555 (2026-10-08)는 이 함수를 호스트 getrandom으로 전환합니다. 그 커밋은 태그에 없습니다.
cd lab
./run.sh
루프백 127.0.0.1:19120. Compose 프로젝트 litebox-snp-fixed-crng. 증인 LITEBOX-SNP-FIXED-CRNG-WITNESS. 마지막 줄:
SUCCESS litebox-snp-fixed-crng seed=0x4d595df4d0f33173 python-rust-stream-match=yes pin-FIXME-present=yes first16=25c867c61e62ff15c0e2b0ba4fa70b4c LITEBOX-SNP-FIXED-CRNG-WITNESS
fill_bytes_crng에서 호스트 getrandom(또는 RDRAND + 플랫폼 비밀)을 호출하십시오. 그것이 main의 #1555 3715aa7입니다. 공개 시드를 CrngProvider로 제공하지 마십시오.
벤더 접수는 MSRC(https://msrc.microsoft.com/create-report)입니다. microsoft/litebox에 공개 GitHub 이슈를 열지 마십시오.
Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]