Heap Functions Security Checks
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
詳細については、次を確認してください:
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)
詳細については、次を確認してください:
malloc & sysmallocファストビン検索中のチェック:
チャンクがアラインされていない場合:
エラーメッセージ: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
詳細については、次を確認してください:
free_int_free
の開始時のチェック:
ポインタがアラインされている:
エラーメッセージ:free(): invalid pointer
サイズがMINSIZE
より大きく、サイズもアラインされている:
エラーメッセージ:free(): invalid size
_int_free
tcacheでのチェック:
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
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)