脆弱性
解放後使用(Use-After-Free)
別称: UAF
定義
free 済みのメモリをプログラムが使い続けるメモリ安全性のバグ。攻撃者にオブジェクト状態の操作と制御フロー奪取を許すことが多い。
Use-After-Free(UAF)は、free()/delete でオブジェクトのメモリが解放された後もポインタが参照し続ける状態を指します。攻撃者が同じ領域を別オブジェクトとして再確保させられれば、ダングリングポインタは完全な型混乱として働き、仮想関数テーブルへのポインタやコールバックアドレス、重要な状態を上書きできます。UAF はブラウザやカーネルのエクスプロイトを支配します(CWE-416)。防御には RAII やスマートポインタによる厳格な所有権モデル、GC・メモリ安全言語、隔離キャッシュ・分離プール・GWP-ASan を備える強化アロケータ、KASAN や Valgrind を用いたテストが含まれます。ブラウザは MiraclePtr や PartitionAlloc 系のガードも併用します。
例
- CVE-2018-8174(VBScript エンジン):APT に悪用された UAF。
- CVE-2022-0609(Chrome アニメーション):ゼロデイとして悪用された UAF。
関連用語
メモリ破壊
プログラムが意図したメモリ境界の外に書き込み、型安全性・制御フロー・データ整合性を損なうタイプの脆弱性を総称する用語。
二重解放(Double Free)
同じヒープチャンクを二度解放するメモリ安全性のバグ。アロケータのメタデータが破壊され、しばしば任意コード実行を可能にする。
ヒープオーバーフロー
動的に確保したメモリ上で発生するバッファオーバーフロー。アロケータのメタデータ、関数ポインタ、オブジェクトの vtable などが破壊されることが多い。
エクスプロイト
脆弱性を悪用して、コード実行・権限昇格・情報漏えいなど意図しない動作を引き起こすコード、データ、または手法。
Secure Coding
Secure Coding — definition coming soon.
脆弱性
システム、アプリケーション、または運用プロセスに存在する弱点で、攻撃者が機密性・完全性・可用性を侵害するために悪用できるもの。