通信用語の基礎知識 IPv4
戻る
参加者募集中

二重解放の脆弱性

辞書:電算用語の基礎知識 プログラミング用語編 (PTPROGY)
読み:にじゅうかいほうのぜいじゃくせい
外語:double-free vulnerability 英語
品詞:名詞
2010/10/22 作成

セキュリティホールの一つ。同じメモリー領域を、二重に解放(使用済のメモリー領域をシステムに返却)すること。

目次

Cの場合、一般に、メモリーの確保はmalloc関数、解放はfree関数を使う。

一度free関数で解放されたポインターを再度free関数で解放しようとすると、メモリーの内容を大きく破壊することになり、大きなバグを引き起こす。任意の不正コードを実行させられる脆弱性を引き起こすこともあるとされる。

これが、二重解放の脆弱性である。

抜本的な解決法はないが、一度freeしたポインターには、すぐにNULL(あるいは相当するもの)を代入するのが経験上良いとされている。

free(p);

p = NULL;

free(NULL)は何もしないことが保証されているため、もしこの不具合を招くようなコードが存在したとしても、最悪の不具合を引き起こすことが無い。

但しこれも、マルチスレッドの処理がある場合は、freeとNULL代入の一瞬の間に不具合を起こす可能性もあるので、完全な解決法というわけでもない。過信は良い結果をもたらさない。

用語の所属
セキュリティホール
関連する用語
malloc

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.03 (16-May-2019)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club