NOPスレッドとは? わかりやすく解説

NOPスレッド

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/22 07:15 UTC 版)

バッファオーバーラン」の記事における「NOPスレッド」の解説

上で述べた攻撃アイデア実行可能であるためには、攻撃者リターンアドレス上書きすべき仮想アドレス正確に知り、それを関数gに入力する必要があるが、スタック動的に変化するため、これは容易ではない。そこで本節ではリターンアドレス上書きすべき仮想アドレスの「おおよその値」さえ分かれば攻撃可能になるテクニック(NOPスレッド)を述べる。 NOPとは「何も行わない」事を意味するアセンブリ命令で、本来はタイミング合わせるなどの動機により何もせずにCPU時間消費するために用いられる。NOPスレッド(sled、そり)とはこのNOP命令複数並べたもので、これを利用する事により攻撃対象関数シェルコード位置まで滑走させる。 具体的に攻撃者下記のような文字列攻撃対象関数gに入力するNOPNOP (シェルコード)(戻りアドレス)…(戻りアドレス) 最初の「NOPNOP」の部分がNOPスレッドである。攻撃者がNOPスレッドの長さ戻りアドレス繰り返し回数適切に選んでgに入力すると、スタック領域例えば以下のようになる攻撃関係する部分だけ抜書き): gのスタックフレーム fのスタックフレーム … gの局所変数 gのSFP gのリターンアドレス … … NOPNOPNOPNOP (シェルコード)…(戻りアドレス)…(戻りアドレス) (戻りアドレス) (戻りアドレス)… これでgのリターンアドレスは「戻りアドレス」にセットされるので、攻撃者が「戻りアドレス」としてNOPスレッド部分アドレス指定する事に事前に成功していれば、gの終了時にNOPスレッドへとプログラムカウンタ移動する。するとプログラムNOPを順に実行して右へ右へと移動しシェルコード位置にたどり着いてシェルコード実行されるので、攻撃成功となる。戻りアドレスがNOPスレッドのどこかに落ちえすればよいので、前節述べた攻撃違いリターンアドレスセットする値を完璧に制御する要はなく、NOPスレッドの長さ分の誤差発生して攻撃成功する事になる。 NOPスレッドは頻繁に使用されるため、多く侵入防止システムベンダーでシェルコード判定使用されている。このためエクスプロイト作成者側では、シェルコード実行影響及ぼさないNOP以外の任意の命令ランダムに選んでスレッド構成することが常套手段となっている。

※この「NOPスレッド」の解説は、「バッファオーバーラン」の解説の一部です。
「NOPスレッド」を含む「バッファオーバーラン」の記事については、「バッファオーバーラン」の概要を参照ください。

ウィキペディア小見出し辞書の「NOPスレッド」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「NOPスレッド」の関連用語

NOPスレッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



NOPスレッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのバッファオーバーラン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS