ESETのセキュリティ専門家が無数の安全とされるサンプルの中から、ごく少数の脅威となりうるUEFIコンポーネントを見つけ出す研究を行った。専門家たちが膨大なサンプルを調査するために採用したのは機械学習だった。どのようなモデルを構築したのか、詳細をお伝えしていく。
この記事は、ESETが運営するマルウェアやセキュリティに関する情報サイト「Welivesecurity」の記事を翻訳したものである。
ここ数年、UEFI (Unified Extensible Firmware Interface) に関連するセキュリティが注目を集めている。しかし、UEFIはさまざまな制約もあるため、過去にこれを悪用したマルウェアはほとんど検出されてこなかった。最初のUEFIルートキット (LoJaxとして知られる) が発見されたことで、ESETでは膨大なUEFIの状況を検索し、新たなUEFIの脅威を確実に発見できるシステムの構築を開始するに至った。
ESETは当初、自らが所有するUEFIスキャナーを用いて収集したテレメトリデータ(遠隔的に取得したデータ)を活用し、UEFI実行ファイルのための特別な処理用パイプラインを考案した。これは機械学習を利用して、受信したサンプルの中から異常を検出するものである。このシステムは疑わしいUEFI実行ファイルを特定する強力な機能の他に、UEFIの状況をリアルタイムに監視できる。サンプルをすべて手動で解析しなければならない場合と比較すると、実に解析者の作業負荷を最大90%も低減することが可能だ。
この処理用パイプラインでUEFIの脅威を探索する中で、興味深いUEFIコンポーネントがいくつか発見された。これらは、UEFIファームウェアに潜むバックドアとOSに付随するパーシステンスモジュール *1に関連するものと、大きくふたつに分類できる。中でも、一番注目を集めたのが「ASUSバックドア」だ。このUEFIのファームウェアに潜むバックドアは数種類のASUSラップトップモデルで発見され、ESETの通知後にASUSTeK Computer Inc.(以下ASUS(エイスース)社)は修正を行っている。
*1 インテルの一部のビデオカードに付随するドライバーのことを指す。
調査レポート「A machine-learning method to explore the UEFI landscape」(英文)
そもそもUEFIとは?
UEFIはOSとデバイスのファームウェアの間にあるインターフェイスを定めた規格である。また、UEFIファームウェアの主要なAPIである一連の標準サービス (「ブートサービス」と「ランタイムサービス」) を定めたものでもある。UEFIは、BIOSの技術的な制約を解決するために導入され、従来のBIOS (基本的な入出力システム) ファームウェアインターフェイスの後継となるものだ。
UEFIファームウェアは、SPIフラッシュメモリ (システムのマザーボードにはんだ付けされたチップ) に格納されている。そのため、OSの再インストールやハードドライブの交換でも、ファームウェアのコードが影響を受けることはない。UEFIファームウェアはモジュール形式で構築されており、何百とまではいかなくても、何十もの異なる実行ファイル/ドライバーが含まれている。
攻撃対象となるUEFI
ファームウェアの変更は複数の方法があるものの、対象となるコンピューターのセキュリティレベルが低下する恐れがある。
最も一般的なものとして知られるのは、リモート診断、またはサービスを提供しているコンピューターメーカーによるファームウェアの変更だ。不適切なプロセスを経ることでバックドアとして機能する。他にも、攻撃者が対象のデバイスに実際にアクセスできる場合、手動で改ざんして悪意のある攻撃を行うこともある。そして、ファームウェアを修正できるマルウェアを利用した遠隔攻撃も方法として存在する。
この3つ目の方法については、ユーザー環境で初めて検出されたUEFIルートキット「LoJax」に関するESETの研究報告書にまとめられている。バルカン諸国だけでなく中欧や東欧の政府組織を狙った攻撃において、Sednit APTグループは悪意のあるUEFIモジュールを被害者のシステムに潜り込ませることに成功した。このモジュールは、ブートプロセス中にマルウェアをディスク内に侵入させ、実行することができる。これは、特に継続的な潜伏を可能にする方法であり、OSの再インストール、ハードディスクの交換でも排除できないことも特徴的である。
UEFIの状況を探るための機械学習法
LoJaxのようなマルウェアが見つかることは極めて稀である。UEFI実行ファイルは無数に存在するものの、悪意のあるものはごく一部に過ぎない。過去2年の間だけでも、(合計60億のうち) 250万以上のUEFI実行ファイルをチェックしてきているが、これらをすべて手動で解析するのは現実的ではない。そのため、人の目でチェックするサンプルの数を削減できるように、自動システムを考案する必要があったのだ。この膨大なチェック量という問題の解決に対し、ESETではUEFI実行ファイルの異常な特性を検知することで、該当しないサンプルをハイライトするシステムを構築することにした。
ESETの研究では、選択した手法のパフォーマンスとリアルタイム機能をすべて検討した上で、最終的なスコアリングアルゴリズムを生成するため、プロセス全体のアプローチをいくつか調査し、比較することにした。このアプローチには、特徴抽出、テキストの埋め込み、効率的なストレージによる多次元データの埋め込み、サンプルに近似するクエリが含まれる。受信したUEFIバイナリーに最も近しいものを効率的に検索する方法を確立し、受信される実行ファイルに0から1までの類似性スコアを割り当てるためのシステムを構築した。このシステムにより、受信ファイルを過去のファイルと比較・検証が可能となる。アナリストは、類似性におけるスコアが最も低いファイルを最優先で検査することで、効率的な調査が可能となる。
ESETで実施した概念実証(PoC)により、このシステムの有用性が示されることとなった。それまでESETのデータセットに含まれていなかったLoJaxなどの既知かつ悪意のあるUEFI実行ファイルを用い、このシステムのテストを行ったところ、システムはこれらのUEFI実行ファイルに対し、類似性のスコアを0と判定した。要するに、過去に同様のものが存在しないという結論を導き出したのである。
このテスト結果から次のような確信に至った。仮に、類似する別のUEFIの脅威が登場したとしても、その脅威を異常と認識して迅速に解析することで、必要に応じた検出が可能ということだ。また、機械学習を利用したアプローチは解析者の作業負荷を(受信サンプルをすべて解析する場合と比較して)最大90%低減することができる。そして、受信される新たな各UEFI実行ファイルがデータセットに追加、処理・インデックス作成されることで、ESETのソリューションはUEFIの状況をリアルタイムに監視することが可能となっている。
脅威となるUEFIコンポーネントの探索
悪意のあることが判明しているサンプルを用いたESETの処理用パイプラインのテストを行い、脅威となるUEFIモジュールの探索を開始した。そこで発見した興味深いコンポーネントは、ふたつのカテゴリー (UEFIファームウェアに潜むバックドアとOSに付随するパーシステンスモジュールに関連するもの) に分類することができる。
UEFIファームウェアに潜むバックドア
まず、UEFIファームウェアに潜むバックドアとはどのようなものだろうか。ほとんどのUEFIファームウェアのセットアップでは、ブートプロセスの初期段階に無断アクセスされないようにシステムをパスワードで保護することが可能となっている。システムのブートや、ディスクへのアクセスを防止するための最も一般的な方法は、パスワードを設定することだ。この方法で、UEFIファームウェアのセットアップへのアクセスを保護することができる。UEFIファームウェアに潜むバックドアとは、ユーザーが設定したパスワードを用いずに、保護をすり抜けることができるメカニズムである。
このようなUEFIファームウェアに潜むバックドアはごく一般的ではあるが(主に、コンピューターの所有者がパスワードを忘れた場合に復旧メカニズムとして使用)、セキュリティ面では多大な悪影響を及ぼしかねないものである。攻撃者が対象のコンピューターに実際にアクセスし、さまざまなセキュリティメカニズムをすり抜けるだけはない。攻撃者のことをよく知らないユーザーや、パスワードを忘れたら自分のコンピューターをブートできるはずがないと思い込んでいるユーザーに偽りの安心感を与えることになるのだ。
ESETが解析した最も一般的なUEFIファームウェアバックドアは、いわゆるASUSバックドアである。ESETの研究によると、バックドアが仕掛けられたまま出荷されたASUSラップトップモデルは少なくとも6種類ある。しかし、実際の数はそれよりもはるかに上回るものと見込まれる(市販されているASUSラップトップモデルをすべて手動で確認するのはESETの研究対象外であるため行っていない)。2019年4月にESETがASUS(エイスース)社にバックドアについて通知した後、同社は問題点を解決し、2019年6月14日にファームウェアのアップデートを発表した。
OSに付随するパーシステンスモジュール
最後になるが、ESETが調査したOSに付随するパーシステンスモジュール (OSレベルでソフトウェアをインストールするファームウェアコンポーネント) について説明をしておこう。これらのパーシステンスモジュールを用いる場合、セキュリティ上の主な問題は次のとおりである。ファームウェアのアップデートは複雑であるため、脆弱なファームウェアコンポーネントを搭載したまま出荷されたコンピューターは、その寿命が尽きるまで脆弱性が維持される可能性が高い。このため、ファームウェアのパーシステンス(状態を保存・維持すること)を極力避け、盗難防止ソリューションのように、必要な場合のみに限定するのが賢明だろう。
ESETの研究の詳細については、「A machine-learning method to explore the UEFI landscape (英文)(UEFIランドスケープを探るための機械学習法)」の全文を参照してほしい。