DEP(データ実行防止)
DEP(データ実行防止) とは何ですか?
DEP(データ実行防止)DEP(NX ビット、W^X)はメモリページを実行不可と印付けし、スタックやヒープに注入されたシェルコードの実行を阻止します。
DEP は NX(No-eXecute)や W^X(Write XOR Execute)とも呼ばれ、メモリページは書き込み可能か実行可能のいずれかであり、両方になることはないという制約を強制します。CPU の NX ビットがスタックやヒープなどデータページからの命令フェッチを禁止し、古典的なシェルコード注入攻撃を防ぎます。AMD が 2003 年にハードウェア NX ビットを導入し Intel が追随、Windows XP SP2 はソフトウェア DEP を搭載、Linux も PaX/grsecurity を経由してメインラインに統合されました。データからの直接実行が封じられた結果、攻撃者は return-to-libc や ROP に転向したため、DEP は ASLR、CFI、シャドースタックと組み合わせて運用します。
● 例
- 01
スタックが NX としてマークされ、シェルコードが実行されずクラッシュする。
- 02
強化版 Linux の mmap が PROT_WRITE | PROT_EXEC を拒否する。
● よくある質問
DEP(データ実行防止) とは何ですか?
DEP(NX ビット、W^X)はメモリページを実行不可と印付けし、スタックやヒープに注入されたシェルコードの実行を阻止します。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
DEP(データ実行防止) とはどういう意味ですか?
DEP(NX ビット、W^X)はメモリページを実行不可と印付けし、スタックやヒープに注入されたシェルコードの実行を阻止します。
DEP(データ実行防止) はどのように機能しますか?
DEP は NX(No-eXecute)や W^X(Write XOR Execute)とも呼ばれ、メモリページは書き込み可能か実行可能のいずれかであり、両方になることはないという制約を強制します。CPU の NX ビットがスタックやヒープなどデータページからの命令フェッチを禁止し、古典的なシェルコード注入攻撃を防ぎます。AMD が 2003 年にハードウェア NX ビットを導入し Intel が追随、Windows XP SP2 はソフトウェア DEP を搭載、Linux も PaX/grsecurity を経由してメインラインに統合されました。データからの直接実行が封じられた結果、攻撃者は return-to-libc や ROP に転向したため、DEP は ASLR、CFI、シャドースタックと組み合わせて運用します。
DEP(データ実行防止) からどのように防御しますか?
DEP(データ実行防止) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
DEP(データ実行防止) の別名は何ですか?
一般的な別名: NX ビット, 実行不可メモリ, W^X。
● 関連用語
- appsec№ 064
ASLR
ASLR はコード、スタック、ヒープ、ライブラリの配置アドレスを実行ごとに乱数化し、攻撃者がエクスプロイトに使う目標アドレスを予測できないようにする緩和策です。
- appsec№ 925
リターン指向プログラミング(ROP)
ROP は、RET で終わる短い命令列(ガジェット)を連結して、新しいコードを注入することなく任意の計算を実現するコード再利用型のエクスプロイト手法です。
- appsec№ 1095
スタックカナリア
スタックカナリアは、関数のローカルバッファと保存された戻りアドレスの間に置かれた秘密値で、制御フローを奪取される前にスタックオーバーフローを検出します。
- appsec№ 217
コントロールフロー整合性(CFI)
CFI はプログラムの間接呼び出しと戻りを事前計算した正当な遷移先集合に制限し、ROP や JOP による制御フロー奪取を阻止します。
- appsec№ 670
メモリ安全性
メモリ安全性とは、プログラムが正当に確保していないメモリを読み書きしたり実行したりしないという性質で、脆弱性のクラスをまとめて排除できます。
- appsec№ 545
Intel CET
Intel CET(制御フロー強制技術)は、ハードウェアシャドースタックと間接分岐追跡(IBT)を組み合わせ、ROP/JOP/COP の悪用を阻止する CPU 機能です。
● 関連項目
- № 1058SMEP / SMAP