■ダングリング・ポインタ(dangling pointer)
プログラムの実行中にポインタが不正なメモリ領域を指している状態。ポインタが宙ぶらりんな状態(dangling)であることから、ダングリング・ポインタと呼ばれる。
ダウングリング・ポインタは、メモリ・オブジェクトを解放する際に、オブジェクトのポインタ値を初期化しないことに起因して発生する。ポインタは、解放されたメモリ位置を指したままとなっているため、そのメモリに異なるデータが書き込まれた後に、誤ってそのポインタを再参照してしまうと、予想不可能な動作を起こすことになる。
これまでダングリング・ポインタは、脆弱性の問題というよりも、プログラム上の不具合という認識が一般的であった。しかしダングリング・ポインタは、メモリ破損の脆弱性の原因ともなり、サービス拒否を起こしたり、場合によっては任意のコードを実行可能としてしまったりする危険があるため、脆弱性を引き起こす要因の1つであるという認識が広まっている。
プログラムに脆弱性を含めないために、ダングリング・ポインタを発生させないようにする品質管理も求められている。 |