Overwriting a freed chunk
제안된 힙 악용 기법 중 몇 가지는 해제된 청크 내부의 포인터를 덮어쓸 수 있어야 합니다. 이 페이지의 목표는 이러한 액세스를 부여할 수 있는 잠재적 취약점을 요약하는 것입니다:
단순 Use After Free
공격자가 해제된 청크에 정보를 쓸 수 있다면, 필요한 포인터를 덮어쓰기 위해 이를 악용할 수 있습니다.
이중 해제(Double Free)
공격자가 **동일한 청크를 두 번 free
**할 수 있다면(가능한 경우 사이에 다른 청크를 해제) 그리고 이를 동일한 bin에 2번 넣을 수 있다면, 사용자가 나중에 해당 청크를 할당하고 필요한 포인터를 쓰고 다시 할당하여 해당 청크가 할당되는 동작을 유발할 수 있습니다(예: fast bin 공격, tcache 공격...).
힙 오버플로우
할당된 청크를 오버플로우시키고 그 다음에 해제된 청크가 있는 경우 해더/포인터를 수정할 수 있을 수도 있습니다.
Off-by-one 오버플로우
이 경우 메모리에서 다음 청크의 크기를 수정할 수 있습니다. 공격자는 이를 악용하여 할당된 청크의 크기를 더 크게 만들어 **free
**하고, 청크가 다른 크기(더 큰 크기)의 bin에 추가되도록 만들 수 있습니다. 그런 다음 가짜 크기를 할당하면 공격자는 실제보다 큰 크기의 청크에 액세스할 수 있게 되어, 따라서 중첩된 청크 상황에 악용할 수 있게 됩니다. 이는 힙 오버플로우와 동일하게 악용 가능합니다(이전 섹션 확인).
Last updated