[レポート]組込み機器はROP攻撃に対応できているか? 低スペックな組込み機器へのROP検証 – CODE BLUE 2022 #codeblue_jp

CODE BLUE 2022 のセッション「組込み機器はROP攻撃に対応できているか? -低スペックな組込み機器へのROP検証-」のレポートです。
2022.10.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

CODE BLUE 2022 で行われた下記セッションのレポートです。

セッション概要

タイトル

組込み機器はROP攻撃に対応できているか? -低スペックな組込み機器へのROP検証-

概要

Return Oriented Programming(ROP)攻撃は、プログラム内の命令片を利用し、任意の処理を行わせる攻撃手法であり、様々な派生手法も登場している。
攻撃対象がPCの場合、高い計算能力を持つプロセッサを活かしたCFI(Control-Flow Integrity)や、広いアドレス空間を活かしたAddress Space Layout Randomization(ASLR)といった、ROP攻撃に有効なセキュリティ機構を実装することができる。
一方、組込み機器の場合、プロセッサに対する制約から、ROP攻撃に有効なセキュリティ機構を実装できない機器も存在する。
また、セキュリティ機構の実装状況はOSの種類とそのバージョンによっても異なる。
このため本研究では、複数のOSとプロセッサの組み合わせに対するROP攻撃の可能性を調査する。
組込み機器向けの様々なOSとプロセッサをQEMUを用いてエミュレートして攻撃対象の環境を構築し、そこで稼働する脆弱なテストプログラムに対してROP攻撃の検証を行う。
本講演では、脆弱なテストプログラムに対するROP攻撃のデモを行い、ROP攻撃の危険性を伝えるとともに、低スペックな組込み機器へのROP攻撃対策について、現段階での調査で判明したことを発表する。

Presented by

多木 優馬 - Yuuma Taki

レポート

  • 北海道情報大学の研修成果
  • IoT 機器の増加で組み込み機器の需要も増加している
    • 一方で、プロセッサに対する制約から十分なセキュリティ対策が実装できない場合がある
  • 先行研究の紹介
    • 先行研究では高スペックなプロセッサが必要
    • 本研究では低スペックなプロセッサに ROP 対策を行うことを目的としている
  • ROP とは
    • スタックオーバーバッファーフローをついた攻撃
    • プログラム内の命令片を利用し、任意の処理を行わせる攻撃手法
    • 派生手法が多く存在する
  • ROP 対策例
    • ASLR (Address Space Layer Randomization)
      • コードやデータ領域のアドレスをランダム化する
      • 弱点:32 ビット以下のアドレス空間では、ランダム化するためのエントロピーが不足していまい、総当たり攻撃が可能となる
    • CFI (Control-Flow Integrity)
      • 正常な制御フローをモデル化しておき、実行時の制御フローと比較して異常を検知する
      • 弱点:高スペックなプロセッサが必要
  • 本研究では派生手法ではない単純な ROP を扱う
    • 単純な ROP でさえ制御を奪取できる組み込み機器に着目したいため
  • QEMU を用いてプロセッサをエミュレートして検証環境を構築
  • 検証環境と検証結果
    • CentOS 6 on i686
      • (動画による ROP 攻撃のデモ)
      • 多くのセキュリティ機能が存在していたため、単純な ROP での奪取は不可能と分かった
      • ただし、32bit 環境であるため、総当たり攻撃はプログラムによっては可能となる
    • Raspberry Pi OS on Arm Cortex-a53
      • (動画による ROP 攻撃のデモ)
      • PC と遜色ないセキュリティ機構が存在していたため、単純な ROP での奪取は不可能と分かった
      • 先行研究では Raspberry Pi への CFI 実装も進んでいる
  • 今後は、低スペックな環境での検証を行う
    • 目星をつけている環境は、ZephyrOS on Arm Cortex-M0
    • 調査の結果、ROP 対策がなられていない可能性があるため
    • ZephyrOS には主なメモリ保護機能が 3 つある
      • スタック保護(MPU を利用)
      • メモリ分離(MPU を利用)
      • スレッド分離
    • Arm Cortex-M0 では MPU が実装されていない
  • 低スペックな組み込み機器への ROP 対策について対策案を検討している
    • Computer Security Symposium 2022 で対策について話し合う機会があった
    • 対策案:リターンアドレスの異常検知によるスタック保護を行う方法
    • 対策案:ROP 特有のメモリー違反を検知する方法(簡易 CFI)
  • まとめ
    • ASLR や CFI が実装されていない環境では単純な ROP でも制御を奪うことができる
    • 今後
      • ZephyrOS on Arm Cortex-M0 の検証
      • セキュリティ対策の実装を検討

さいごに

IoT 機器は今後増加していくと思われるため、このような技術もキャッチアップしていく必要があると感じるセッションでした。