Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 925

リターン指向プログラミング(ROP)

リターン指向プログラミング(ROP) とは何ですか?

リターン指向プログラミング(ROP)ROP は、RET で終わる短い命令列(ガジェット)を連結して、新しいコードを注入することなく任意の計算を実現するコード再利用型のエクスプロイト手法です。


Hovav Shacham が 2007 年に発表した ROP は、DEP/W^X を回避するためにスタックを破壊し、RET で終わる短いガジェットへの戻りアドレスを連ねたチェーンを書き込みます。各ガジェット実行後、RET が次のアドレスをポップして遷移し、libc・ライブラリ・本体に既存する実行可能バイトのみでチューリング完全な計算が構築されます。変種には JOP(ジャンプ)、COP(コール)、SROP(シグナルフレーム)があります。ROP は ASLR、CFI、スタックカナリア、シャドースタック、Intel CET、メモリ安全言語の整備を促した最大の要因であり、対策はガジェットの利用可能性、制御フロー整合性、ソースコードのメモリ安全性のいずれかを狙います。

  1. 01

    glibc の pop-rdi/syscall ガジェットを連結して execve("/bin/sh") を呼び出す。

  2. 02

    KASLR の漏洩を利用して ROP で commit_creds(prepare_kernel_cred(0)) に到達する。

よくある質問

リターン指向プログラミング(ROP) とは何ですか?

ROP は、RET で終わる短い命令列(ガジェット)を連結して、新しいコードを注入することなく任意の計算を実現するコード再利用型のエクスプロイト手法です。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。

リターン指向プログラミング(ROP) とはどういう意味ですか?

ROP は、RET で終わる短い命令列(ガジェット)を連結して、新しいコードを注入することなく任意の計算を実現するコード再利用型のエクスプロイト手法です。

リターン指向プログラミング(ROP) はどのように機能しますか?

Hovav Shacham が 2007 年に発表した ROP は、DEP/W^X を回避するためにスタックを破壊し、RET で終わる短いガジェットへの戻りアドレスを連ねたチェーンを書き込みます。各ガジェット実行後、RET が次のアドレスをポップして遷移し、libc・ライブラリ・本体に既存する実行可能バイトのみでチューリング完全な計算が構築されます。変種には JOP(ジャンプ)、COP(コール)、SROP(シグナルフレーム)があります。ROP は ASLR、CFI、スタックカナリア、シャドースタック、Intel CET、メモリ安全言語の整備を促した最大の要因であり、対策はガジェットの利用可能性、制御フロー整合性、ソースコードのメモリ安全性のいずれかを狙います。

リターン指向プログラミング(ROP) からどのように防御しますか?

リターン指向プログラミング(ROP) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。

リターン指向プログラミング(ROP) の別名は何ですか?

一般的な別名: ROP, コード再利用攻撃, Return-to-libc。

関連用語

関連項目