IntelのCPUに発覚した新たな脆弱性、Downfallについて

CPUにハードウェア的な欠陥が存在することがあります。
特に有名なのは[Meltdown](https://ja.wikipedia.org/wiki/Meltdown)・[Fallout](https://mdsattacks.com/)あたりですが、これは[投機的実行](https://ja.wikipedia.org/wiki/%E6%8A%95%E6%A9%9F%E7%9A%84%E5%AE%9F%E8%A1%8C)という高速化機構に潜んでいたバグです。

そして2023/08/08、CPUに潜んでいた新たなバグ、[Downfallが発表されました](https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00828.html)。
CVE-IDは[CVE-2022-40982](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-40982)です。

日本語紹介記事：[Intel製CPUに情報漏えいの恐れがある脆弱性「Downfall」が発見される、データやパスワードなどの機密情報が抜き取られる危険性](https://gigazine.net/news/20230809-intel-cpu-downfall-vulnerability/) / [インテルのチップから機密情報が流出する？ 新たな脆弱性「Downfall」の脅威](https://wired.jp/article/downfall-flaw-intel-chips/) / [Intel、第11世代までのCPUに影響する脆弱性などに対処](https://pc.watch.impress.co.jp/docs/news/1523137.html)

影響するCPUは2015年のSkylakeから2020年のTiger Lakeまでと、かなりの長期間にわたります。

ということで以下は公式？の紹介サイト、[Downfall Attacks](https://downfall.page/)の紹介です。

# Downfall Attacks

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/513b0832-883a-6038-20a0-03bcdd5eb54f.png)

Downfallは、PCやクラウドコンピュータに数十億個使われているプロセッサに潜んでいる脆弱性です。
[CVE-2022-40982](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-40982)と名付けられたこの脆弱性は、あるユーザが、同じコンピュータにアクセスしている他のユーザのデータを盗むことを可能にします。
たとえばアプリストアからダウンロードしたアプリは、この脆弱性を利用して、パスワード、暗号化キー、口座情報、そしてメールやメッセージ等の個人データを盗み出すことができます。
同様にクラウドコンピューティング環境においては、悪意のあるユーザがこの脆弱性を利用して、同じコンピュータを利用している他ユーザのデータや認証情報を盗む出すことができます。

この脆弱性は、Intelプロセッサのメモリ最適化機能が、ハードウェアの内部レジスタを意図せずソフトウェアに公開してしまうことによって引き起こされます。
これによって通常はアクセスできないはずの、他のプログラムがデータを保存した領域にアクセスできるようになってしまうのです。
私は、メモリ上に散在したデータへのアクセスを高速化するGather命令が、投機的実行時にVector register fileの内容をリークしてしまう問題を発見しました。
この脆弱性を悪用するため、私は`Gather Data Sampling (GDS)`および`Gather Value Injection (GVI)`というテクニックを導入しました。
詳細については[私が書いた論文](https://downfall.page/media/downfall.pdf)を参照してください。
引用は以下を使ってください。

```bib
@inproceedings{moghimi2023downfall,
  title={{Downfall}: Exploiting Speculative Data Gathering},
  author={Moghimi, Daniel},
  booktitle={32th USENIX Security Symposium (USENIX Security 2023)},
  year={2023}
}
```

## Demo

### Stealing 128-bit and 256-bit AES keys from another user

AESキーを盗み出すデモ。

https://downfall.page/media/gds_aes.mp4

### Stealing arbitrary data from the Linux Kernel

Linuxカーネルから任意のデータを盗み出すデモ。

https://downfall.page/media/gds_memcpy.mp4

### Spying on printable characters

表示できる文字を取り出すデモ。

https://downfall.page/media/gds_spy.mp4

## FAQ

**Q: 私はこの脆弱性の影響を受ける？**

多くの場合イエスです。
あなたのコンピューティングデバイス(ノート、デスクトップ、タブレット、クラウド等)が、対象のIntelプロセッサを利用しているかどうかによります。


**Q: 影響を受けるコンピューティングデバイスは？**

第六世代Skylakeから、第11世代Tiger LakeまでのIntelコアを搭載したプロセッサが影響を受けます。
[包括的なリストはこちら](https://www.intel.com/content/www/us/en/developer/topic-technology/software-security-guidance/processors-affected-consolidated-product-cpu-model.html)にあります。


**Q: これを使ってハッカーは何ができる？**

パスワードや暗号化キーなど、価値の高い機密情報を狙うことが考えられます。
その結果が、さらにコンピュータの可用性と完全性を侵害する他の攻撃につながる可能性もあります。


**Q: この攻撃はどのくらい実用的？**

非常に実用的です。
OpenSSLの秘密鍵を盗み出すエンドツーエンド攻撃を開発するのにかかった時間は2週間でした。
この攻撃が要求する前提は、攻撃者と被害者が同じ物理プロセッサを利用するだけであり、これはマルチタスク・マルチスレッドが一般的となった現代のコンピュータではよくあることです。


**Q: Intel SGXも影響を受ける？**

仮想マシン、プロセス、ユーザレベルの分離に加え、SGXも影響を受けます。
Intel SGXはIntelのCPUで利用可能なハードウェアセキュリティ機能で、あらゆる悪意のあるソフトウェアからデータを保護します。


**Q: Webブラウザからも攻撃可能？**

理論的には、Webブラウザからリモートでこの攻撃を悪用することは可能です。
実際に攻撃が成功するかについては、さらなる調査が必要です。


**Q: この脆弱性はいつから存在する？**

少なくとも9年間。
影響を受けるプロセッサは2014年から存在します。


**Q: この攻撃を検知する方法は？**

簡単ではありません。
Downfallの実行は、普通のアプリとほとんど見分けがつきません。
市販のアンチウィルスソフトでは、現在この攻撃を検出することはできません。

**Q: この攻撃の緩和策はありますか？**

Intelは既にマイクロコードのアップデートをリリースしています。


**Q: 緩和策のオーバーヘッドは？**

これは、Gather命令がプログラムのクリティカルパスに存在するかによって異なります。
Intelによると、最大で50%のオーバーヘッドが発生する可能性があるそうです。


**Q: この脆弱性の公開差し止め期間は？**

約1年です。
私はこの脆弱性を、2022年8月24日にIntelに報告しました。


**Q: 他のプロセッサメーカーや設計者もにも関係する？**

いずれのプロセッサも、コア内部に共有SRAMメモリが存在します。
メーカーは、セキュリティの境界をまたいでデータが漏洩しないように、メモリユニットの設計に細心の注意を払わなければなりません。


**Q: Downfallについてもっと詳しく**

[論文PDF](https://downfall.page/media/downfall.pdf)。
また2023/08/09に開催される[BlackHat USA](https://www.blackhat.com/us-23/briefings/schedule/)、および2023/08/11の[USENIX Security Symposium](https://www.usenix.org/conference/usenixsecurity23/presentation/moghimi)で発表を行いました。

**Q: Downfallで遊びたい**

コードはこちら。
[https://github.com/flowyroll/downfall/tree/main/POC](https://github.com/flowyroll/downfall/tree/main/POC)

**Q: どうしてDownfallと呼ばれますか？**

この攻撃は、セキュリティの境界を打ち破る[Meltdown](https://meltdownattack.com/)や[Fallout](https://mdsattacks.com/)といった、CPUへのデータ漏洩攻撃の系譜に連なるものです。
Downfallは、これまでの脆弱性への防衛策をふたたび打ち破りました。


**Q: ロゴはどうやって作った？**

[DALL·E 2](https://openai.com/dall-e-2)が作ってくれました。



# 実際にどれくらい遅くなるか

Intelが用意した緩和策で実際どれくらい処理が遅くなるか、[Phoronixが紹介しています](https://www.phoronix.com/review/intel-downfall-benchmarks)。
幾つかのソフトウェアでベンチマークを取っていますが、以下は適当な例です。

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/bd804928-8578-ef7e-7cd5-b560f1eda834.png)
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/082232c9-6048-5b78-4b01-7e29dcff0d5a.png)

Intelによると最大5割ということでしたが実際にはそこまでの劣化は見当たらず、全体的に1-2割程度の性能低下のようです。
影響が大きいためか、緩和策を無効にするカーネルオプション`gather_data_sampling=off`も追加されていますが、まあ一般人的には気にする必要はないでしょう。

もちろんGather命令を使っていないソフトウェアには影響がなく、たとえば超絶高速JSONパーサ[simdjson](https://github.com/simdjson/simdjson)にはパフォーマンス低下がなかったそうです。


# 感想

[論文](https://downfall.page/media/downfall.pdf)を読むのは諦めました。

正直何がどうなって脆弱性になっているのか、そして何より、どうやってそれを発見したのか、さっぱりわかりません。
世の中にはすごい頭のいい人がいっぱいいるものですね。