TOPセキュリティ > 深刻な脅威につながる、バッファオーバーフローとは(後)

セキュリティ

深刻な脅威につながる、バッファオーバーフローとは(後)

2020/02/13

Lucian Constantin CSO

 バッファオーバーフローとは、プログラム内でのメモリーの処理に関するバグの一種で、バッファオーバーランともいう。プログラムで割り当てた固定長のメモリーバッファの境界をきちんとチェックせずに、バッファに収まりきらないデータを書き込んで、隣接する領域のデータを上書きしてしまうことをいう。クラッシュや脆弱性につながることが多く、セキュリティ上の問題となる。

前回から続く)

バッファオーバーフローの攻撃の例

Credit: Thinkstock

 バッファオーバーフローの脆弱性は、一般に深刻度が高い。バッファの領域外のメモリーに書き込むデータを攻撃者が制御して、関数のポイントする先を悪質なコードに変えることで、不正なコード実行が可能になるからだ。

 任意コード実行が不可能な場合でも、バッファオーバーフローはクラッシュを引き起こすことが多い。サービス拒否(DoS)攻撃の状態となって、アプリケーションやプロセスの可用性に影響が出る。継続的な稼働が求められるサーバー環境では特に問題だ。

 場合によっては、バッファオーバーフローを利用して、攻撃者がアプリケーションのメモリー内の重要な設定を上書きできる場合もある。例えば、ユーザーが管理者か否かを示すフラグなどだ。アプリケーション内やシステム内でのアクセス権の昇格につながる恐れがある。

 また、バッファの境界の処理が適切でない場合、バッファの範囲外のデータの上書きではなく読み取りが行われる場合もある。領域外のメモリー参照だ。典型的なバッファオーバーフローとは異なるが、同じカテゴリのコーディングミスであり、重要なデータを奪われかねない。

 領域外のメモリー参照を使って、他の脆弱性を利用するための情報を奪われる場合もある。例えば、アドレス空間配置のランダム化(ASLR:Address Space Layout Randomization)などのセキュリティ技術が適用されているカーネルで、メモリーのアドレスを明らかにするために使われる可能性がある。

↑ページ先頭へ