Heap Feng Shui
Heap Feng Shui とは何ですか?
Heap Feng Shui2007 年に Alexander Sotirov が紹介した決定論的ヒープ整形手法。アロケーションを巧妙に配置して脆弱オブジェクトの隣に攻撃者制御オブジェクトを置く。
Alexander Sotirov は 2007 年の Black Hat Europe で Heap Feng Shui を提案しました。確率的なヒープスプレーと異なり、Feng Shui は JavaScript からの確保・解放・再確保を綿密に行い、ブラウザのヒープを形作って、メモリ破壊発火後に脆弱オブジェクトが攻撃者制御バイトと確実に重なるよう配置します。freelist の枯渇、サイズクラスごとの bin の活用、長寿命アロケーションをアンカーとして使うことで、ASLR やランダム化アロケータの下でも決定的なレイアウトを実現します。発想はカーネルヒープ(Linux SLUB、Windows Pool Feng Shui)や JavaScript エンジン(V8、SpiderMonkey)の悪用にも拡張されました。対策は強化アロケータ(PartitionAlloc、scudo)、ARM MTE、GWP-ASan、機密メタデータの分離ヒープなどです。
● 例
- 01
JavaScript で精密にアロケーションを起こし、脆弱な JIT オブジェクトと攻撃者制御 ArrayBuffer を隣接させる。
- 02
Linux カーネルの SLUB Feng Shui で UAF オブジェクトを cred 構造体に揃え、root を奪取する。
● よくある質問
Heap Feng Shui とは何ですか?
2007 年に Alexander Sotirov が紹介した決定論的ヒープ整形手法。アロケーションを巧妙に配置して脆弱オブジェクトの隣に攻撃者制御オブジェクトを置く。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。
Heap Feng Shui とはどういう意味ですか?
2007 年に Alexander Sotirov が紹介した決定論的ヒープ整形手法。アロケーションを巧妙に配置して脆弱オブジェクトの隣に攻撃者制御オブジェクトを置く。
Heap Feng Shui はどのように機能しますか?
Alexander Sotirov は 2007 年の Black Hat Europe で Heap Feng Shui を提案しました。確率的なヒープスプレーと異なり、Feng Shui は JavaScript からの確保・解放・再確保を綿密に行い、ブラウザのヒープを形作って、メモリ破壊発火後に脆弱オブジェクトが攻撃者制御バイトと確実に重なるよう配置します。freelist の枯渇、サイズクラスごとの bin の活用、長寿命アロケーションをアンカーとして使うことで、ASLR やランダム化アロケータの下でも決定的なレイアウトを実現します。発想はカーネルヒープ(Linux SLUB、Windows Pool Feng Shui)や JavaScript エンジン(V8、SpiderMonkey)の悪用にも拡張されました。対策は強化アロケータ(PartitionAlloc、scudo)、ARM MTE、GWP-ASan、機密メタデータの分離ヒープなどです。
Heap Feng Shui からどのように防御しますか?
Heap Feng Shui に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
Heap Feng Shui の別名は何ですか?
一般的な別名: ヒープグルーミング。
● 関連用語
- attacks№ 471
ヒープスプレー
ヒープを多数のペイロードコピーで埋め尽くす攻撃プリミティブ。破壊されたポインタが攻撃者制御データに高確率で着地するようにする。
- vulnerabilities№ 1193
解放後使用(Use-After-Free)
free 済みのメモリをプログラムが使い続けるメモリ安全性のバグ。攻撃者にオブジェクト状態の操作と制御フロー奪取を許すことが多い。
- appsec№ 064
ASLR
ASLR はコード、スタック、ヒープ、ライブラリの配置アドレスを実行ごとに乱数化し、攻撃者がエクスプロイトに使う目標アドレスを予測できないようにする緩和策です。
- vulnerabilities№ 667
メモリ破壊
プログラムが意図したメモリ境界の外に書き込み、型安全性・制御フロー・データ整合性を損なうタイプの脆弱性を総称する用語。