mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
92 lines
5.9 KiB
Markdown
92 lines
5.9 KiB
Markdown
# 힙 함수 보안 점검
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 히어로까지 AWS 해킹을 배우세요</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
HackTricks를 지원하는 다른 방법:
|
|
|
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|
* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
|
|
* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [telegram 그룹](https://t.me/peass)에 **가입**하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
|
|
* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
|
|
|
|
</details>
|
|
|
|
## unlink
|
|
|
|
이 함수는 이중 연결 리스트에서 청크를 제거합니다. 일반적인 점검은 청크를 unlink할 때 연결된 리스트 구조가 일관되게 유지되도록 합니다.
|
|
|
|
* **일관성 점검**:
|
|
* `P->fd->bk == P` 및 `P->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`
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 히어로까지 AWS 해킹을 배우세요</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
HackTricks를 지원하는 다른 방법:
|
|
|
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|
* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
|
|
* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [telegram 그룹](https://t.me/peass)에 **가입**하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
|
|
* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
|
|
|
|
</details>
|