BootkittyはUEFI bootkitです。
UEFIにいろいろなシステム要素が読み込まれる際に、あらかじめマルウェアを読み込んでしまっておけば、検出する機構もまだ動作する前なので悪事を検出されない、という作戦のマルウェアです。
これまでいくつものUEFI bootkitが登場してきています。
しかし、それらはこれまではWindows環境を想定したものでした。
今回注目しているBootkittyは想定環境がLinuxになっているという点が異なります。
Linux環境を想定したUEFI bootkitは1つ目ということになります。
どんな特徴があるでしょう。
- 強制的な読み込み
UEFI機構には読み込ませるモジュールを制限するための機構が搭載されています。
このBootkittyはこれを回避します。
UEFIセキュリティ認証プロトコルであるEFI_SECURITY2_ARCH_PROTOCOLとEFI_SECURITY_ARCH_PROTOCOLをフックし、セキュア ブートの整合性検証チェックをバイパスします。
そして、セキュリティ ポリシーに関係なくブートキットが読み込まれるようにします。 - GRUBの署名検証の回避
現在利用されている多くのLinuxの起動にはGRUBが使用されます。
そのGRUBに搭載されているバイナリのブートローダーの整合性チェックの機構をGRUBのなかの関数をフックすることで回避します。 - kernel moduleの署名検証の回避
さらに、通常では動作の期待できるものとしてkernelがkernel moduleを読み込む際に使用される署名検証機構も回避します。
通常であれば、module_sig_check関数が署名を確認して判定結果を戻し、不正なものは読み込まない動きをできるのですが、Bootkittyの動作する環境においては、この判定結果が常に正常値を返すようになってしまいます。
これにより、不正なモジュールも読み込ませてしまうことができる状態になります。 - 共有オブジェクトの読み込み
そして、さらにOSの起動時にマルウェアの指定する共有オブジェクトを読み込ませる設定を仕込んでしまいます。
これらの活動の組み合わせにより、Bootkittyは動作可能な状態となります。
これらの機能が整うと、このマルウェアは非常に強力なものとなりそうです。
現時点では開発段階にあるためか、いろいろな点が十分な状態になっていません。
特定のディストリビューションのみが対象で、さらに特定のGRUBのバージョンのみが対象の状態になっています。
各種機能もまだ実装中のためか、システムクラッシュとなってしまうことも多いようです。
しかし、開発が進めば、いずれこれらの問題は解消していってしまうでしょう。
Bootkittyの登場によって、UEFI bootkitはWindows環境においてだけ注意していればよい、という認識は過去のものとなってしまいました。
実施しなくてよい脅威対策などというものはない、ということなのかもしれません。
Bootkitty: Analyzing the first UEFI bootkit for Linux
https://www.welivesecurity.com/en/eset-research/bootkitty-analyzing-first-uefi-bootkit-linux/
この記事をシェア |
---|