킨들이 위험하다? 유명 부트로더에서 취약점 다수 나와

2019-11-08 13:27
  • 카카오톡
  • url
아마존 킨들, ARM 크롬북 등 다수 장비들에 탑재된 다스유부트 부트로더
디도스, 장비 장악 등 가능케 해주는 취약점 다수 나와...패치는 됐지만 배포가 문제


[보안뉴스 문가용 기자] 아마존의 킨들, ARM 크롬북을 비롯해 각종 장비와 네트워크 하드웨어에 사용되는 부트로더인 다스유부트(Das U-Boot)에서 취약점이 여러 개 발견됐다. 이 취약점들을 익스플로잇 할 경우, 공격자들이 장비의 CPU를 완전히 장악하고 시스템을 마음대로 조작할 수 있게 된다고 한다.


[이미지 = iclickart]

이 취약점을 발견한 건 보안 업체 포올시큐어(ForAllSecure)로, “유부트의 파일 시스템 드라이버를 분석하다가 성과를 올린 것”이라고 한다. “DOS 파티션 파서에서의 반복적 스택 오버플로우, ext4에서의 버퍼 오버플로우와 더블 프리 메모리 변형 취약점 등으로 구분이 가능합니다. 익스플로잇에 성공할 경우 서비스 마비, 장비 장악, 코드 실행 공격을 할 수 있습니다.”

익스플로잇은 로컬에서도 가능하고 원격에서도 가능하다. 유부트 부트로더가 탑재된 장비가 외부 매체(SC 카드나 USB 드라이버 등)로부터 부팅하도록 설정이 되어 있다면 공격자는 물리적으로 접근해 부팅 과정을 조작할 수 있게 된다. 이 경우 OS에까지 영향을 줌으로써 사실상 장비를 완전히 장악하는 게 가능하다.

장비가 네트워크를 통해 부팅하도록 설정이 되어 있다면, 원격에서 접근할 수 있다. 장비가 연결되어 있는 조직의 와이파이 망 등을 먼저 침해함으로써 표적이 된 장비에 접속해 취약점을 익스플로잇 할 수 있는 것이다. “소셜 엔지니어링 공격법이나 엔드포인트 취약점 익스플로잇을 활용하면 망 전체에 접근할 수 있게 되고, 여기서부터 부트로더를 공략할 수 있게 됩니다.”

포올시큐어의 분석 엔지니어인 맥스웰 쿠(Maxwell Koo)는 취약점들에 대해 다음과 같이 설명한다. “CVE-2019-13103은 스택 오버플로우 취약점으로, 유부트의 모든 버전에서 발견된 것입니다. DOS 파티션 테이블을 읽을 때 취약점을 발동시킬 수 있습니다. ‘part_get_info_extended’라는 함수가 스스로를 반복적으로 호출하는 것이 취약점의 정체인데, 이 때문에 제한이 없는(unbounded) 스택 축적이 이뤄집니다.”

이 상태가 되면 제일 먼저 서비스 마비 현상이 일어난다. 하지만 쿠는 “시스템과 환경에 따라 더 나쁜 일이 벌어질 수도 있다”고 말한다. “예를 들어 스택이 쌓이는 가운데 영향을 받는 영역과 공간에서 다른 데이터가 실행될 수 있습니다. 그러면서 전혀 예측 불가능한 현상이 발생할 수 있습니다. 이를 이용해 공격자가 임의 코드를 실행할 수도 있고요.”

그 다음 취약점은 CVE-2019-13104다. 버퍼 오버플로우 취약점으로, 유부트 2016.11-rc1 버전에서 2019.07-rc4 버전까지에 영향을 준다. “이 취약점이 발동되어 안 좋은 방향으로 작동하기 시작하면 memcpy가 무한정 길이로 실행됩니다. 모든 메모리 영역에 덮어쓰기가 일어납니다. 계속해서 메모리가 변형된다는 겁니다.”

버퍼 오버플로우 취약점은 하나 더 있다. CVE-2019-13106으로 CVE-2019-13104보다 좀 더 위험하다고 한다. 유부트 2016.09 버전에서부터 2019.07-rc4 버전까지 영향을 준다. “ext4 코드가 ext4fs_read_file 함수 내 스택 중 0인 부분을 덮어쓰기 할 수 있게 됩니다. 그러면서 신뢰할 수 없는 파일시스템에 파일들의 목록을 생성합니다. 이 과정을 통해 공격자들은 비교적 간단하게 CPU에 대한 통제권을 가져갈 수 있게 됩니다.” 이 취약점의 경우 파일 이름이 블록 경계선을 가로지르는 위치에 지정될 때 발동된다고 한다.

CVE-2019-13105이라는 취약점도 있다. 유부트 2019.07-rc1 버전부터 2019.07-rc4 버전에까지 영향을 미친다. ex_cache_ini에서 발견된 더블 프리(double-free) 버그의 일종이다. 더블 프리 버그는 변수가 두 번 겹쳐서 free() 함수를 거치는 것을 말하며, 그에 따라 해당 변수에 지정된 메모리 영역이 비게 되는 현상을 말한다.

그 외에도 위험도가 낮은 취약점이 5개 추가로 나오기도 했다. 확장된 파일 시스템이 부적절할 때 발동되는 ‘디바이드 바이 제로(divide-by-zero) 버그’들이라고 한다.

유부트 측은 이 모든 버그들은 패치해 2019.10 버전을 발표했다. 이제 문제는 장비 제조사와 최종 사용자들이 이 버전으로 자신의 장비를 언제 업데이트 하느냐이다. 유부트는 최신 버전 배포를 스스로 하지 못하고, 아마존과 같은 파트너사들이 업데이트 파일을 최종 사용자들에게까지 보내야만 한다.

“부트로더는 주로 임베디드 장비들에서 사용되는 요소고, 따라서 업데이트 주기가 매우 길거나 아예 없을 때가 많습니다. 즉, 생태계 내에서 패치 안 된 버전들이 자주 발견된다는 겁니다. 그렇다는 건 사용자들이 거의 항시 위험에 노출되어 있다는 뜻입니다. 부트로더를 장비에 탑재시킨 벤더사들과 사용자들이 업데이트 소식에 민감하게 반응해야만 안전해질 수 있습니다.” 쿠의 설명이다.

3줄 요약
1. 킨들 등 다양한 장비에 탑재된 부트로더인 ‘다스유부트’에서 취약점 다수 발견.
2. 디도스 공격부터 원격 코드 통한 장비 장악까지 이어질 수 있음.
3. 패치는 나온 상태지만, 배포는 벤더사들의 의지에 달려 있는 상태.

[국제부 문가용 기자(globoan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>

이전 스크랩하기

과월호 eBook List 정기구독 신청하기

Copyright Mediadot Corp. All Rights Reserved.

MENU

PC버전

닫기