CosmicStrand

ほぼこもセキュリティニュース By Terilogy Worx

CosmicStrandはルートキットです。
ルートキットはコンピュータシステムへのアクセスを確保したあとで第三者によって使用されるソフトウェアツールのセットです。
こうしたツールには作動中のプロセスやファイルやシステムデータを隠蔽する狙いがあって、ユーザに察知させることなく侵入者がシステムへのアクセスを維持することを支援する機能を持っています。
CosmicStrandはUEFIファームウェアから感染チェーンを開始する従来の他のルートキットよりももっと根が深い動きをするルートキットです。

これまでのルートキットでは、そのOSのkernelや基本的なライブラリなどの動きをフックして、侵入者の動きが検知できなくするような取り組みを行うものでした。
作用が始まってしまえばこの方式でも目的は達成することができるのですが、セキュリティ対策の仕組みによって設置を阻止されてしまう可能性をはらんだ方式でした。
ならば、すべてが始まる前の段階から動作を開始してしまえば問題のあるロジックを呼び出していると検出されることがない、という作戦がこのUEFIルートキットなのかもしれません。

UEFIルートキットの呼び出しは次のように進みます。

  1. EFIブートサービスをフック
    機器の起動時に一番最初に動作するEFIブートサービスをフックします。
    そして次の段階であるブートマネージャーに悪意のあるフックを仕掛けます。

     

  2. ブートマネージャーでフック
    ブートマネージャーの動作をフックします。
    そして次の段階であるOSローダーに悪意のあるフックを仕掛けます。

     

  3. OSローダーでフック
    OSローダーの動作をフックします。
    そして次の段階であるkernelに悪意のあるフックを仕掛けます。

     

  4. kernelでフック
    kernelの動作をフックします。
    kernelはOSの設定に従っていろいろな機構を動作させます。
    各種サービスも動作を開始します。
    その並びの中に、マルウェアサービスも含まれることになります。
    フックされたkernelの機能はkernelモードのshellcode stagerを呼び出し、kernelモードのペイロードを呼び出します。

どうでしょう。
アンチウイルスなどのいろいろなセキュリティ機構があります。
セキュリティを実現するソフトウェアにはいろいろなセキュリティ機構が実装されています。
その機構の動作の中で環境側で必要な実施内容についてはセキュリティソフトウェアがkernelに作業を依頼してその内容が実行されます。
ですから、セキュリティソフトウェアに限った話ではありませんが、その環境で動作するソフトウェアはその環境のkernelの動作を全面的に信頼するという前提条件が満たされて成り立ちます。

このマルウェアは最終的にC2からコマンドや別のマルウェアを受け取り、悪事を働くことになるでしょう。
ですがこのマルウェアの動作する機器の上で動作している機構でこのマルウェアの活動を検出したり阻止したりすることは容易ではなさそうです。

そもそもとしてこういったものが入り込まないようにすることが重要です。
仮に入り込んでしまったとするともうその対象機器上では事実上検出することは非常に困難なものですので、その箱の外側の機構で見つけていくことになると思います。
それはネットワークベースで動作するセキュリティ対策の機構を使うということでカバーできると期待できます。

イタチごっこといいますが、なんだか侵入者側が有利に活動している場面が多いように見えます。
このあたりで防御側として新しい手法の対策に取り組み、戦いを有利に展開していきたいものです。

参考記事(外部リンク):CosmicStrand: the discovery of a sophisticated UEFI firmware
rootkit

securelist.com/cosmicstrand-uefi-firmware-rootkit/106973/