목록2019/08/20 (1)
trash houz
[Linux Kernel] CISCN 2017 babydriver
- 분석 device 파일 open() 시에 실행되는 함수. 전역 변수. bss영역에 babydev_struct라는 구조체가 있고, 구조체 변수중 device_buf에 64바이트만큼 동적 할당해준다. 이후 구조체 변수 device_buf_len에 크기까지 저장. 여기까지 open() 완료 close() 통해 디바이스를 종료하면 실행되는 babyrelease() 함수. babydev_struct 구조체의 device_buf를 참조하여 kfree() 해버린다. 다만 따로 전역변수 .bss 영역을 초기화하지는 않는다. 만약 디바이스를 두개 열게 되면 두 개의 디바이스는 똑같은 babydev_struct 구조체를 가리킨다. 이렇게 된다면 free() 후에도 참조할 수 있는 UAF 취약점이 발생하게 된다. bab..
Writeup
2019. 8. 20. 20:53