[https://www.youtube.com/watch?v=9sAc2NYlt18:embed:cite]
平成26年秋期の情報セキュリティスペシャリスト試験の過去問を題材に、スマートフォンのルート化の危険性と、それに伴うバッファオーバーフロー攻撃の仕組みを先輩と後輩の会話形式で徹底解説します。攻撃手法だけでなく、各種防御策から、旧来のモバイルデバイス管理、そして最新のエンドポイント検知対応やハードウェアレベルの防御技術に至るまで、セキュリティの進化の歴史と最新動向を分かりやすく学べる内容です。 スマートフォンなどのOSには本来、アプリが他のアプリのデータに勝手にアクセスできないようにするサンドボックス構造が採用されていますが、ユーザーが制限を解除するルート化を行うとこの壁が破壊され、マルウェアが業務データなどを盗み出せる状態になってしまいます。 このような脅威の中でよく使われる攻撃手法がバッファオーバーフローです。 プログラムのメモリ領域には、ローカル変数を積み上げるスタックと動的なメモリを扱うヒープがあります。 スタックバッファオーバーフローでは、入力データのサイズを確認せずにコピーを行う関数の弱点を突いて想定以上の長いデータを送り込み、隣接するメモリを破壊します。 この長いデータはインジェクションベクタと呼ばれ、プログラムの制御を奪うためにリターンアドレスを書き換える役割を持ちます。 その際、特定のアーキテクチャではバイトの並び順が逆になるリトルエンディアンというデータ配置の特性を理解しておく必要があります。 このような攻撃を防ぐための第一の防御策がデータ実行防止機能であり、スタック領域に実行不可属性を付与することで、書き込まれたデータがプログラムとして実行されるのを防ぎます。 しかし、攻撃者も進化しており、自分のコードが動かないなら既に存在するコードを使えばよいという発想から、標準ライブラリの関数を悪用する手法が生み出されました。 これに対抗する防御策がアドレス空間配置のランダム化であり、プログラムの実行ごとにスタックやライブラリの配置場所をランダムに変えることで、攻撃者がジャンプ先のアドレスを特定することを困難にします。 また、サーバー側での修正が間に合わない場合には、ネットワーク上に専用の防御機器を導入し、通信を検査して極端に長いデータを検知して破棄するという対策も重要になります。 さらに、モバイルデバイスの管理という観点でもセキュリティは進化しています。 かつての管理手法は設定をチェックするだけでしたが、現在ではゼロトラストの考え方に基づき、設定が正常に見えても裏で不審なプロセスが動いていないかを振る舞い検知で監視し、即座に遮断するアプローチが主流になりつつあります。 そして近年では、ソフトウェアによる防御だけでなく、ハードウェアによる支援技術も登場しています。 メモリポインタに物理的なタグを付け、オーバーフローによってタグが壊れるとハードウェアレベルで即座に動作を停止させる技術などにより、攻撃の隙を物理的に無くすという強力な対策が実現されています。