완료됨
uninit1.c코드 취약점
해당 코드에서 취약점이 2가지라고 나와있는데 한가지 더 있는것이 아닌가 여쭙습니다.
name_len이 null인지 아닌지 검증하는 코드가 없기 때문에 name_len이 음수인 경우에 32bit 시스템이나 64bit시스템이여도 메모리가 적다면 malloc에 대한 return값이 NULL이 될 수 있습니다. 그러면 read에서 null값을 참조하는 null dereference가 발생할 수 있지 않나요??
#시스템해킹
작성자 정보
답변
1
5unkn0wn
강의 수강: 50
커널에서 read syscall을 처리할 때 버퍼의 주소가 올바르게 매핑된 주소가 아니라면 (e.g. 0x0, 0x41414141, ...) EFAULT
에러와 함께 syscall이 실패하게 됩니다. 또한 printf 함수도 내부적으로 %s
포맷스트링의 인자가 0인지 검사하는 로직이 있기 때문에 null dereference가 발생하지는 않습니다.
다만 이 부분은 강의에서 모호하게 느껴질 수 있으니 name_len의 타입을 unsigned int로 변경해두도록 하겠습니다 !