ニュース

Google、ユーザーの知らないところで動くUEFIの脆弱性に警鐘

~オープンソース化で回避を提唱

ユーザーが知らないところで動作するOS(Minnich氏の講演のスライドより)

 The Linux Foundationが10月25日にチェコ共和国で開いた開発者イベント「Embedded Linux Conference 2017」で、GoogleのソフトウェアエンジニアRonald G. Minnich氏は、x86システムで広く使われているUEFIファームウェアについて興味深い内容を発表した。

 UEFI(Unified Extensible Firmware Interface)ファームウェアは、大雑把に言ってしまえばPCの根幹を司るローレベルなOSだ。このローレベルなOSでは、IPスタックやファイルシステム、ドライバ、Webサーバー、自分のパスワードといった、セキュリティの問題上自由にアクセスされては困るものが動いており、そのためx86プロセッサ上では、ユーザーランド(Ring 3)、OS(Ring 0)、そしてXenといったハイパーバイザーOS(Ring -1)の特権レベルを超える、“Ring -2”と“Ring -3”上で動作している。UEFIの動きをユーザーが知るよしもなく、その開発もプロプライエタリのクローズドソースで行なわれている。

 ところが近年、UEFIをハッキングする手法が確立されつつあり、脆弱性が発見されUEFIが悪意のあるものに書き換わってしまうと、ユーザーはそれを知る術がないまま、事実上、永久的に攻撃された状態下に置かれてしまう。

 とりわけ致命的なのがRing -3で動作しているIntel Management Engine。Intel Management Engineはすべてのネットワークの管理機能を有しているほか、PC全体の管理機能も司っている。たとえPCの電源がオフの状態でも動作しているので、ここを乗っ取ってしまえば攻撃者の思うがままになるわけだ。

 そこでGoogleは現在、このUEFIに置き換わる「Non-Extensible Reduce Firmware:NERF」プロジェクトを進行させているという。NERFの目的は以下の6つだ。

1.ファームウェアの機能を制限することで害を減らす
2.ファームウェアの動きをより可視化する
3.すべてのランタイムコンポーネントを排除(ただしIntel MEのすべてをなくすことは難しいので、WebサーバーとIPスタックを取り除く)
4.UEFIのIPスタックとそのほかのドライバの除去
5.MEとUEFIの自分自身をフラッシュする能力の削除
6.フラッシュおよびアップデートをLinux側に管理させる

 講演では、Intel MEの機能の一部を削除する方法から、UEFIのコンポーネントの選別、ブートをLinuxに置き換え、UEFIの一部をリビルドする手順などが紹介されている。

 UEFIの脆弱性を危惧している企業として、Google以外にもHPが挙げられ、同社の法人向けPC「EliteBook」シリーズには、UEFIの改ざんを検出/修復する仕組みが取り入れられている。しかしこうした問題は、1社2社のみならず、業界全体で対処していく必要があると改めて認識させられる。

Ronald G. Minnich氏の講演