인프런 커뮤니티 질문&답변

김성수님의 프로필 이미지

작성한 질문수

리눅스 커널 해킹. A부터 Z까지

Kernel UAF

해결된 질문

작성

·

499

0

안녕하세요!

kernel uaf 강의를 듣고 궁금한 점이 있는데요,

kernel uaf 예제 취약점을 공격할 때, kmalloc에 별다른 크기 조정을 안하고 드라이버에 지정된 0x90크기로 heap을 할당하고 해제하는 것으로 cred 구조체가 해제된 자리를 사용해서 dangling pointer가 그 영역을 가리킬 수 있었던 것은 cred 구조체의 크기가 0x90 이거나 그보다 작아서 인가요??

그리고 추가적으로 혹시 cred 구조체의 크기를 구할 수 있는 방법이 있을까요??

좋은 강의 감사합니다!!

답변 1

1

김현우님의 프로필 이미지
김현우
지식공유자

안녕하세요.

cred overwrite 기법을 사용할 수 있는 커널 버전에서는, cred와 동일한 크기에 속하는 kmalloc-N 슬랩 캐시의 객체를 이용해 UAF를 트리거할 수 있습니다.

또, 커널 구조체의 크기는 커널 버전마다 다르기 때문에 이를 확인하려면 pahole을 사용해야 합니다.

https://manpages.ubuntu.com/manpages/impish/man1/pahole.1.html

위의 설명대로 pahole을 이용해 cred 구조체의 크기를 구할 수 있습니다.

감사합니다.

김성수님의 프로필 이미지
김성수
질문자

답변 감사합니다!!