Heap Functions Security Checks

Reading time: 6 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

अधिक जानकारी के लिए देखें:

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 & 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 struct की ओर इशारा करना चाहिए।
  • यदि अगले चंक यह नहीं बता रहा है कि पिछले का उपयोग हो रहा है:
  • त्रुटि संदेश: 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

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें