Large Bin Attack
Reading time: 6 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
大きなビンについての詳細はこのページを参照してください:
how2heap - large bin attack で素晴らしい例を見つけることができます。
基本的に、最新の "current" バージョンの glibc (2.35) では、P->bk_nextsize
がチェックされていないため、特定の条件が満たされると、大きなビンチャンクの値で任意のアドレスを変更することができます。
その例では、以下の条件が見つかります:
- 大きなチャンクが割り当てられる
- 最初のものより小さいが同じインデックスにある大きなチャンクが割り当てられる
- ビン内で最初に入る必要があるため、より小さくなければならない
- (トップチャンクとのマージを防ぐためのチャンクが作成される)
- その後、最初の大きなチャンクが解放され、それより大きな新しいチャンクが割り当てられる -> Chunk1 が大きなビンに入る
- 次に、2番目の大きなチャンクが解放される
- ここで脆弱性:攻撃者は
chunk1->bk_nextsize
を[target-0x20]
に変更できる - その後、チャンク2よりも大きなチャンクが割り当てられるため、チャンク2が大きなビンに挿入され、アドレス
chunk1->bk_nextsize->fd_nextsize
がチャンク2のアドレスで上書きされる
tip
他にも潜在的なシナリオがありますが、重要なのは、ビン内の現在の X チャンクよりも 小さい チャンクを大きなビンに追加することです。したがって、それはビン内の X の直前に挿入される必要があり、X の bk_nextsize
を変更できる必要があります。そこに小さいチャンクのアドレスが書き込まれるからです。
これは malloc からの関連コードです。アドレスがどのように上書きされたかを理解するためにコメントが追加されています:
/* if smaller than smallest, bypass loop below */
assert (chunk_main_arena (bck->bk));
if ((unsigned long) (size) < (unsigned long) chunksize_nomask (bck->bk))
{
fwd = bck; // fwd = p1
bck = bck->bk; // bck = p1->bk
victim->fd_nextsize = fwd->fd; // p2->fd_nextsize = p1->fd (Note that p1->fd is p1 as it's the only chunk)
victim->bk_nextsize = fwd->fd->bk_nextsize; // p2->bk_nextsize = p1->fd->bk_nextsize
fwd->fd->bk_nextsize = victim->bk_nextsize->fd_nextsize = victim; // p1->fd->bk_nextsize->fd_nextsize = p2
}
これは、libcの**global_max_fast
グローバル変数を上書きするために使用される可能性があり**、その後、大きなチャンクを使用してファストビン攻撃を悪用します。
この攻撃の別の素晴らしい説明は、guyinatuxedoで見つけることができます。
その他の例
- La casa de papel. HackOn CTF 2024
- how2heapに表示されるのと同じ状況での大きなビン攻撃。
- 書き込みプリミティブはより複雑で、ここでは
global_max_fast
は無意味です。 - エクスプロイトを完了するにはFSOPが必要です。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。