Linux malware

Linuxシステムに特化した初のUEFIブートキットが発見され、これまでWindowsを対象としていた、ステルス性が高く、駆除が困難なブートキットの脅威が変化していることが明らかになった。

Bootkitty」と名付けられたこのLinuxマルウェアは、実際の攻撃で展開される本格的な脅威というよりは、一部のUbuntuのバージョンと設定でのみ動作する概念実証である。

ブートキットは、コンピュータのブートプロセスに感染し、オペレーティングシステムの前にロードし、非常に低いレベルでシステムを制御できるように設計されたマルウェアである。

この方法の利点は、ブートキットがオペレーティング・システム・レベルで実行されているセキュリティ・ツールを回避し、検出のリスクを負うことなくシステム・コンポーネントを変更したり、悪意のあるコードを注入したりできることです。

Bootkittyを発見したESETの研究者は、現在の現実世界での意味合いにもかかわらず、その存在はUEFIブートキットの脅威領域における重要な進化であると警告している。

誕生しつつあるLinuxブートキット

ESETは、2024年11月にVirusTotalにアップロードされた不審なファイル(bootkit.efi)を調査した結果、Bootkittyを発見しました。

分析の結果、ESETは、これがカーネルのシグネチャ検証をバイパスし、システム起動プロセス中に悪意のあるコンポーネントをプリロードするLinux UEFIブートキットの最初のケースであることを確認しました。

Bootkittyは自己署名証明書に依存しているため、セキュアブートを有効にしたシステムでは実行されず、特定のUbuntuディストリビューションのみを対象としています。

さらに、ハードコードされたオフセットと単純化されたバイトパターンマッチングにより、特定のGRUBとカーネルバージョンでしか使用できないため、広範な展開には適していません。

ESETはまた、このマルウェアには未使用の関数が多数含まれており、カーネルバージョンの互換性がうまく処理されないため、システムクラッシュにつながることが多いとも指摘している。

ASCII art contained in the bootkit
ブートキットに含まれるアスキーアート
ソースはこちら:ESET

このマルウェアはバグが多く、ESET の遠隔測定では稼働中のシステム上に Bootkitty の痕跡が見られないことから、研究者はこのマルウェアが開発初期段階にあると結論づけました。

Bootkittyの機能

ブート中、BootkittyはUEFIセキュリティ認証プロトコル(EFI_SECURITY2_ARCH_PROTOCOLとEFI_SECURITY_ARCH_PROTOCOL)をフックしてセキュアブートの完全性検証チェックをバイパスし、セキュリティポリシーに関係なくブートキットがロードされるようにします。

次に、「start_image」や「grub_verifiers_open」などのさまざまなGRUB関数をフックして、Linuxカーネルを含むバイナリに対するブートローダの整合性チェックを操作し、署名検証をオフにします。

Bootkittyは次に、Linuxカーネルの解凍プロセスを傍受し、「module_sig_check」関数をフックする。これにより、カーネル・モジュールのチェック中に常に成功を返すようになり、マルウェアが悪意のあるモジュールをロードできるようになる。

また、最初の環境変数を「LD_PRELOAD=/opt/injector.so」に置き換え、システム起動時に悪意のあるライブラリがプロセスに注入されるようにする。

Part of Bootkitty's execution flow
Bootkitty の実行フローの一部
ソースはこちら:ESET

ESETは、このプロセス全体が、意図的なものとそうでないものを含め、いくつかのアーティファクトを残していると説明しています。

研究者はまた、BootkittyをVTにアップロードした同じユーザーが、「BCDropper」という名前の署名されていないカーネルモジュールもアップロードしていることを指摘しているが、入手可能な証拠では、この2つの関連性は弱い。

BCDropperは「BCObserver」という名前のELFファイルをドロップし、感染したシステム上のファイルやプロセスを隠したり、ポートを開いたりするルートキット機能を持つカーネルモジュールである。

この種のマルウェアの発見は、企業におけるLinuxの導入が進む中、攻撃者がこれまでWindowsに限定されていたLinuxマルウェアをいかに開発しているかを示しています。

Bootkittyに関連する侵害指標(IoC)は、このGitHubリポジトリで共有されている。