NoReboot

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

これはバグにつけられた名前です。
Extended Detection and Response(XDR)に分類される製品のメーカが発見し、PoCコードが作成されてGitHubで公開されています。
これは永続化を実装するのではない方法で、永続化が実現できるというバグです。

いろいろな機器には機能を停止する仕組みがあります。
いわゆるシャットダウン処理です。
iPhoneにもシャットダウン機能があります。特定の組み合わせでボタンを操作することで、機器を停止することができます。
このシャットダウン処理が開始されるところをフックすることで、あたかも機器が利用者の期待通りに停止が行われたように振舞います。
しかし実際には動作し続けているという状態を作り出すことができたというのです。

こんな動きの実現が確認されています。

  • ボタンを組み合わせて長押しすると、iPhoneはシャットダウン機能を開始しようとする
  • シャットダウン機能の開始をフックし、NoRebootが代替処理を行う
  • 実際のシャットダウン時と同じ画面の遷移で停止する操作をユーザに実施させる
  • 停止が操作されると、NoRebootは本当のシャットダウンの際と同じに見える画面表示を行う
  • 画面表示もボタン操作も物理フィードバックもすべて無効化する
    ここまでくると、見た目的には機器は停止したように見えます。
  • 電源オンの操作が実施された場合、それをフックし、起動が開始されたように装う
    実際にはシャットダウンしていなかったので起動は開始されないわけですが、利用者には機器が起動開始されたように見えます。

このように、NoRebootは停止していないけれども停止したように見える状態を作ることができます。
NoRebootを仕掛けた側は、この状態でなんでも実施できます。

  • マルウェアを動作させるとした場合に、機器が再起動された場合の永続化処理は必要なくなる
    機器が停止することがなくなりますので、永続化の機構は不要です。
    永続化を考えなくてよいということは、ファイルレスで見つかりにくい機構を実現しやすいということにもつながりそうです。
  • 通信ができる
    画面表示などは無効化されていますが、機器は停止しているわけではありません。
    iPhoneには通信機能がありますので、マルウェアも通信することができます。

このバグを悪用した脅威はまだ観測されていないようです。
しかし、PoCコードが公開されていますから、そのうちにでてくるかもしれません。
PoCコードが公開されているのはiPhone向けですが、これはパラダイムシフトとも言えそうです。
自分が操作している内容が本当に実施されているのかは、機器の見た目から判別できないかもしれないということになりそうです。

自分の使っている機器の停止すらさせてもらえないとは、困ったものです。

参考記事(外部リンク):Persistence without “Persistence”: Meet The Ultimate Persistence Bug – “NoReboot”
blog.zecops.com/research/persistence-without-persistence-meet-the-ultimate-persistence-bug-noreboot/