web-dev-qa-db-ja.com

非線形/後方上書きとは何ですか?

Black Hat USA 2012 会議のスライドをいくつか読んだところ、non-­linear/backward overwriteMicrosoft Security Engineering Center(MSEC)(PDF)のKenJohnsonとMattMillerによるWindows8でのエクスプロイト緩和の改善 プレゼンテーション:

History of exploit mitigations on Windows画像の帰属:Ken Johnson、Matt Miller、Microsoft Security Engineering Center(MSEC)

この画像によると、Windows 7では、この種の上書きに対する緩和策はまだありません。

これnon-­linear/backward overwriteが何であるかを誰かに手がかりがあり、いくつかの追加情報を教えてくれますこの搾取技術について?

6
user2252343

まず第一に、「線形上書き」は最も一般的なタイプのバッファオーバーフローです。これはスライドに示されている例です。あるベースアドレスから開始して直線的に書き込み、最終的にリターンアドレスを上書きする場合:

void function(LPCSTR input){
    char buffer[256];
    strcpy(buffer, input);
}

非線形上書きの例はこれです rGodによって書かれたGroupWise ActiveXコントロールエクスプロイト 。このActiveXコンポーネントには、パラメータの1つがメモリアドレスであるメソッド呼び出しがあります。これにより、攻撃者はメモリ内の任意の場所に書き込むことができます。リターンアドレスがカナリアによって保護されている場合、攻撃者はリターンアドレスを直接ポイントして、カナリアを破壊することなく上書きすることができます。 ダングリングポインタ は、攻撃者が特定のアドレスを制御して、読み取り、書き込み、または実行を非線形的に行うことができる状態を作り出すこともできます。

5
rook