CSS2022デモンストレーションセッションの発表資料 https://dl.yumulab.org/papers/28
プロセッサエミュレータQEMUを用いた組込み機器へのROP攻撃のデモンストレーション多⽊ 優⾺1, 福光 正幸2, 湯村 翼1 1)北海道情報⼤学 2)⻑崎県⽴⼤学Computer Security Symposium 2022 デモンストレーション本稿では、i686で動作するCentOS6と、ARM Cortex-A53で稼働するRaspberryPi OSでのROP検証を⾏った。今後は、ARM Cortex-M0で動作するRIOT OSで脆弱なテストプログラムを動作させ、そこへROP攻撃を試す。さらに、ROP攻撃対策を考案し、必要であればセキュリティ機構の実装も⾏う。Arm Cortex-A53・RaspberryPi OSOSのバージョン確認コマンド“lsb_release -a”をホスト環境から実⾏し、攻撃の成功を確認した。i686・CentOS6OSのバージョン確認コマンド“cat /etc/redhat-release”をホスト環境から実⾏し、攻撃の成功を確認した。・エクスプロイトコードを組込み機器を模した環境に送信し、ROP攻撃検証を⾏った。・組込み環境はQEMUを⽤いて構築した。・組み込み環境はQEMUの設定により、ホスト以外との通信を遮断している。〇⽬的:OSとプロセッサの組み合わせによるROP攻撃の可能性を調査するため、様々な組込み機器に対してROP攻撃検証を⾏う。最終的にはデモ環境へROP対策を施す〇背景:IoT機器の普及によって組込み機器の需要が増加している。⼀⽅で、ROP攻撃の研究が進んでいる。このROP攻撃は組込み機器に対しても有効なため、ROP対策が施されていない可能性のある、低スペックな組込み機器の調査を⾏う。研究概要・プログラムの命令⽚(アセンブリコード)を繋ぎ合わせて任意の処理を⾏わせる攻撃。・様々なアーキテクチャに応⽤することも可能。ROP攻撃とは?ROP攻撃検証両環境のセキュリティ機構実装状況:NX bit 有効 / SSP 無効 / ASLR 無効 / CFI 無効おわりにレジスタ0x400100: pop rdi0x400102: ret:アセンブリコードbuf (0x10)rspsaved rbpリターンアドレススタック領域・・・rbpsystem(/bin/sh)を実⾏して制御を奪う例レジスタrdi: 第1引数を格納rip: 次に実行する命令のアドレスを格納rbp: スタックベースのアドレスを格納rsp: スタックトップのアドレスを格納0x400100: pop rdi0x400102: ret:アセンブリコード スタック領域ROPチェーン送信後レジスタrdi: /bin/shのアドレスrip: 0x400102rbp: 0x41414141…rsp: スタックトップのアドレスを格納0x400100: pop rdi0x400102: ret:アセンブリコード スタック領域leave命令(関数終了処理)後、0x400100に遷移してpop rdiを⾏うレジスタrdi: /bin/shのアドレスrip: systemのアドレスrbp: 0x41414141…rsp: スタックトップのアドレスを格納0x400100: pop rdi0x400102: ret:アセンブリコード スタック領域0x40102に遷移してret命令を⾏うrdi: 第1引数を格納rip: 次に実行する命令のアドレスを格納rbp: スタックベースのアドレスを格納rsp: スタックトップのアドレスを格納AAAAAAAA…rspAAAAAAAA0x400100rbp/bin/shのアドレスsystemのアドレスAAAAAAAA…rspAAAAAAAA0x400100/bin/shのアドレスsystemのアドレスAAAAAAAA…rspAAAAAAAA0x400100/bin/shのアドレスsystemのアドレス※pop rdi: rspが指す値をrdiに格納する。 ※ret: rspが指す値をripに格納する。ROP攻撃例(x86_64環境の場合)
View Slide