[하루한줄] BrokenPrint: A Netgear stack overflow
URL
BrokenPrint: A Netgear stack overflow
Target
Netgear R6700v3 V1.0.4.118_10.0.90
Explain
Netgear R6700v3 라우터의 /usr/bin/KC_PRINT
서비스에서 stack buffer overflow 취약점이 발견되었습니다. 해당 취약점을 악용해 라우터의 관리자 권한으로 원격 코드 실행을 할 수 있습니다.
KC_PRINT
서비스는 HTTP 리퀘스트를 받으면 Content-Length
헤더로 부터 8 byte의 데이터를 읽습니다. 해당 8 byte에 따라 전체 HTTP content를 복사할 heap buffer를 할당 한 후 실행할 함수의 종류가 결정됩니다. 그중 함수 Response_Get_Jobs()
는 stack buffer overflow 취약점이 존재합니다.
// copy_len equals maximum: 0xff00 + 0xff
// and a copy is made into command[] which is a 2048-byte buffer
copy_len = (recv_buf[offset] << 8) + recv_buf[offset + 1];
offset += 2;
if ( flag2 )
{
// /!\ VULNERABILITY HERE /!\
memset(command, 0, sizeof(command));
memcpy(command, &recv_buf[offset], copy_len);// VULN: stack overflow here
...
위의 코드는 함수 Response_Get_Jobs()
의 일부입니다. memcpy()
를 통해 2048 byte크기의 배열 command[]
에 copy_len
만큼의 데이터를 복사합니다. 문제는 copy_len
을 임의의 크기로 조작할 수 있어서 stack overflow가 가능합니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.