Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 1322

解放後使用(Use-After-Free)

監修Cybersecurity entrepreneur & security researcher

解放後使用(Use-After-Free) とは何ですか?

解放後使用(Use-After-Free)free 済みのメモリをプログラムが使い続けるメモリ安全性のバグ。攻撃者にオブジェクト状態の操作と制御フロー奪取を許すことが多い。


Use-After-Free(UAF)は、free()/delete でオブジェクトのメモリが解放された後もポインタがそのオブジェクトを参照し続ける状態で発生します。攻撃者が同じメモリ領域を別オブジェクトとして再確保させられれば(ヒープグルーミング、いわゆる「ヒープ風水」と呼ばれる手法)、ダングリングポインタは実質的に型混乱を引き起こし、仮想関数テーブルへのポインタ、コールバックアドレス、機微な状態を上書きするのに最適な状況を生み出します。UAF はブラウザやカーネルのエクスプロイトを支配しており、CWE-416 として分類されています。

具体的な事例がその影響を物語っています。Internet Explorer 経由で到達可能な VBScript エンジンの UAF である CVE-2018-8174 は、「Double Kill」ゼロデイとして武器化され、エクスプロイトキットに組み込まれました。Chrome の Animation コンポーネントの UAF である CVE-2022-0609 は、ゼロデイとして実環境で悪用され、Google の Threat Analysis Group はこのキャンペーンを、メディアやフィンテック企業を標的とした北朝鮮の国家アクターによるものと評価しました。こうしたバグの蔓延こそが、Microsoft と Google の双方が、過去の CVE の約 70% がメモリ安全性のエラーに起因すると報告し、業界が Rust への移行を推し進めている理由です。

flowchart TD
  A[オブジェクトが確保され、ポインタ P が参照する] --> B["free() / delete が呼ばれる"]
  B --> C[P は宙ぶらりんになり、メモリがアロケータへ返却される]
  C --> D[攻撃者がヒープスプレーで枠を再取得する]
  D --> E[同じメモリが攻撃者制御のオブジェクトとして再確保される]
  E --> F[プログラムが P を参照解決する]
  F --> G[型混乱から vtable や制御フローを奪取]

防御には、厳格な所有権モデル(RAII、スマートポインタ)、GC またはメモリ安全な Rust などの言語、強化アロケータ(隔離キャッシュ、分離プール、GWP-ASan)、KASAN や Valgrind を用いたテストが含まれます。ブラウザは MiraclePtr や PartitionAlloc 系のガードも併用します。

  1. 01

    CVE-2018-8174(VBScript エンジン):APT に悪用された UAF。

  2. 02

    CVE-2022-0609(Chrome アニメーション):ゼロデイとして悪用された UAF。

よくある質問

解放後使用(Use-After-Free) とは何ですか?

free 済みのメモリをプログラムが使い続けるメモリ安全性のバグ。攻撃者にオブジェクト状態の操作と制御フロー奪取を許すことが多い。 サイバーセキュリティの 脆弱性 カテゴリに属します。

解放後使用(Use-After-Free) とはどういう意味ですか?

free 済みのメモリをプログラムが使い続けるメモリ安全性のバグ。攻撃者にオブジェクト状態の操作と制御フロー奪取を許すことが多い。

解放後使用(Use-After-Free) からどのように防御しますか?

解放後使用(Use-After-Free) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。

解放後使用(Use-After-Free) の別名は何ですか?

一般的な別名: UAF。

関連用語

関連項目