
ローカル暗号の高水準: 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 | High: 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 チャンク 2 つ)。最初の 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 シム上でハードコードされた 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 は FastRng::new_from_seed(0x4d595df4d0f33173) を FIXME 付きで 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 issue を開かないこと。
Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]