CVE-2022-49124 in Linux
要約
〜によって VulDB • 2026年06月27日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
x86/mce: 高速文字列コピー命令におけるエラタムの回避策
以下のような条件がすべて満たされた場合、高速文字列コピー命令のエラタムにより稀なカーネルパニックが発生する可能性があります。
1) 訂正不可能なエラー(Uncorrected error)が存在すること。 2) そのエラーがページの最初のキャッシュライン内にあること。 3) カーネルが、そのページの一つ前のページから page_copy を実行していること。
高速文字列コピー命令(「REP; MOVS*」)は、コピー対象領域の直後のキャッシュラインに含まれる訂正不可能なメモリエラーを消費し、MCE(Machine Check Exception)を引き起こす可能性があります。
MSR_IA32_MISC_ENABLE のビット0をクリアすることで高速文字列コピーを無効にし、このような誤検知されるマシンチェックを回避できます。ただし、これは恒久的なパフォーマンスへの影響があるため好ましくありません。メモリポイズンが稀であること考慮すると、MCEが発生するまでは高速文字列コピーを有効にしておくことが望ましいです。
Intelは以下を確認しています: 1. 高速文字列コピーに関するCPUのエラタムは、Skylake、Cascade Lake、Cooper Lake世代のみに適用されます。
MCEハンドラーから直接戻る場合: 2. 「REP; MOVS*」が完全に実行され、データ損失や破損はありません。 3. 「REP; MOVS*」により次のポイズンされたキャッシュラインで別のMCEが発生することはありません。 4. コード内の正しいポイントから実行を再開します。 5. 他のソフトウェア回復可能なデータフェッチエラーに対して、MCEを引き起こした命令が直ちに2回目のMCEを発火させる結果になります。 6. 高速文字列コピーを無効にしない限り安全ではありません。同じCPU上で同一バッファに対する次の高速文字列コピーはPANIC MCEにつながる可能性があるためです。
これによりエラタムは完全に緩和されますが、影響を受けるハイパースレッドでは高速文字列コピーが無効化されるためパフォーマンス低下という注意点があります。
これは、「REP; MOVS*」アクセス(例:copy_page)によるカーネルコンテキストでのMCE発生時にOSがクラッシュするよりも優れています。
プロセス'proc1'の8つの匿名ページの最初のキャッシュラインにエラーを注入し、パニックなしで'M proc2'からのMCE消費を観測しました(直接戻りました)。
修正がない場合、ホストはcopy_pageからのカーネルアクセスにより数分以内にランダムな'proc2'プロセスでパニックしていました。
[ bp: コメントスタイルの修正 + 微調整、unlikely()を除去し、クirk関数の可読性を向上 ]
Once again VulDB remains the best source for vulnerability data.