インテルx86マシンの奥深くでは人知れず「MINIX 3」が動作しており、脆弱性を作り出している。Googleらはそれを排除しようとしている

2017年11月8日


インテルのx86プロセッサを用いたシステムでは、その奥深くで人知れずMINIX 3を含む2つほどのカーネルがプロセッサ上で稼働しているOSとは別に作動しており、それが脆弱性を作り出しているとGoogleのエンジニアらが警告し、それを取り除こうという動きを見せています。

それが、10月23日から26日までチェコ共和国のプラハで行われたOpen Source Summit EuropeでGoogleのRonald Minnich氏のセッション「Replace Your Exploit-Ridden Firmware with Linux」(脆弱性にまみれたファームウェアをLinuxで置き換える)のセッションで説明されたことでした。

これを、海外のメディアが次のように取り上げています。

タイトルを見るとMINIXが強調されていますが、Open Source Summit Europeの公式ページのセッション概要では、以下のようにUEFIに焦点が当たっています。

With the WikiLeaks release of the vault7 material, the security of the UEFI (Unified Extensible Firmware Interface) firmware used in most PCs and laptops is once again a concern. UEFI is a proprietary and closed-source operating system, with a codebase almost as large as the Linux kernel, that runs when the system is powered on and continues to run after it boots the OS (hence its designation as a “Ring -2 hypervisor"). It is a great place to hide exploits since it never stops running, and these exploits are undetectable by kernels and programs.

WikiLeaksのvault7文書では、ほとんどのPCやラップトップで使われているUEFI(Unified Extensible Firmware Interface)へのセキュリティの懸念が再燃しています。UEFIはプロプライエタリかつクローズドソースのOSであり、コードベースはほぼLinuxカーネルと同じほどの大きさがあります。これはシステム起動時に作動を開始し、OSブート後も作動しています(“リング -2のハイパーバイザとして作られている)。これは脆弱性(エクスプロイト)が隠れるのに最適な場所で、というのも決して止まらず、しかもカーネルやプログラムからは検出できないのです。

Our answer to this is NERF (Non-Extensible Reduced Firmware), an open source software system developed at Google to replace almost all of UEFI firmware with a tiny Linux kernel and initramfs. The initramfs file system contains an init and command line utilities from the u-root project (http://u-root.tk/), which are written in the Go language.

これに対する私たちの答えがNERF(Non-Extensible Reduced Firmware)です。Googleで開発されたオープンソースで、UEFIファームウェアのほとんどすべてを小さなLinuxカーネルとinitramfsで置き換えます。このinitramfsファイルシステムはinitとu-rootプロジェクトのコマンドラインユーティリティを含んでおり、Go言語で記述されています。

Replace Your Exploit-Ridden Firmware with Linux

セッションのスライド動画がともに公開されていますので、それらを見てみるとUEFI、MINIX3のいずれもが対象となっているようです。その部分の概要を見ていきましょう。

GoogleのRonald Minnich氏。

fig

まず冒頭で、このセッションの内容はMinnich氏だけではなく、彼を含むGoogleの4人に加え、シスコやTwo Sigmaなど複数のエンジニアが関わったものと紹介されます。

Minnich氏は、現在のx86プラットフォームではLinuxとハードウェアのあいだに少なくとも2個半のカーネルが存在し、その部分に脆弱性の可能性があると指摘。

fig

その構造を示した図が下記です。通常、OSの特権モデルとしてユーザーランドの「リング3」、カーネルが実行される「リング0」があるとされています。この図では、その下に存在する仮想化ハイパーバイザを便宜上「リング -1」(リングマイナス1)と表現。

Minnich氏はさらにその下のリングがあると指摘します。

「リング -2」(リングマイナス2)には、カーネルと半カーネルが存在し、CPU全体をコントロールしています。SMM(System Mangement Mode)半カーネルは8086の16ビットモードをトラップ。一方のUEFIカーネルは64ビットページモードで実行されています。

そして問題の「リング -3」(リングマイナス3)カーネルにはインテル独自のManagement Engine、ISH(Integrated Sensor Hub)、IE(Innovation Engine)がMINIX 3で実行されていると説明。

(追記:Management EngineはCPUとは別にチップセット内にあるマイコンで動作しているとのこと。これに合わせてタイトルを変えました)

Minnich氏はこの「リング -3」について「誰もが心配している」と指摘します。

fig

私は実に怖い

「リング -2」「リング -3」では、IPスタック、ファイルシステム、Webサーバなど、さまざまなコンポーネントが存在します。

fig

こうしたx86マシンの内部に隠された2個半のカーネルには脆弱性の可能性があり、非常に怖い存在だとするとMinnich氏。

fig

「もしあなたが怖くないのだとしたら、私の説明がよくなかったのだろう。私は実に怖い」(Minnich氏)

「リング -2」「リング -3」を置き換えるNERF

前述のセッション概要ではUEFIに対する懸念が焦点として示されていましたが、セッション全体としては「リング -2」「リング -3」の両方に対する脆弱性の可能性が示され、その全体を置き換える提案がなされています。

fig

それがNERF(Non-Extensible Reduce Firmware)です。

fig

ここからNERFの解説が行われるのですが、詳しくはぜひスライドや動画などでご確認ください。


このエントリーをはてなブックマークに追加
follow us in feedly

カテゴリ Windows / Linux / OS


次の記事
AWS、KVMベースの新ハイパーバイザ採用を明らかに。「C5インスタンスタイプ」から

前の記事
[速報]セールスフォース・ドットコム「mySalesforce」発表。マウス操作でモバイルアプリを開発、App StoreやGoogle Playで公開。Dreamforce 2017


カテゴリ



Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed



新着記事 10本


PR - Books


fig

fig

fig