2018年1月、コンピュータ業界全体に警戒態勢を敷かせる出来事がありました。カーネル空間とユーザー空間のメモリを隔てるOSの基本的なセキュリティ境界を突破する、2つの新しいプロセッサ脆弱性が発見されたのです。それがMeltdownとSpectreです。これらの欠陥は、投機的実行(speculative execution)として知られる最新CPUの性能向上機能に起因するもので、対策にはCPUメーカー、デバイスメーカー、OSベンダーを巻き込んだ、史上最大級のパッチ協調対応が必要となりました。
MeltdownとSpectreは、ハードウェアの設計上の判断に起因する脆弱性としては決して最初の例ではありませんでした。しかしその影響範囲の広さから、セキュリティ研究コミュニティはこの種の欠陥への関心を一気に高めました。それ以来、学術界・民間企業双方の多くの研究者がCPUをはじめとするハードウェアコンポーネントの低レベルな動作を研究するようになり、次々と新たな問題が明らかにされています。
ハードウェアの脆弱性の中には、新世代のコンポーネントをリリースしない限り完全な対策が不可能なものもあれば、ハードウェアチップに搭載された低レベルのプログラムであるファームウェアで修正できるものもあります。いずれにせよパッチ適用は一筋縄ではいかず、こうした欠陥は実際の機器に非常に長期間にわたって影響を及ぼし続けることになります。
ここでは、Meltdown発見の前後を通じて明らかになった、特に重大なCPUおよびDRAMの脆弱性を紹介します。
CPUサイドチャネル攻撃
- Spectre variant 1
- Spectre variant 2
- Meltdown variant 3
- Meltdown-GP
- Meltdown-NM
- Spectre-NG
- Spectre-PHT
- Meltdown-RW
- Foreshadow-OS
- Foreshadow-VMM
- Foreshadow-SGX
- Meltdown-PKおよびMeltdown-BND
- Spectre-PHT-CA-OP、Spectre-PHT-CA-IP、Spectre-PHT-SA-OP
- Spectre-BTB-SA-IPおよびSpectre-BTB-SA-OP
- Fallout
- RIDL
- Zombieload
- Starbleed
- PLATYPUS
- SRBDS
- Spectre-BHI
- Retbleed
- Hertzbleed
- SQUIP
- Zenbleed
- Downfall
- Reptar
- Inception
- SLAM
- GhostRace
- TikTag
- Indirector
- Register File Data Sampling
- SinkClose
- Native BHI
- GoFetch
- EntrySign
- Transient Scheduler Attacks
- Branch Privilege Injection
- VMScape
- SysBumps
- LoongLeak
Spectre variant 1(CVE-2017-5753)
境界チェックバイパス(bounds check bypass)としても知られるCVE-2017-5753は、最新CPUの分岐予測機能を悪用し、CPUキャッシュをサイドチャネルとして利用することで他プロセスのメモリから情報を抽出できる脆弱性です。あるプロセスが別のプロセスのメモリから機密情報を抽出できるだけでなく、ユーザー/カーネル間のメモリ権限境界を突破することも可能です。この脆弱性はIntel、IBM、および一部のARM CPUに影響します。
Spectre variant 2(CVE-2017-5715)
Spectre variant 2は、variant 1と同じ影響を及ぼしますが、分岐ターゲット注入(branch target injection)と呼ばれる別の悪用手法を用います。このvariantを効果的に緩和するには、対象CPUのマイクロコードを更新する必要があり、これはBIOS/UEFIアップデートを通じて、あるいはOSが再起動のたびに適用する形で実施できます。
Meltdown variant 3(CVE-2017-5754)
Rogue Data Cache Load(RDCL)、あるいはCPU投機的実行に関する脆弱性のvariant 3としても知られるMeltdownは、最新Intel CPUのアウトオブオーダー実行機能を悪用する脆弱性です。ユーザープロセスが、セキュリティ境界を越えて保護されたカーネルメモリを読み取れてしまいます。この修正にはOSアップデートのみが必要で、機密情報を多く含むカーネルメモリをより厳格に隔離する仕組み、たとえばLinuxのカーネルページテーブル分離(KPTI)などのメカニズムを導入することで対応します。
Meltdown-GP(CVE-2018-3640)
Meltdownのvariant、いわゆるvariant 3aで、システムレジスタの投機的読み取りを利用してサイドチャネル的に情報を漏洩させます。このためRogue System Register Read(RSRE)とも呼ばれます。対策にはマイクロコードの更新が必要です。
Meltdown-NM(CVE-2018-3665)
Meltdownに関連する投機的実行の脆弱性で、LazyFPとしても知られています。浮動小数点数演算を高速化するために最新のIntel CPUに搭載されている専用の数値演算コプロセッサ、FPU(浮動小数点演算ユニット)の状態を漏洩させるのに利用できます。FPUの状態には暗号処理由来の機密情報が含まれる場合があります。この脆弱性は、OSレベルでFPUのコンテキストスイッチを「遅延方式(lazy)」から「即時方式(eager)」に切り替えることで緩和できます。
Spectre-NG(CVE-2018-3639)
Spectre variant 4、あるいは投機的ストアバイパス(Speculative Store Bypass、SSB)としても知られるこのSpectre variantは、以前のメモリ書き込みアドレスが確定する前にメモリ読み取りを実行できてしまうもので、プロセス間の情報漏洩に利用できます。対策にはマイクロコードとOSアップデートの両方が必要です。
Spectre-PHT(CVE-2018-3693)
Spectre 1.1としても知られるこのSpectre variantは、投機的ストアを利用して投機的なバッファオーバーフローを引き起こします。従来のSpectre向けソフトウェアベースの緩和策の一部を回避できるため、OSアップデートによる対策が必要です。
Meltdown-RW
Spectre 1.2としても知られるこのvariantは、投機的ストアを利用して読み取り専用データやコードポインタを上書きします。このvariantはソフトウェアサンドボックスを突破するのに利用可能で、Spectre 1.1と関連があります。対策にはOSアップデートが必要でした。
Foreshadow-OS(CVE-2018-3620)
L1 Terminal Faultとしても知られるForeshadowは、プロセッサのL1データキャッシュから情報を抽出できる、Intel CPUを標的とした投機的実行攻撃です。これは仮想マシン環境で特に厄介です。というのも、同一の物理CPUを複数の仮想CPUに分割する仮想マシンは、それら仮想CPU同士が同じL1キャッシュを共有しているためです。このvariantを使えば、攻撃者はOSやSMM(システム管理モード)から情報を抽出できます。SMMはOSとは独立したCPUの動作モードで、BIOS/UEFIや低レベルのOEMコードが利用することを想定して設計されています。
Foreshadow-VMM(CVE-2018-3646)
Foreshadowのvariantで、仮想マシンに影響を及ぼします。VM内で動作するゲストOSが、他のゲストVMやハイパーバイザー自体の機密メモリを読み取れてしまう可能性があります。
Foreshadow-SGX(CVE-2018-3615)
Foreshadowのvariantで、Intel Software Guard Extensions(SGX)エンクレーブのメモリを攻撃者が読み取れてしまいます。SGXは一部のIntel CPUが提供する信頼実行環境で、たとえOS自体が侵害されていたとしても、開発者がデータの保存やコードの実行を安全に行えるようにするものです。
Meltdown-PKおよびMeltdown-BND
Meltdown-PK(Protection Key Bypass)とMeltdown-BND(Bounds Check Bypass)は、一時的実行攻撃(transient execution attacks)に関するより大規模な評価の一環として、2018年11月に学術研究者チームが発表したMeltdownの2種類のvariantです。Meltdown-PKはIntel CPUに影響し、Meltdown-BNDはIntelとAMDの両方に影響します。
Spectre-PHT-CA-OP、Spectre-PHT-CA-IP、Spectre-PHT-SA-OP
CPUのパターン履歴テーブル(Pattern History Table、PHT)を悪用するSpectreのvariantです。Meltdown-PKやMeltdown-BNDと同じチームによって、同時期に発表されました。
Spectre-BTB-SA-IPおよびSpectre-BTB-SA-OP
分岐ターゲットバッファ(Branch Target Buffer、BTB)を悪用するSpectre攻撃のvariantです。Meltdown-PKやMeltdown-BNDを発見したのと同じチームによって、2018年11月に発表されました。このチームは当時、「導入済みのものを含め、大半の防御策ではすべての攻撃variantを完全に緩和することはできない」と結論づけています。
Fallout(CVE-2018-12126)
Falloutは、マイクロアーキテクチャ・ストアバッファ・データサンプリング(MSBDS)としても知られ、保護されたメモリ領域からセキュリティ境界を越えて機密情報を漏洩させられるという点でMeltdownと似た影響をもたらす脆弱性です。IntelがMicroarchitectural Data Sampling(MDS)と呼ぶ、新たなサイドチャネル攻撃の一種に分類されるCPU攻撃です。この欠陥はOSとハイパーバイザーの両方に影響し、対策にはCPUマイクロコードの更新が必要です。
RIDL(CVE-2018-12127およびCVE-2018-12130)
MDS攻撃のさらに2種類のvariantで、マイクロアーキテクチャ・ロードポート・データサンプリング(MLPDS)とマイクロアーキテクチャ・フィルバッファ・データサンプリング(MFBDS)として知られています。Falloutと同様、対策にはCPUマイクロコードの更新が必要です。
Zombieload(CVE-2019-11091)
MDS攻撃の4番目のvariantで、マイクロアーキテクチャ・データサンプリング・アンキャッシャブルメモリ(MDSUM)として知られています。FalloutやRIDLと同様、機密性の高いカーネルメモリやハイパーバイザーメモリを漏洩させるのに利用できます。
Starbleed
StarbleedはXilinx製のフィールドプログラマブルゲートアレイ(FPGA)におけるビットストリーム暗号化プロセスの設計上の欠陥です。あらかじめ大半の演算処理に適した汎用命令セットが定められているCPUとは異なり、FPGAは顧客がロジックをプログラム可能な集積回路です。通常、汎用CPUよりも効率よく特定タスクを1つ実行できるよう構成されており、航空宇宙、金融、軍事といった分野で、ミッションクリティカルあるいは安全性が重視される用途に広く利用されています。
顧客がFPGAに読み込ませる設定ファイルはビットストリームと呼ばれます。FPGA市場のおよそ50%を占めるXilinxをはじめとするFPGAメーカーは、顧客の知的財産やFPGAに含まれるその他の機密情報を保護するため、暗号化とビットストリーム検証の仕組みを導入してきました。ドイツ・ルール大学ボーフムのHorst Goertz情報セキュリティ研究所の研究者たちは、Xilinxの7シリーズおよびVirtex-6のFPGAにおけるビットストリームセキュリティ機構に設計上の欠陥を発見しました。この欠陥を悪用すると、攻撃者はビットストリームを復号し、改変できてしまいます。
Starbleed攻撃を成立させるには、攻撃者がFPGA上のハードウェア設定インターフェースにアクセスする必要があり、通常はデバイスへの物理的なアクセスが求められます。ただし一部のFPGAは、ネットワーク接続可能な別のマイクロコントローラを経由してプログラム・再プログラムされる場合があり、その場合は攻撃がリモートから実行される可能性もあります。
この設計上の欠陥はシリコン自体に存在するため、パッチによる修正はできず、将来世代のXilinx製FPGAで是正されることになります。同社は論文発表前にこの脆弱性の通知を受けており、顧客向けにアドバイザリを送付済みです。
PLATYPUS
PLATYPUSは、CPU消費電力を計測するrunning average power limit(RAPL)インターフェースを悪用するサイドチャネル攻撃で、2011年(Sandy Bridge)以降に開発されたすべてのIntel CPUに搭載されています。リモートから実行可能な差分電力解析攻撃としては初めての事例であり、Linuxカーネルメモリや Intel SGXセキュアエンクレーブから暗号鍵などの機密情報を漏洩させるのに利用できます。
この攻撃は2020年11月に発表され、グラーツ工科大学、英バーミンガム大学、CISPA Helmholtz情報セキュリティセンターの研究者チームによって考案されました。Linuxカーネル開発者は、CVE-2020-8694およびCVE-2020-8695として追跡されているこの脆弱性に対し、権限のないアプリケーションがRAPLの消費電力データにアクセスできないようにすることでパッチを適用しました。
しかし、これはIntel SGXに対する特権を持つ攻撃経路への対策にはなりません。SGXは、たとえOSが完全に侵害された場合でも機密性の高い暗号データを安全に保つことを目的として、CPUに組み込まれた信頼実行環境(TEE)です。これに対処するには、ユーザーはIntelがリリースしたマイクロコードアップデートを導入する必要があります。
研究者たちはIntel CPUに対してこの攻撃を検証・確認しましたが、AMD、Nvidia、ARMなど他のチップメーカー製CPUにもアクセス可能なオンボードのエネルギーメーターが搭載されており、この攻撃の変形版に対して脆弱である可能性があると警告しています。
SRBDS(CVE-2020-0543)
SRBDS(Special Register Buffer Data Sampling)は、アムステルダム自由大学(VU Amsterdam)の研究者たちが2020年に考案した攻撃手法で、CPUコアをまたいでサイドチャネル経由でデータを漏洩させる投機的実行攻撃が可能であることを実証しました。従来、この種の攻撃とその対策は、データ漏洩に使われる内部CPUバッファが同一CPUコア上で動作するハイパースレッド間で共有されているため、攻撃者と被害者が同じCPUコアを共有していることを前提としていました。
しかし研究者たちは、一部の命令がすべてのCPUコア間で共有されるステージングバッファからデータを読み取れることを発見しました。これにより、RIDL(CVE-2018-12127およびCVE-2018-12130)のような既知の、かつ既に緩和済みとされていた投機的実行攻撃の攻撃対象領域が拡大することになります。研究チームはCrossTalkと呼ばれるツールを開発し、すべてのx86命令の動作を様々な文脈で調査してコア外メモリ要求を発生させるタイミングを特定しました。そのうえでこの新しい攻撃手法を用いて、ステージングバッファからIntel SGXセキュアエンクレーブが使用する乱数生成器(RNG)の出力を漏洩させました。このRNG出力を使うことで、別のCPUコア上で動作するIntel SGXエンクレーブのECDSA秘密鍵を、その鍵が1回の署名操作に使われた後に漏洩させることに成功しています。
IntelはRDRAND、RDSEED、EGETKEYといった重要な命令に対する対策として、ステージングバッファがクリアされるまでメモリバス全体をロックするCPUマイクロコードアップデートをリリースしました。この処理は大きな性能オーバーヘッドを伴うため、特定の命令に対してのみ導入されています。
Spectre-BHI(CVE-2022-0001、CVE-2022-0002、CVE-2022-23960)
Spectre-BHI(Branch History Injection)、またはSpectre-BHB(Branch History Buffer)は、2022年3月にVU Amsterdamの研究者たちが発表した攻撃で、元祖Spectre v2ことSpectre-BTI(Branch Target Injection)攻撃のvariantであり、IntelおよびARM CPUに影響します。Spectre-BTIと同様、この新しい攻撃variantもカーネルのメモリから機密情報を漏洩させることができますが、CPU予測器のグローバル履歴を汚染するという手法を取ることで、CPUベンダーが導入したハードウェア防御策を回避します。
元祖Spectre v2の脆弱性を悪用する場合、攻撃者は実際にターゲットとなるコードの場所を注入し、カーネルを騙してそのコードを実行させることができました。しかし新しいSpectre-BHI攻撃では、過去に実行されたことで履歴の中に既に存在するコードガジェットやコード断片を活用する必要があり、そこから興味深いデータが漏洩する可能性があります。これによりSpectre-BHIの悪用はより難しくなりますが、この手法はSpectreの攻撃対象領域が従来考えられていたよりも広いことを示しています。
この攻撃を実証するため、研究者たちはeBPFを悪用しました。eBPFはLinuxカーネル4.4以降で利用可能な技術で、サンドボックス化されたプログラムをカーネル内で実行できるようにするものです。この機能が有効になっていると、Spectre-BHIのようなLinuxの投機的実行の問題を悪用するのが非常に容易になりますが、無効化したからといって問題が完全に解消されるわけではありません。データを漏洩させる他のガジェットが見つかる可能性があるためです。
Retbleed(CVE-2022-29901およびCVE-2022-29900)
Retbleedは、2022年7月にチューリッヒ工科大学(ETH Zurich)の研究者たちが発表した攻撃手法で、IntelおよびAMD CPUの投機的実行機能を悪用し、Spectreなどの過去の脆弱性を防ぐためにOSが導入していたソフトウェア対策を回避します。
2018年に発表された元祖Spectre攻撃は、間接的なジャンプや呼び出し(indirect jumps or calls)を利用して分岐ターゲットの投機を引き起こすものでした。これを受けてGoogleの研究者たちは、ソフトウェア上で間接ジャンプ・呼び出しをリターン命令に置き換える「retpoline」と呼ばれる対策手法を提案しました。リターン命令は通常投機的実行を引き起こさないため悪用は非現実的だと考えられていましたが、Retbleedはコールスタックを深くしてリターンスタックバッファをアンダーフローさせるなど、特定の条件下では悪用可能であることを証明しました。研究者たちはLinuxでこの攻撃を実証し、この条件を満たすケースが1,000件以上存在することを発見しています。
IntelはRetbleedを「Return Stack Buffer Underflow(RSBU)」と呼んでおり、間接分岐制限投機(IBRS)または拡張IBRS(eIBRS)といった自社のハードウェア対策を利用しているシステムはこの攻撃から保護されているとしています。影響を受けるのは、性能上の理由からretpolineによるソフトウェア対策のみに依存しているシステムや、ハードウェア対策を持たない旧世代CPUを使用しているシステムに限られます。AMDはこの攻撃を、Branch Type Confusion(CVE-2022-23825)と呼ばれるマイクロアーキテクチャの誤動作に関するより大きなクラスの一部と位置づけています。
Hertzbleed(CVE-2022-23823およびCVE-2022-24436)
Hertzbleedは、IntelおよびAMD、そしておそらくARMのCPUにも影響する新たなサイドチャネル攻撃群で、2022年6月にテキサス大学オースティン校、イリノイ大学アーバナ・シャンペーン校、ワシントン大学の学術研究者チームによって発表されました。この攻撃は、消費電力を抑え、CPUが熱・電力の上限を超えないようにする最新CPUの機能である動的周波数スケーリング(dynamic frequency scaling)に起因します。この攻撃を発見した研究者たちは、処理されるデータによって計算ごとに異なるCPU周波数が使われることを示しました。
電力解析攻撃自体は目新しいものではありませんが、従来は局所的な攻撃で、計算間の差異を監視し処理内容の詳細を推測するために何らかの電力測定インターフェースを必要としていました。この種のサイドチャネル手法は、暗号鍵などの機密情報を漏洩させるためにこれまでも利用されてきました。
しかしHertzbleedは、周波数スケーリングが計算のタイミング差を生み出し、それが電力測定インターフェースなしにリモートからでも観測可能であることを示しました。特筆すべきは、Hertzbleedがタイミング解析による情報漏洩を防ぐために意図的に設計された、いわゆる「一定時間(constant time)」の暗号実装に対しても有効に機能する点です。
研究者たちはHertzbleedを使い、ポスト量子暗号のカプセル化メカニズムであり、かつNIST標準化コンペティションの最終候補にも残っているSIKE(Supersingular Isogeny Key Encapsulation)に対して、一定時間で実装されているにもかかわらず、新規の選択暗号文攻撃を実行しました。研究チームはリモートタイミング解析により、鍵の完全な抽出に成功しています。
Intelは、Hertzbleedをソフトウェア対策で緩和するためのガイダンスを暗号ライブラリ開発者向けに公開しました。もう一つの緩和策として、システム実行時に「Turbo Boost」を無効化する方法もありますが、これはシステム全体の性能に大きな影響を及ぼします。
SQUIP(CVE-2021-46778)
SQUIPは、2022年8月に発表された、AMD CPUに影響を及ぼすサイドチャネル攻撃・脆弱性です。この攻撃はLamarr Security Research、グラーツ工科大学、ジョージア工科大学の研究者たちによって考案されたもので、同時マルチスレッディング(SMT)動作時にCPUで実行される命令をスケジューリングするために使われるスケジューラキューを悪用します。スケジューラキューの競合レベルを測定することで、攻撃者は機密情報を漏洩させられる可能性があるとAMDは述べています。
Zenbleed(CVE-2023-20593)
Zenbleedは、AMDのZen 2ファミリーのCPUに存在する脆弱性で、2013年7月にパッチが適用されました。Googleのセキュリティ研究者たちによって発見されたこの欠陥は、CPU版の「use-after-free」メモリ脆弱性とも表現されています。SIMDのZeroupper命令が投機的に実行される際の実装ミスが原因で、攻撃者は物理ハードウェアレジスタに残った古いデータを漏洩させることができます。こうしたデータにはパスワードや暗号鍵など機密性の高い情報が含まれる場合があります。
Downfall(CVE-2022-40982)
Intelの表記ではGather Data Sampling(GDS)と呼ばれるDownfallは、複数世代のIntel CPUに影響を及ぼす一時的実行の脆弱性で、2023年8月に発表されました。Googleのセキュリティ研究者によって発見されたこの欠陥は、投機的実行の結果として物理ハードウェアレジスタに残った古いデータが後続の命令に転送されてしまう点でZenbleedと似ており、同一CPUコアを共有する他のプロセスやユーザーの機密データを攻撃者が漏洩させることができます。データの抽出にはMeltdownで使われたものと同様の手法が使えます。この欠陥はIntelのSoftware Guard Extensions(SGX)セキュリティサブシステムのセキュリティにも影響を及ぼします。
Reptar(CVE-2023-23583)
Reptarは、昨年Googleのセキュリティ研究者によって発見された3つ目のCPU脆弱性で、2023年11月にパッチが適用されました。高速短繰り返し移動(fast short repeat move、FSRM)と呼ばれる新機能に対応したIntel CPUに影響し、権限昇格につながる可能性があります。この欠陥は、FSRMが有効な際にCPUマイクロコードが冗長な命令プレフィックスを無視せず、想定外の形で解釈してしまうことが原因です。
Inception(CVE-2023-20569)
Inceptionは、ETH Zurichの研究者によって発見されたAMD CPUの脆弱性で、2023年8月に発表され、機密情報の漏洩につながる可能性があります。Inceptionは新しいタイプの投機的実行攻撃で、リターン命令の一時的な制御フローを乗っ取り、攻撃者が制御可能なアドレスレジスタに対して、CPUの分岐予測器に新たな予測を挿入できてしまいます。
SLAM
Spectre based on Linear Address Masking(SLAM)は、アムステルダム自由大学の研究者たちが考案した概念実証(PoC)攻撃手法です。CPUベンダーが計画している新たなセキュリティ機能であるリニアアドレスマスキングを実装予定の、今後登場するAMD、Intel、ARM製CPU上で、これまで未検証だったSpectreガジェットが悪用可能であることを示しました。具体的には、IntelのLinear Address Masking(LAM)、AMDのUpper Address Ignore(UAI)、ARMのTop Byte Ignore(TBI)が対象です。SLAMは、発表済みだが未リリースのCPU機能を標的とした初の投機的実行攻撃として注目されています。
GhostRace(CVE-2024-2193)
GhostRaceは、2024年3月にアムステルダム自由大学の研究者によって発表された新種のCPU攻撃で、投機的に実行されるコードパス上の競合状態(レースコンディション)を悪用します。この研究によれば、OSレベルで条件分岐を用いて実装された同期プリミティブは、Spectre v1攻撃を用いることで投機実行パス上で回避可能であることが示されており、標的ソフトウェアからの情報漏洩につながる恐れがあります。
TikTag
TikTagは、ARM CPUに搭載された新たなセキュリティ機能であるArm Memory Tagging Extension(MTE)を、投機的実行を利用して回避する攻撃です。この機能はOSが利用することで、バッファオーバーフローのような境界外メモリ違反(任意コード実行につながる恐れがあるもの)の悪用を難しくするものです。TikTag攻撃はソウル大学、Samsung Research、ジョージア工科大学の研究者チームによって開発され、2024年6月に研究論文として発表されました。これとは別に、アムステルダム自由大学の研究者たちは、MTEがSpectre-MTEと名付けた攻撃による投機的実行の探索に対して脆弱であることを既に示しており、StickyTagsと呼ばれる緩和策を提案しています。
Indirector
Indirectorは、Spectre v2のvariantである新たな投機的実行攻撃で、2024年7月に発表されました。カリフォルニア大学サンディエゴ校の研究者たちが開発したこの攻撃は、ハイエンドのIntel CPU(Raptor LakeおよびAlder Lake)に搭載された間接分岐予測器(IBP)と分岐ターゲットバッファ(BTB)を悪用し、精密な分岐ターゲット注入を行うことで、プロセスや権限レベルをまたいで機密データを漏洩させます。
Register File Data Sampling(CVE-2023-28746)
2024年3月に発表されたRegister File Data Sampling(RFDS)は、一部のIntel Atomプロセッサに影響し、一時的実行の後に浮動小数点、ベクトル、または整数レジスタに残った古いデータを、ローカルのソフトウェアが推測できてしまう脆弱性です。RFDSでは攻撃者がどの値を漏洩させるかを選ぶことはできず、レジスタファイルにたまたま残っていたデータのみが露出します。Intelはマイクロコードアップデートをリリースしました。
SinkClose(CVE-2023-31315)
2024年8月にIOActiveの研究者たちによって発表されたSinkCloseは、SMIロックが有効になっている場合でも、カーネルレベル(リング0)のアクセス権を持つアプリケーションがシステム管理モード(SMM)の設定を変更できてしまう脆弱性です。この欠陥はおよそ20年もの間発見されないままでした。ほぼすべてのAMD EPYC、Ryzen、Threadripper CPUに影響し、プロセッサの中で最も特権レベルの高い実行モードであるリング-2への権限昇格を可能にします。これにより、悪意あるインプラントをUEFIファームウェアに埋め込むことができてしまいます。AMDは影響を受けるチップの一部に対してマイクロコードアップデートをリリースしましたが、その適用可否はマザーボードベンダーがUEFIアップデートを提供するかどうかに左右されます。
Native BHI(CVE-2024-2201)
2024年4月、アムステルダム自由大学の研究者たちは、Branch History Injection(BHI)というSpectre v2のvariantが、権限のないeBPFを使わずとも悪用可能であることを実証しました。研究者たちはInSpectre Gadgetと呼ばれるツールを構築し、シンボリック実行を用いて悪用可能なSpectreガジェットを探索、Linuxカーネル内に1,500件以上を特定しました。これらのガジェットを利用して、初のネイティブBHIエクスプロイトを構築し、Intel CPU上でカーネルメモリを毎秒3.5KBの速度で漏洩させることに成功しています。対抗策としては、IntelのBHI_DIS_S緩和機能とソフトウェア対策が利用可能です。
GoFetch
GoFetchは、Apple製Mシリーズチップに搭載されたデータメモリ依存プリフェッチャ(DMP)を悪用するサイドチャネル攻撃です。2024年3月に複数の大学から成る学術研究者チームによって発表されたこの手法は、OpenSSLのDiffie-Hellman鍵交換、GoのRSA復号、そしてポスト量子暗号のCRYSTALS-KyberおよびCRYSTALS-Dilithiumアルゴリズムの一定時間実装から鍵を抽出するのに使われました。DMPは、M3チップではデータ非依存タイミング(DIT)ビットを使って無効化でき、M1・M2チップでは隠し設定ビットによって無効化が可能です。
EntrySign(CVE-2024-36347およびCVE-2024-56161)
2025年3月にGoogleの研究者たちによって発表された2件の脆弱性は、EntrySignと名付けられ、AMDのZen系CPU向けマイクロコードパッチの署名を偽造するために悪用可能です。EntrySignはZen 1からZen 5までのCPUに影響し、AMDのSecure Encrypted Virtualization-Secure Nested Paging(SEV-SNP)の安全性を損なう恐れがあります。ローカル管理者権限を持つ攻撃者が、機密性の高いゲスト環境に悪意あるマイクロコードを読み込ませることができてしまうためです。AMDはマイクロコードとLinuxカーネルの変更をリリースしました。
Transient Scheduler Attacks(CVE-2024-36348、CVE-2024-36349、CVE-2024-36350、CVE-2024-36357)
Transient Scheduler Attacks(TSA)は、Zen 3およびZen 4 CPUに存在する2種類のタイミングサイドチャネル脆弱性で、Microsoftの研究報告を調査していたAMDによって発見されました。この欠陥により、攻撃者はストアキューとL1データキャッシュから権限境界を越えてデータを漏洩させることができます。AMDは最も深刻な2種類のvariantを中程度の深刻度と評価し、プラットフォーム初期化ファームウェアおよびOSのアップデートをリリースしました。
Branch Privilege Injection(CVE-2024-45332)
Intel CPUに組み込まれた、Spectre v2の分岐ターゲット注入攻撃を防ぐためのハードウェア対策には競合状態(レースコンディション)が存在することが、2025年5月にETH Zurichの研究者によって報告されました。この欠陥は、2018年以降にリリースされたCoffee Lake RefreshからRaptor Lakeまでの世代のIntel CPUに影響し、デフォルトの緩和策が有効な状態で完全にパッチ適用済みのUbuntu 24.04システム上で、任意のカーネルメモリを漏洩させるのに使われました。Intelはマイクロコードアップデートをリリースしています。
VMScape(CVE-2025-40300)
2025年9月にETH Zurichの研究者によって発表されたVMScapeは、Spectre系の分岐ターゲット注入攻撃であり、AMDおよびIntel CPU上でゲスト仮想マシンとホストハイパーバイザーの分離を突破します。研究者たちはこの攻撃を使って、KVM/QEMUホストからディスク暗号化鍵を抽出しました。Linuxカーネルのメンテナーたちは、VM終了(VM exit)のたびに間接分岐予測バリアを追加することでこの問題を緩和しており、性能への影響はわずかにとどまっています。
SysBumps(CVE-2024-54531)
SysBumpsは、カーネル分離(kernel isolation)が有効なApple Mシリーズチップ搭載のmacOS上で、カーネルアドレス空間配置のランダム化(KASLR)を突破した初の攻撃です。ソウル崇実大学(Soongsil University)の研究者たちが2024年12月に発表した研究論文で説明されているこの脆弱性は、macOSがユーザー指定のポインタを処理する際に発生するSpectre系の脆弱性です。これにより、権限のない攻撃者がプロセッサに強制して、攻撃者が選択したカーネルアドレスを投機的に変換させ、そのアドレスが有効かどうかを明らかにできてしまいます。
LoongLeak
LoongLeakは、中国のLoongArch命令セットを採用したLoongson 3A5000および3A6000プロセッサに存在するアーキテクチャ上の脆弱性で、ドイツのCISPA Helmholtz情報セキュリティセンターの研究者たちがUSENIX Security 2026で発表した研究論文で説明されています。ReptarやZenbleedと同じクラスのアーキテクチャ上の欠陥に分類され、一時的実行時に限らず、退役した(リタイアした)命令ストリームからもデータを漏洩させる点が特徴です。この欠陥は、カーネルのAESディスク暗号化鍵、rootパスワードハッシュの一部を復元したり、アドレス空間配置のランダム化(ASLR)を数秒で突破したりするのに利用できます。ソフトウェア面での回避策としてはカーネル内で浮動小数点命令をエミュレートする方法がありますが、性能面で10倍から21倍のペナルティを伴います。
DRAMおよびGPUメモリ攻撃
- Rowhammer
- Rowhammer.js
- Drammer
- Flip Feng Shui
- ECCploit
- Throwhammer
- RAMBleed
- ZenHammer
- Phoenix
- LeftoverLocals
- GPUHammer
- GPUBreach
- GPUThor
- BadRAM
- Battering RAM
- DDRop
Rowhammer
Rowhammerは、SDRAMチップ内部で発生する物理現象で、セキュリティ上の意味合いを持つものです。同一の物理メモリセル行に対して短時間に大量の読み取りを行う、いわゆる「ハンマリング」という動作が発生すると起こります。これにより、ハンマリングされた行のセルから電荷が漏れ出し、隣接する行のセルの値を変化させてしまう場合があります。これはビットフリップと呼ばれる現象で、DDR3やDDR4をはじめとする最新のSDRAMチップにおいてセル密度が高まったことによって発生し得るものです。
Rowhammer効果自体は以前から知られ、文書化もされていましたが、2015年3月にGoogleのProject Zeroチームのメンバーが、この現象を利用した2つの権限昇格エクスプロイトを公表し、初めてセキュリティ上の意味合いを持つことを証明しました。
Rowhammer.js
Rowhammer.jsは、JavaScriptを介したRowhammer攻撃の実装で、悪意あるWebページを閲覧するだけで、この欠陥がブラウザ経由でリモートから悪用可能であることを証明しました。ブラウザベンダー各社はこのエクスプロイトに対する緩和策を追加しています。
Drammer – CVE-2016-6728
Drammerは、2016年にAndroidデバイスに対して実証されたRowhammer型のエクスプロイトです。それまで、モバイル機器に搭載されたメモリチップはこの種の攻撃の影響を受けないと考えられていました。
Flip Feng Shui
仮想マシンを標的としたRowhammer攻撃の実装例で、悪意あるゲストVMが、別の仮想マシンに影響する物理メモリのビットを制御された形で反転させることができます。研究者たちは、標的VM内のOpenSSH公開鍵認証を突破することでこれを実証しました。
ECCploit
ECCploitは、誤り訂正符号(ECC)機能を備えたSDRAMチップに対してもRowhammer型攻撃が有効であることを実証した攻撃です。この種のメモリは主にサーバーで使用されており、従来はRowhammerに対して免疫があると考えられていました。
Throwhammer
サーバー向けの高速ネットワークカードなどに搭載されているリモートダイレクトメモリアクセス(RDMA)機能を悪用することで、ネットワーク経由で悪用可能なRowhammer攻撃です。
RAMBleed
RAMBleedは、Rowhammer効果を利用してメモリセルの値を単に書き換えるのではなく、そこからデータを盗み出せることを初めて示した攻撃です。従来のRowhammer攻撃はビットフリップによりメモリの整合性を侵害するもので、権限昇格などの問題につながる可能性がありました。一方RAMBleedは、行ハンマリングとサイドチャネルを組み合わせて隣接するメモリセルに関する情報を推測し、最終的にデータを抽出します。この点において、MeltdownやSpectreの影響と似た性質を持ちます。
ZenHammer
2024年3月にETH Zurichの研究者によって発表されたZenHammerは、AMDのZen系CPUに対する初のRowhammer攻撃であり、かつDDR5メモリでビットフリップを引き起こした初の事例でもあります。研究者たちは、公開されていないAMDのDRAMアドレッシング機能をリバースエンジニアリングし、Target Row Refresh(TRR)緩和策を回避するためアクセスパターンをリフレッシュコマンドと同期させ、高い活性化率を達成するためにフラッシュ命令とフェンス命令のスケジューリングを工夫しました。AMDはセキュリティ情報を公開し、対策についてはDRAMおよびシステムベンダーに確認するようユーザーに案内しています。
Phoenix(CVE-2025-6202)
2025年9月にETH ZurichとGoogleの研究者によって発表されたPhoenixは、DDR5メモリの高度なTRR緩和策を突破するRowhammer手法で、AMD CPU搭載システムにおいて権限昇格を達成します。研究者たちはビットフリップを利用してページテーブルエントリを改変し、同居する仮想マシンからRSA-2048のSSH鍵を漏洩させ、最短わずか109秒でsudoバイナリ経由でrootを取得しました。この攻撃はAMDプラットフォームでのみ動作します。Intel CPUにはpTRRという緩和策が追加されているためです。
LeftoverLocals(CVE-2023-4969)
Apple、AMD、QualcommのGPUは、他のプロセスがローカルメモリに残したデータを漏洩させる可能性があります。この欠陥は2024年1月にTrail of Bitsの研究者によって発表され、AMD Radeon RX 7900 XT上ではGPU呼び出し1回あたり約5.5MBのデータを、大規模言語モデルがllama.cpp上で動作している場合にはクエリ1回あたり約181MBのデータを回収することに成功しました。これはモデルの応答内容を再構築するのに十分な量です。Appleは自社のA17およびM3チップでこの問題を修正しており、一部のQualcomm製・Imagination製デバイス向けにも修正が提供されました。
GPUHammer
GDDR6を搭載したNvidiaのディスクリートGPUに対する初のRowhammer攻撃であるGPUHammerは、2025年8月にトロント大学の研究者によって発表されました。この攻撃は、NvidiaのRTX A6000が使用するGDDR6メモリが、権限のないCUDAプログラムからビットフリップを起こされ得ることを示しました。Nvidiaはエラー訂正符号(ECC)を有効化することを推奨していますが、これによりA6000では性能が最大10%、メモリ容量が6.25%犠牲になります。
GPUBreach
GPUBreachは、GPUのページテーブルを破損させることで権限昇格を行うRowhammer攻撃です。トロント大学の研究者によって発見され、GPUHammerを土台としています。権限のないCUDAカーネルは、標的を絞ったページテーブルの破損を利用することで、他プロセスのGPUメモリを読み書きしたり、GPUライブラリから暗号鍵を漏洩させたり、モデルのGPUアセンブリを改変したりすることができます。研究者たちはさらに、Nvidiaのカーネルドライバに存在するメモリ安全性のバグを利用し、入出力メモリ管理ユニット(IOMMU)が有効な状態でもCPU上でカーネル書き込み権限を取得し、rootシェルを起動することに成功しました。
GPUThor
2026年8月にトロント大学の研究者によって発表されたGPUThorは、一部のNvidiaエンタープライズGPUのECC保護を突破するRowhammer攻撃です。従来のGPUHammerやGPUBreachは均一なハンマリングパターンを使用していたため、新しいメモリに搭載されたTarget Row Refresh(TRR)機構によって検知され、ECCによって訂正され得るものでした。GPUThorは、GPU DRAM上で初めて実用的な非均一ハンマリングを実現し、ECCが対処を想定していない2ビット、さらには3ビットのエラーを発生させます。ユーザーは、脆弱なGPU上で信頼できないコードを実行しないようにし、NvidiaのECCテレメトリを監視することが推奨されます。
BadRAM(CVE-2024-21944)
DRAMモジュール上のシリアルプレゼンス検出(SPD)チップを改ざんすることで、実際の容量の2倍を報告させ、AMD SEV-SNPなどを基盤とする信頼実行環境のメモリ保護を突破できます。この攻撃は2024年12月に発表されました。発見したのはKUルーヴェン大学、リューベック大学、バーミンガム大学の研究者たちです。この攻撃にかかる費用は約10ドルで、SPDチップがロックされていない一部のモジュールでは、物理的なアクセスなしに実行できる場合もあります。AMDは起動時にメモリ構成を検証するファームウェアをリリースしました。
Battering RAM
プロセッサとメモリモジュールの間に低コストのDDR4インターポーザーを挿入する、実行時メモリエイリアシング攻撃です。この攻撃は2025年12月にBlack Hat Europeで、KUルーヴェン大学の研究者によって発表されました。わずか50ドルのデバイスを使って実行時にメモリアドレスマッピングを操作し、BadRAM対策としてIntelとAMDが追加した起動時チェックを回避します。研究者たちは、Intel Software Guard Extensions(SGX)で保護されたメモリへの任意の平文読み書きアクセス権を取得し、プラットフォームプロビジョニング鍵を抽出、アテステーションレポートを偽造し、AMD SEVで保護された仮想マシンにバックドアを埋め込むことに成功しました。この攻撃には物理的なアクセスが必要であり、両社の脅威モデルの範囲外であるとして、IntelもAMDも修正の予定はないとしています。
DDRop
2026年9月にKUルーヴェン大学、ETH Zurich、ダラム大学、Googleの研究者によって発表されたDDRopはメモリバス攻撃で、Intel Trusted Domain Extensions(TDX)、Intel Scalable SGX、AMD SEV-SNPのメモリ完全性保証を突破します。159ドルのインターポーザーを使ってDDR5コマンドバス上でエラーを強制発生させ、メモリモジュールがそのエラーを報告するために使う信号を抑制します。Intel TDXでは、ページテーブルの設定中に書き込みが失われることを利用し、研究者たちは独自のページテーブルエントリを注入し、保護されたメモリを読み取り、機密仮想マシンをデバッグモードに強制移行させ、攻撃者が選んだ測定値を使ってリモートアテステーションレポートを偽造することに成功しました。IntelとAMDは、この手法を自社が公表している脅威モデルの範囲外に分類しています。
編集部注:本記事は2019年7月に初公開され、2022年8月に加筆修正されたものです。新たな脆弱性が明らかになるたびに更新を続けています。