Home | Notifications | New Note | Local | Federated | Search | Logout
Note Detail
Fadis@fadis@mstdn.jp (2026-10-10 22:06:03)
これでリターンアドレスの書き換えで任意のコードを実行する事はできなくなるが、スタックやヒープ上に関数ポインタが置かれていて、それが特定の条件で呼び出される場合(間接関数呼び出し)、攻撃者は関数ポインタのアドレスを書き換える事でROPと同じようにCall-oriented programming(COP)ができる。
そこでIntel Control-Flow Enforcement Technology(略してCET)では関数の先頭にendbr命令を置く。endbr自体は何もしない命令だが、callやjmpで飛んだ先の最初の命令がendbrでない場合、CPUは例外を発生させる。これによって関数は必ず先頭から実行しなければならなくなり、COPが難しくなる。
CETでCOPは難しくなるが、攻撃者が欲しい関数そのものが実行可能バイナリの中に転がっている場合、攻撃者は間接関数呼び出しでその関数を呼ばせるだけで攻撃が成立する。そこで間接関数呼び出しにもう一段階縛りを設けて攻撃を困難にするのがCFI
Reply