hacktricks/binary-exploitation/heap/heap-functions-security-checks.md

5.9 KiB

힙 함수 보안 점검

htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 히어로까지 AWS 해킹을 배우세요 htARTE (HackTricks AWS Red Team Expert)!

HackTricks를 지원하는 다른 방법:

이 함수는 이중 연결 리스트에서 청크를 제거합니다. 일반적인 점검은 청크를 unlink할 때 연결된 리스트 구조가 일관되게 유지되도록 합니다.

  • 일관성 점검:
  • P->fd->bk == PP->bk->fd == P인지 확인합니다.
  • 오류 메시지: corrupted double-linked list

_int_malloc

이 함수는 힙에서 메모리를 할당하는 역할을 합니다. 여기서의 점검은 할당 중에 메모리가 손상되지 않도록 합니다.

  • Fastbin 크기 확인:
  • fastbin에서 청크를 제거할 때, 청크의 크기가 fastbin 범위 내에 있는지 확인합니다.
  • 오류 메시지: malloc(): memory corruption (fast)
  • Smallbin 일관성 확인:
  • smallbin에서 청크를 제거할 때, 이중 연결 리스트의 이전 및 다음 링크가 일관되게 유지되는지 확인합니다.
  • 오류 메시지: malloc(): smallbin double linked list corrupted
  • Unsorted Bin 메모리 범위 확인:
  • unsorted bin의 청크 크기가 최소 및 최대 제한 내에 있는지 확인합니다.
  • 오류 메시지: malloc(): memory corruption | malloc(): invalid next size (unsorted)
  • Unsorted Bin 일관성 확인 (첫 번째 시나리오):
  • 나머지 청크를 unsorted bin에 삽입할 때, unsorted_chunks(av)->fd->bk == unsorted_chunks(av)인지 확인합니다.
  • 오류 메시지: malloc(): corrupted unsorted chunks
  • Unsorted Bin 일관성 확인 (두 번째 시나리오):
  • 이전 확인과 동일하지만, 빠른 또는 작은 청크를 분할한 후 삽입할 때 트리거됩니다.
  • 오류 메시지: malloc(): corrupted unsorted chunks 2

_int_free

이 함수는 이전에 할당된 메모리를 해제합니다. 여기서의 점검은 적절한 메모리 해제를 보장하고 메모리 손상을 방지하는 데 도움을 줍니다.

  • 포인터 경계 확인:
  • 해제되는 포인터가 메모리 주변을 감싸지 않도록 합니다.
  • 오류 메시지: free(): invalid pointer
  • 크기 확인:
  • 해제되는 청크의 크기가 적어도 MINSIZE이거나 MALLOC_ALIGNMENT의 배수인지 확인합니다.
  • 오류 메시지: free(): invalid size
  • Fastbin 크기 확인:
  • fastbin 청크의 경우, 다음 청크의 크기가 최소 및 최대 제한 내에 있는지 확인합니다.
  • 오류 메시지: free(): invalid next size (fast)
  • Fastbin 이중 해제 확인:
  • fastbin에 청크를 삽입할 때, 헤드에 있는 청크가 삽입되는 청크와 동일하지 않은지 확인합니다.
  • 오류 메시지: double free or corruption (fasttop)
  • Fastbin 일관성 확인:
  • fastbin에 삽입할 때, 헤드 청크와 삽입되는 청크의 크기가 동일한지 확인합니다.
  • 오류 메시지: invalid fastbin entry (free)
  • Top Chunk 일관성 확인:
  • fastbin이 아닌 청크의 경우, 청크가 최상위 청크와 동일하지 않은지 확인합니다.
  • 오류 메시지: double free or corruption (top)
  • 메모리 경계 확인:
  • 메모리 영역의 경계 내에 있는 다음 청크를 확인합니다.
  • 오류 메시지: double free or corruption (out)
  • Prev_inuse 비트 확인:
  • 다음 청크의 이전 사용 중 비트가 표시되어 있는지 확인합니다.
  • 오류 메시지: double free or corruption (!prev)
  • 정상 크기 확인:
  • 다음 청크의 크기가 유효한 범위 내에 있는지 확인합니다.
  • 오류 메시지: free(): invalid next size (normal)
  • Unsorted Bin 일관성 확인:
  • 병합된 청크를 unsorted bin에 삽입할 때, unsorted_chunks(av)->fd->bk == unsorted_chunks(av)인지 확인합니다.
  • 오류 메시지: free(): corrupted unsorted chunks
htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 히어로까지 AWS 해킹을 배우세요 htARTE (HackTricks AWS Red Team Expert)!

HackTricks를 지원하는 다른 방법: