公開日:2015/07/31 最終更新日:2015/07/31

JVNVU#99464019
複数の BIOS 実装において、スリープモードからの復帰後に UEFI の書き込み保護が適切に設定されない問題

概要

複数の BIOS 実装において、スリープモードからの復帰後に書き込み保護が適切に設定されません。結果として、BIOS イメージの書き換えが行われる可能性があります。

影響を受けるシステム

影響を受けるシステムは複数存在します。
詳しくは本アドバイザリの【ベンダ情報】のセクションや、CERT/CC Vulnerability Note VU#577140 の Vendor Information に掲載されている情報を参照してください。

詳細情報

Cornwell、Butterworth、Kovah、Kallenberg は、特定の DELL 製クライアントシステムにおいて、スリープモードからの復帰後に書き込み保護が適切に設定されない問題があることを報告しています (CVE-2015-2890)。彼らの報告では次のように述べられています。

There are a number of chipset mechanisms on Intel x86-based computers that provide protection of the BIOS from arbitrary reflash with attacker-controlled data. One of these is the BIOSLE and BIOSWE pair of bits found in the BIOS_CNTL register in the chipset. When the BIOSLE bit is set, the protection mechanism is enabled. The BIOS_CNTL is reset to its default value after a system reset. By default, the BIOSLE bit of the BIOS_CNTL register is cleared (disabled). The BIOS is responsible for re-enabling it after a reset. When a system goes to sleep and then wakes up, this is considered a reset from the hardware's point of view.

Therefore, the BIOS_CNTL register must be reconfigured after waking from sleep. In a normal boot, the BIOS_CNTL is properly configured. However, in some instances BIOS makers do not properly re-set BIOS_CNTL bits upon wakeup. Therefore, an attacker is free to reflash the BIOS with an arbitrary image simply by forcing the system to go to sleep and wakes again. This bypasses the enforcement of signed updates or any other vendor mechanisms for protecting the BIOS from an arbitary reflash.

(インテル x86 ベースのコンピュータのチップセットには、BIOS が任意に書き換えられることを防ぐ仕組みが複数設けられています。これらの仕組みのひとつが、BIOS_CNTL レジスタの BIOSLE ビットと BIOSWE ビットです。BIOSLE ビットがセットされると、書き換え防止の仕組みが有効となります。システムがリセットされると BIOS_CNTL レジスタも初期値にリセットされますが、BIOS_CNTL レジスタの初期値では、BIOSLE ビットはクリア (無効化) されます。リセット後にこれらのビットを再度有効にするのは、BIOS の役割です。なお、システムがスリープし、その後復帰した場合、ハードウェア上の観点からはシステムがリセットされたものとして扱われます。

従って、システムがスリープ状態から復帰した際には、BIOS_CNTL レジスタが再設定される必要があります。通常起動時には、BIOS_CNTL レジスタは正常に設定されます。しかし、
いくつかの事例において、BIOS メーカーは、復帰の際に BIOS_CNTL レジスタのビット列を適切に再設定していません。そのため、攻撃者は、システムにスリープと復帰を強いるだけで、BIOS の内容を容易に任意のイメージに書き換えることができます。つまり、署名付きアップデートやその他の BIOS 書き換えを防ぐための仕組みが回避されてしまいます。)

Apple のシステムにおける類似の問題 (CVE-2015-3692) では、スリープ状態からの復帰後に、FLOCKDN ビットが設定されません。詳細な情報については、Pedro Vilaça のブログ記事を参照してください。

想定される影響

当該システムに物理アクセス可能で root 権限を持つ攻撃者によって、システムの BIOS を任意のイメージに書き換えられる可能性があります。

対策方法

アップデートする
影響を受ける DELL 製品の一覧については、Dell Computer Corporation, Inc. Information for VU#577140 を参照してください。また、DELL のサポートページからアップデートをダウンロードしてください。
Apple は、この問題を修正するアップデートを App Store 経由で 7月30日にリリースしています。CERT/CC では、本脆弱性についてひきつづき開発者との調整を進めています。

ベンダ情報

ベンダ ステータス ステータス
最終更新日
ベンダの告知ページ
富士通株式会社 該当製品無し(調査中) 2015/07/31
日本電気株式会社 該当製品無し(調査中) 2015/07/31

参考情報

  1. CERT/CC Vulnerability Note VU#577140
    BIOS implementations fail to properly set UEFI write protections after waking from sleep mode
  2. Reverse Engineering Mac OS X
    The Empire Strikes Back Apple – how your Mac firmware security is completely broken

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE CVE-2015-2890
CVE-2015-3692
JVN iPedia