안녕하세요.
최근 유무선 라우터, IP카메라, 문 잠금 등 다양한 IoT기기의 사용율이 높아지면서 IoT취약성도 지속적으로 일어나고 있습니다.모바일 및 IoT로 구분되는 제품 군의 대상은 다음과 같습니다.라우터, IP카메라, NAS, 와이브로(에그)모바일 앱, 스마트 가전 기기(스마트 TV, 도어록, 인공 지능 스피커 등), 기타(DVR, 블랙 박스 등)모바일 및 IoT제품 중에서 가장 높은 비율을 차지하는 제품들은 라우터라고 IP카메라에서 펌웨어 내의 cgi파일 또는 바이너리에서 발생하는 취약성이 신고되고 있습니다.라우터라고 IP카메라를 포함한 대부분의 IoT기기는 플래시 메모리를 사용하는 것이 일반적이며 리눅스 커널을 기반으로 하고 있습니다.또 IoT제품의 취약성은 이용자와의 인터페이스를 관리하는 바이너리에서 발생하는 것이 많았습니다.루터와 IP카메라 등 IoT제품의 사용자 인터페이스는 대부분 IoT기기 관리를 위한 관리자 페이지가 존재하고 관리자 페이지를 구성하는 웹 서버 데몬을 분석하고 사용자 입력 값을 처리하는 과정에서 다수의 취약성이 발견되었습니다.공격자는 관리자 권한이 없어도 디폴트 계정 또는 펌웨어에 하드 코딩된 계정, 불필요한 포트 취약성 등을 통해서 입력치 미검증에서 발생하는 오버 플로 CommandInjection공격을 수행할 수 있습니다.
[모바일 및 IoT의 주된 취약성 공격 타입]● 오버 플로-모바일 및 IoT제품 군에서 발생하는 오버 플로 취약성은, 전회 설명한 Application과 취약성 발생 원인은 같지만, Application제품들은 Windows기반의 소프트웨어 비율이 높은 반면, IoT제품들은 Linux를 베이스로 하고 있다는 점이 다릅니다.또 IoT제품의 경우 사용하는 메모 리사이즈가 일반 PC보다 크지 않아, Application에서 발생하는 메모리 취약성보다 공격이 용이할 수 있습니다.대표적인 예로 아래의 그림은 IP카메라를 관리하기 위한 관리 페이지에서 Http요구를 처리할 때 실행되는 코드입니다.프로시저를 통해서 Http요구가 수신되면 요구한 패킷의 세션 값을 확인하기 위해서 Http_Page_GetSessionCookie()함수가 실행됩니다.Http Parse Get Session Cookie()함수는 인자 값에 변수 s의 주소를 전달하지만 인자 값은 memset()함수를 통해서 0x40의 크기만 메모리에 할당되어 있습니다.
출처 – 위키백과
[오버 플로 취약성에 취약한 IoT기기 펌웨어 코드 ①]Http_Parse_GetSessionCookie()함수는 사용자의 HTP요구 패킷의 x-sessioncookie값을 취득합니다. x-sessioncookie값은 아래와 같이 sscanf()함수를 통해서 버퍼에 입력됩니다만, x-sessioncookie치의 크기가 0x40을 넘는지를 검증하는 절차가 빠지고 있습니다.그러므로, 공격자는 HTTP요구 내 x-sessioncookie치에 0x40보다 많은 데이터를 입력하고 프로그램 실행 흐름을 변경할 수 있습니다.
출처 – 위키백과
출처 – 위키백과