メモリ安全性

From Wikipedia, the free encyclopedia

メモリ安全性 (メモリあんぜんせい、英語: Memory safety) は、バッファオーバーフローダングリングポインタ英語版などの、RAMアクセス時に発生するバグセキュリティホールなどから保護されている状態のことである[1]。例えば、Java実行時エラー検出英語版で配列の境界とポインタの参照外しを確認するので、メモリ安全であると言われている[1]。対照的に、CC++境界チェック英語版を行わないメモリアドレスを直接参照するポインタを使用した任意のポインタ演算が可能なので[2]、メモリ安全ではない[3]

メモリエラーは資源管理及びタイムシェアリングシステムFork爆弾などの問題を回避するために検討されたことが始まりである[4]Fingerプロトコルでのバッファオーバーフローを悪用したモリスワームが登場するまでは、これは殆ど理論上の存在であった[5]。その後、コンピュータセキュリティの分野は急速に発展し、Return-to-libc攻撃などの多くの新たなサイバー攻撃手法が次々と誕生し、これに対する防御手法として実行保護[6]アドレス空間配置のランダム化などの技術が開発された。アドレス空間配置のランダム化は殆どのバッファオーバーフロー攻撃を防ぎ、攻撃者がアドレスを取得する際に、ヒープスプレー英語版かその他のアプリケーションに依存する方法を利用することを必要とさせるものであるが、これが採用されるまでには長い時間を必要とした[5]。但し、これらの技術が利用されるのは、ライブラリとスタックの場所をランダムにするときに限定されることが一般的である。

手法

メモリエラーの種類

脚注

Related Articles

Wikiwand AI