ヒープ関数のセキュリティチェック
Reading time: 8 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を提出してハッキングトリックを共有してください。
unlink
詳細については確認してください:
実施されたチェックの概要は以下の通りです:
- チャンクの指定サイズが次のチャンクに示された
prev_sizeと同じか確認 - エラーメッセージ:
corrupted size vs. prev_size - また、
P->fd->bk == PおよびP->bk->fw == Pも確認 - エラーメッセージ:
corrupted double-linked list - チャンクが小さくない場合、
P->fd_nextsize->bk_nextsize == PおよびP->bk_nextsize->fd_nextsize == Pを確認 - エラーメッセージ:
corrupted double-linked list (not small)
_int_malloc
詳細については確認してください:
- ファストビン検索中のチェック:
- チャンクが不揃いの場合:
- エラーメッセージ:
malloc(): unaligned fastbin chunk detected 2 - フォワードチャンクが不揃いの場合:
- エラーメッセージ:
malloc(): unaligned fastbin chunk detected - 返されたチャンクのサイズがファストビンのインデックスのために正しくない場合:
- エラーメッセージ:
malloc(): memory corruption (fast) - tcacheを埋めるために使用されたチャンクが不揃いの場合:
- エラーメッセージ:
malloc(): unaligned fastbin chunk detected 3 - スモールビン検索中のチェック:
victim->bk->fd != victimの場合:- エラーメッセージ:
malloc(): smallbin double linked list corrupted - 各ファストビンチャンクに対して実施される統合中のチェック:
- チャンクが不揃いの場合トリガー:
- エラーメッセージ:
malloc_consolidate(): unaligned fastbin chunk detected - チャンクがインデックスのために異なるサイズを持つ場合:
- エラーメッセージ:
malloc_consolidate(): invalid chunk size - 前のチャンクが使用中でなく、前のチャンクのサイズが prev_chunk に示されたものと異なる場合:
- エラーメッセージ:
corrupted size vs. prev_size in fastbins - 未ソートビン検索中のチェック:
- チャンクサイズが異常(小さすぎるまたは大きすぎる)場合:
- エラーメッセージ:
malloc(): invalid size (unsorted) - 次のチャンクサイズが異常(小さすぎるまたは大きすぎる)場合:
- エラーメッセージ:
malloc(): invalid next size (unsorted) - 次のチャンクによって示された前のサイズがチャンクのサイズと異なる場合:
- エラーメッセージ:
malloc(): mismatching next->prev_size (unsorted) victim->bck->fd == victimでない場合、またはvictim->fd == av (arena)でない場合:- エラーメッセージ:
malloc(): unsorted double linked list corrupted - 常に最後のものをチェックしているため、その fd は常に arena 構造体を指している必要があります。
- 次のチャンクが前のチャンクが使用中であることを示していない場合:
- エラーメッセージ:
malloc(): invalid next->prev_inuse (unsorted) fwd->bk_nextsize->fd_nextsize != fwdの場合:- エラーメッセージ:
malloc(): largebin double linked list corrupted (nextsize) fwd->bk->fd != fwdの場合:- エラーメッセージ:
malloc(): largebin double linked list corrupted (bk) - 大きなビン(インデックスによる)検索中のチェック:
bck->fd-> bk != bckの場合:- エラーメッセージ:
malloc(): corrupted unsorted chunks - 大きなビン(次の大きい)検索中のチェック:
bck->fd-> bk != bckの場合:- エラーメッセージ:
malloc(): corrupted unsorted chunks2 - トップチャンク使用中のチェック:
chunksize(av->top) > av->system_memの場合:- エラーメッセージ:
malloc(): corrupted top size
tcache_get_n
tcache_get_nにおけるチェック:- チャンクが不揃いの場合:
- エラーメッセージ:
malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
tcache_thread_shutdownにおけるチェック:- チャンクが不揃いの場合:
- エラーメッセージ:
tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
__libc_reallocにおけるチェック:- 古いポインタが不揃いであるか、サイズが不正である場合:
- エラーメッセージ:
realloc(): invalid pointer
_int_free
詳細については確認してください:
_int_freeの開始時のチェック:- ポインタが整列している:
- エラーメッセージ:
free(): invalid pointer - サイズが
MINSIZEより大きく、サイズも整列している: - エラーメッセージ:
free(): invalid size _int_freetcache におけるチェック:mp_.tcache_countよりも多くのエントリがある場合:- エラーメッセージ:
free(): too many chunks detected in tcache - エントリが不揃いの場合:
- エラーメッセージ:
free(): unaligned chunk detected in tcache 2 - 解放されたチャンクがすでに解放されており、tcache にチャンクとして存在する場合:
- エラーメッセージ:
free(): double free detected in tcache 2 _int_freeファストビンにおけるチェック:- チャンクのサイズが無効(大きすぎるまたは小さすぎる)場合トリガー:
- エラーメッセージ:
free(): invalid next size (fast) - 追加されたチャンクがすでにファストビンのトップであった場合:
- エラーメッセージ:
double free or corruption (fasttop) - トップのチャンクのサイズが追加するチャンクのサイズと異なる場合:
- エラーメッセージ:
invalid fastbin entry (free)
_int_free_merge_chunk
_int_free_merge_chunkにおけるチェック:- チャンクがトップチャンクの場合:
- エラーメッセージ:
double free or corruption (top) - 次のチャンクがアリーナの境界の外にある場合:
- エラーメッセージ:
double free or corruption (out) - チャンクが使用中としてマークされていない場合(次のチャンクの prev_inuse において):
- エラーメッセージ:
double free or corruption (!prev) - 次のチャンクが小さすぎるまたは大きすぎる場合:
- エラーメッセージ:
free(): invalid next size (normal) - 前のチャンクが使用中でない場合、統合を試みます。しかし、
prev_sizeが前のチャンクに示されたサイズと異なる場合: - エラーメッセージ:
corrupted size vs. prev_size while consolidating
_int_free_create_chunk
_int_free_create_chunkにおけるチェック:- 未ソートビンにチャンクを追加する際、
unsorted_chunks(av)->fd->bk == unsorted_chunks(av)を確認: - エラーメッセージ:
free(): corrupted unsorted chunks
do_check_malloc_state
do_check_malloc_stateにおけるチェック:- 不揃いのファストビンチャンクの場合:
- エラーメッセージ:
do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
malloc_consolidateにおけるチェック:- 不揃いのファストビンチャンクの場合:
- エラーメッセージ:
malloc_consolidate(): unaligned fastbin chunk detected - 不正なファストビンチャンクサイズの場合:
- エラーメッセージ:
malloc_consolidate(): invalid chunk size
_int_realloc
_int_reallocにおけるチェック:- サイズが大きすぎるまたは小さすぎる場合:
- エラーメッセージ:
realloc(): invalid old size - 次のチャンクのサイズが大きすぎるまたは小さすぎる場合:
- エラーメッセージ:
realloc(): invalid next size
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を提出してハッキングトリックを共有してください。
HackTricks