【ひーぷすぷれー】
ヒープスプレー とは?
最終更新:
💡 メモリに多数の候補を置き、悪用の成功を狙う
ヒープ領域に攻撃に利用するコードやデータを多数配置し、別の脆弱性の悪用を成功させやすくする手法。メモリに配置することと、そこへ処理を移したり不正に利用したりすることは別で、配置だけで必ず攻撃が成立するわけではない。
何を、スプレーするの?
たくさん置くと、どうなる?
悪用する際の場所を正確に予測しにくいとき、候補を多数置くことで成功の可能性を上げる狙いがあるよ。すべてのメモリを埋める必要がある、どこへ移っても必ず成功する、という意味ではないんだ。
置いただけで、攻撃が完成する?
それだけではないよ。配置したものを利用させるための脆弱性の悪用などが必要なんだ。図でも配置と悪用を分けている。多数のメモリ確保だけを見て、必ずヒープスプレー攻撃だとは判断できないね。
ASLRがあれば、完全に防げる?
ASLRはメモリの位置を予測しにくくする緩和策だよ。DEPは実行用でないメモリからのコード実行を防ぐ。役割が違い、環境や設定にも左右されるので、どちらか一つだけでどんな攻撃も防げるとは言わないんだ。
守る側は、何をする?
まとめ:ざっくりこれだけ覚えればOK!
「ヒープスプレー」って出てきたら「メモリに多数の候補を置いて、脆弱性を悪用しやすくする手法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Heap spraying」 = ヒープへの散布
💬 Heapは動的に確保するメモリ領域、sprayingは散布すること。攻撃に利用するものを多数置くイメージだよ。