💻

Sleep Attack (CVE-2020-8705) の解説

2020/11/15に公開

https://trmm.net/Sleep_attack/
CVE-2020-8705 の解説が良記事だったので簡単にまとめを書いてみました。メモのようなものなので不正確なところもあるかもしれません。

Overview & Attack senario

BIOSのコードは、Boot Guardの仕組みによりValidationが行われ、OEMが署名したコード以外は実行できないようになっている。このValidatoinが通常のブートでは行われるが、S3 Resume では行われないという脆弱性。S3起動時にSPI Flashの内容を改竄し任意のコードを実行可能

OSのスクリーンロック解除、BitLockerの鍵を盗む、SMM内にOSからは検知できないマルウェアを仕込む、というようなことが可能

物理アクセスが必要だが、例えば空港の税関などでPCを預けた際に、SPI Flashのところに特殊なデバイスを埋め込まれることが考えられる

spispyというオープンソースのSPI flashエミュレータがある
FPGAによりSPI flashへのアクセスパターンからS3 Resumeを検知して、その場合だけ SPI flashの内容を変える、ということが可能

Root Cause

PCHのWrite OnceのFuse(FPF)があり、BootGuardの設定が書き込まれている。その中にS3 Resumeでもチェックするかどうかの設定がある。この設定はOEMの判断で設定されれいる。

セキュリティ的には S3 Resumeでもチェックすべきだが、Resume時間に影響があるため、無効に設定しているOEMが存在。また、MicrosoftのLogo要件にS3 Resume時間の制限(2000ms)があることも無効にする動機になる。

Mitigation

FPFの設定は出荷後に変更できない。Intelはこの問題に対して、CSME Firmwareをリリースした。このFirmwareに更新するとFPFの設定によらずS3 Resume時にもBoot GuardのValidationが行われる様になるようだ

これはFPFの設定をCSME Firmwareがオーバーライドできることを意味する。仮に CSME Firmwareに脆弱性があると、Boot Guardを無効化することが可能だろう

Discussion