mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
9.6 KiB
9.6 KiB
ヒープ関数のセキュリティチェック
htARTE(HackTricks AWS Red Team Expert)を通じてゼロからヒーローまでAWSハッキングを学ぶ
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローする
- ハッキングトリックを共有するために、HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出する
unlink
詳細については、以下をチェックしてください:
{% content-ref url="unlink.md" %} unlink.md {% endcontent-ref %}
これは実行されたチェックの要約です:
- 指定されたチャンクのサイズが、次のチャンクで指定された
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
詳細については、以下をチェックしてください:
{% content-ref url="malloc-and-sysmalloc.md" %} malloc-and-sysmalloc.md {% endcontent-ref %}
- ファストビン検索中のチェック:
- チャンクがアラインメントされていない場合:
- エラーメッセージ:
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は常にアリーナ構造体を指しているはずです。
- 次のチャンクが前のチャンクが使用中であることを示していない場合:
- エラーメッセージ:
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
詳細については、以下をチェックしてください:
{% content-ref url="free.md" %} free.md {% endcontent-ref %}
_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