Impervaは10月22日(米国時間)、「ShadyShader: Crashing Apple Devices with a Single Click|Imperva」において、Apple MシリーズチップのGPUドライバーに存在した脆弱性の詳細について伝えた。この脆弱性は「CVE-2023-40441」として追跡されており、iOS 17、iPadOS 17、macOS Sonoma 14にて修正されている。

  • ShadyShader: Crashing Apple Devices with a Single Click|Imperva

    ShadyShader: Crashing Apple Devices with a Single Click|Imperva

GPUリソースを枯渇させる攻撃「ShadyShader」とは

3次元コンピューターグラフィックス(3DCG: three-dimensional computer graphics)の画像生成(レンダリング)では、シェーダーと呼ばれる比較的小さな画像処理プログラムをGPU上で実行し、陰影などの立体表現を実現する。

Webブラウザが提供する3DCG(WebGL)においても、GoogleのANGLE(Almost Native Graphics Layer Engine)やOpenGL ES(OpenGL for Embedded Systems)などを介してシェーダーを実行する。AppleデバイスではWebGLコンテンツのロード時に、GLSL(OpenGL Shading Language)と呼ばれるシェーディング言語で記述されたシェーダーをプラットフォーム固有のMSL(Metal Shading Language)に変換して実行する。

今回詳細が明らかにされた「ShadyShader」と呼ばれる攻撃手法では、WebGLなどから特別に細工したシェーダーを読み込ませ、有限だが膨大な計算量となるシェーダーを実行させる。その結果、GPUは計算を完了できず長時間応答を停止する。

一般的にGPUドライバーはシェーダーの変換(最適化)処理時に無限ループを検出してブロックする。しかしながら、AppleのGPUドライバーは有限だが膨大な計算量を検出できず、応答を停止したとされる。

  • 有限だが膨大な計算量のシェーダーの例 - 引用:Imperva

    有限だが膨大な計算量のシェーダーの例 引用:Imperva

影響と対策

AppleデバイスはGPUの応答が一定時間停止するとウオッチドッグタイマー(システムの正常動作を監視する機能)によりシステムが強制再起動される。そのため、悪意のあるWebサイトにアクセスすると即座にシステムが応答しなくなり、数分後に再起動することになる。

この脆弱性はiOS 17、iPadOS 17、macOS Sonoma 14にて修正された。まだアップデートを実施していないユーザーには速やかなアップデートが推奨されている。

なお、悪意のあるWebサイトにアクセスして再起動した場合、Webブラウザはセッションの復元により再起動を繰り返すことになる。システムをアップデートせずにWebブラウザを開く必要がある場合は、JavaScriptの実行を無効にすることで影響を回避することができる。