シェルコード
シェルコード(英: Shellcode)とは、コンピュータセキュリティにおいて、ソフトウェアのセキュリティホールを利用するペイロードとして使われるコード断片である。侵入したマシンを攻撃者が制御できるようにするため、シェルを起動することが多いことから「シェルコード」と呼ぶ。シェルコードは機械語で書かれることが多いが、機械語でなくとも同様のタスクを実行できるコード断片はシェルコードと呼ばれる。シェルコードは単にシェルを起動するだけとは限らないため、シェルコードという名称は不十分だとも言われている。しかし、他の用語は今のところ定着していない。
シェルコードが実行される前にコネクションがクローズされないような脆弱性を持つプロセスを利用する場合に使われることがある。シェルコードはそのコネクションを再利用 (re-use) して攻撃者と通信する。この種のシェルコードは作成が難しいため珍しい。なぜなら、シェルコードは再利用できるコネクションを探す必要があり、マシン上には同時に多数のコネクションがオープンされていることがあるからである。
ファイアウォールは、connect-back方式のシェルコードが作った外に向かうコネクションを検出でき、bindshell方式のシェルコードで使う外から入ってくるコネクションを検出できる。従って、ファイアウォール内のマシン自体に脆弱性があっても、シェルコードに攻撃者がアクセスするのを防ぐことである種の保護を提供できる。socket-reuse方式のシェルコードは新たなコネクションを生成しないため、検出やブロックがより難しい。