通信用語の基礎知識 全国のICカードこれひとつ 戻る

二重解放の脆弱性
辞書:電算用語の基礎知識 プログラミング用語編 (PTPROGY)
読み:にじゅうかいほうのぜいじゃくせい
外語:double-free vulnerability
品詞:名詞

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

目次
概要

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

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

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

対策

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

free(p);

p = NULL;

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

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

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

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic