間接分岐追跡(IBT )は、分岐ターゲット識別(BTI )とも呼ばれ、一部のIntel x86-64およびARM-64プロセッサに実装されている制御フロー整合性メカニズムです。IBTは、間接分岐命令を用いて意図しない方法でコードにジャンプする(例えば、リターン指向プログラミング)といったコンピュータセキュリティの脆弱性から保護するように設計されています。
これは、場所を有効な間接分岐ターゲットとしてマークする以外の機能を持たない特別な「分岐ターゲット」命令を作成し、分岐ターゲット命令のない場所への間接分岐が行われた場合、例外を発生させるモードにプロセッサを設定できます。
実装
インテルプロセッサでは、この技術は間接分岐追跡(IBT)と呼ばれており、「分岐終了」命令であるendbr32とendbr64が、それぞれ32ビットモードと64ビットモードの分岐ターゲット命令として機能します。[1] [2] IBTは、 Tiger Lake世代のプロセッサで初めてリリースされたIntel制御フロー強制技術の一部です。[3]
ARM-64プロセッサの同様の技術は分岐ターゲット識別(BTI)と呼ばれ、 BTIと呼ばれる命令には、ジャンプのみ、関数呼び出しのみ、またはその両方をチェックする3つのバリエーションがあります。[4] [5]
参考文献
- ^ Corbet, Jonathan (2022年3月31日). 「Intel CPUの間接分岐追跡」lwn.net . 2023年7月14日閲覧。
- ^ 「間接分岐追跡 - 006 - ID:655258 | 第12世代インテル® Core™ プロセッサー」. edc.intel.com . 2024年2月23日閲覧。
- ^ 「Intel、Tiger LakeモバイルCPUに新たなCETテクノロジーを搭載」ZDNET 2024年2月23日閲覧。
- ^ 「ドキュメント – Arm Developer」. developer.arm.com . 2021年12月. 2023年7月14日閲覧。
- ^ 「ドキュメント – Arm Developer」. developer.arm.com . 2024年2月23日閲覧。