Lenovo ノートに新たな UEFI ファームウェアの脆弱性:70 機種以上に深刻な影響が

New UEFI firmware flaws impact over 70 Lenovo laptop models

2022/07/13 BleepingComputer — Lenovo のノートパソコン群で使用されている UEFI ファームウェアには、3つのバッファ・オーバーフローの脆弱性が存在するため、悪用に成功した攻撃者が Windows インストールのスタートアップ・ルーチンを乗っ取る可能性があるという。Lenovo が発行したセキュリティ・アドバイザリは、3つの深刻度 Medium の脆弱性 CVE-2022-1890/CVE-2022-1891/CVE-2022-1892 を公開するものとなっている。

最初の脆弱性は、一部の Lenovo ノートブック製品で使用されている ReadyBootDxe ドライバーの問題であり、別の2つの脆弱性は、SystemLoadDefaultDxe ドライバーのバッファ・オーバーフローのバグである。この2つ目のドライバーは、Yoga/IdeaPad/Flex/ThinkBook/V14/V15/V130/Slim/S145/S540/S940 といった、Lenovo の製品ラインで使用されており、70 種類以上のモデルに影響を及ぼしている。


影響を受けるモデルの詳細については、セキュリティ・アドバイザリの下部にある、Lenovo の製品影響表を参照してほしい。

ESET のアナリスト発見し、Lenovo に報告した3つのバグの内容は、その悪用に成功した攻撃者が OS の実行フローを乗っ取り、セキュリティ機能を無効化することができるというものだ。

ESET Research は、「これらの脆弱性は、UEFI Runtime Services の関数GetVariable に渡される、DataSizeパラメータの不十分な検証により発生する。攻撃者は、特別に細工された NVRAM 変数を作成し、2回目の GetVariable 呼び出しで、Data バッファのバッファ・オーバーフローを引き起こす可能性がある」とツイートで説明している。

Variable to trigger exploitation of CVE-2022-1892
Variable to trigger exploitation of CVE-2022-1892 (ESET Research)


サイバーセキュリティ・コミュニティが、この問題を特定/修正することを支援する ESET は、GitHub で自由に利用できる、Binarly の UEFI ファームウェア・アナライザ efiXplorer に対して改良されたコードを提出している。

OS をハイジャックする

UEFI ファームウェア攻撃は、Windows に組み込まれたセキュリティ保護機能が有効になる前の、OS の起動プロセスの早い段階で、脅威アクターがマルウェアを実行できるため、非常に危険である。

このような早期のアクセスにより、マルウェアは OS レベルのセキュリティ保護を回避/無効化し、検出を回避し、ディスクがフォーマットされた後であっても、その機能を持続できる。

スキルの低いリモートの脅威アクターが、これらの欠陥を悪用することは容易ではないが、標的となるマシンにアクセスする能力のあるハッカーは、この脆弱性を利用して、スティルス性を維持しながら強力な侵害を行う可能性がある。

このセキュリティリスクに対処するため、対象製品のユーザーに対しては、Lenovo の公式ソフトウェア・ダウンロード・ポータルサイトに掲載されている、最新バージョンのドライバーをダウンロードすることが推奨される。

使用している製品が特定できない場合は、Lenovo が提供する自動オンライン検出機能を利用してほしい。

UEFI (Unified Extensible Firmware Interface) とは 、BIOS (Basic Input Output System) に代わるものであり、オペレーティングシステム やハードウェアの技術進歩に合わせて進化したものとなっています。したがって、このレイヤにおける脆弱性への対応は、ちょっと厄介なものになります。関連するトピックとしては、2月2日の「UEFI ファームウェアで発見された 23件の脆弱性:ハードウェア・ベンダー 25社に影響」や、3月8日の「HP が 16 件の UEFI ファームウェア・バグに対応:永続的マルウェア埋め込みの可能性」、3月22日の「Dell のノート PC の脆弱性が FIX:UEFI ファームウェアで任意のコード実行」などがあります。

%d bloggers like this: