이번 블랙햇은 VxWorks, Qualcomm WLAN, iOS 등 Non-click remotely exploitable 취약점 발표들이 인상깊었습니다.

다음 발표들을 소개합니다.

  • Critical Zero Days Remotely Compromise the Most Popular Real-Time OS
  • Exploiting Qualcomm WLAN and Modem Over The Air
  • The Most Secure Browser? Pwning Chrome from 2016 to 2019
  • A Silver Bullet to Discover File Privilege Escalation Bugs Automatically
  • He Said, She Said – Poisoned RDP Offense and Defense

BlueBorne 취약점으로 유명한 Armis의 VxWorks 리모트 취약점 발표입니다.

VxWorks는 약 2억대의 디바이스에서 사용되는 RTOS입니다. 네트워크장비, 의료장비, 산업시스템, 항공/우주, 군사 장비 등 다양한 장비에서 사용되고 있습니다. 그만큼 다양한 분야에서 사용되고 있기 때문에, 많은 관심을 받기에 충분했습니다.

취약점 목록

아래 그림은 발표된 취약점 목록입니다. 총 11건이 발표되었고, 이 중 6건이 Remotely Exploitable한 RCE 취약점입니다.

image

이 취약점 11개 세트를 통틀어 Urgent/11이라고 부르는데, 취약점 중 TCP Urgent Pointer 쪽이랑 관련있는 것이 있고 심각성이 높다보니 그렇게 이름을 지은 것 같습니다.

대부분의 취약점이 VxWorks 6.x 대에서 발견되었습니다. VxWorks 6.6이 2007년 즈음 출시되었으니, 10년이 지난 버전이지만 RTOS 특성상 한번 설치되면 업그레이드하기가 쉽지 않아서 VxWorks 6.x 이 설치된 디바이스가 꽤 많을 것으로 생각되는데, 버전별 점유율 자료는 찾지 못했네요.

취약점

취약점은 IPNet이라 불리는 VxWorks TCP/IP 스택에 존재합니다.

다음과 같은 Weak point 패턴 위주로 VxWorks 펌웨어 바이너리를 분석하여 취약점을 발견하였다고 하네요.

CVE-2019-12256

TCP/IP에서는 Invalid IP Packet을 수신받으면, 이에 대한 Response로 ICMP Error Packet을 생성하여 되돌려 주게 됩니다. ICMP Error Packet은 Invalid IP Packet의 사본을 페이로드로 포함하게 되고요.

IP Option 중에는 SRR(Source Record Route)이라는 옵션이 있는데요. image

ICMP Error Packet을 생성할 때 SRR옵션을 가진 패킷을 사본으로 포함하게 되는 과정에서 length validation이 제대로 이루어지지 않아 스택오버플로우가 발생하게 됩니다.

image

공격 패킷이 Invalid IP Option을 가지므로, 이 패킷은 여러 라우터를 거칠 수 없습니다. 따라서 LAN 상에서만 가능한 취약점입니다.

다른 취약점 상세 내용은 Blackhat 발표자료를 참고해주세요.

공격시나리오

Armis는 이러한 취약점을 이용하면 어떤 공격 시나리오가 가능한지 설명해주고 있습니다.

1) 인터넷에 노출되어 있는 네트워크 장비 직접 공격

image

인터넷에 직접 노출되어 있는 Firewall 장비가 Urgent/11에 취약한 경우입니다. 인터넷에 맞물려 있는 Firewall 장비를 먼저 해킹하고, 내부 네트워크로 침투하는 시나리오입니다.

Shodan에 따르면 VxWorks 기반 방화벽인 SonicWall은 약 80만대가 인터넷에 연결되어 있다고 하네요.

시나리오가 가능함을 보여주는 시연 영상(Armis 제작)입니다.

SonicWall TZ-300 모델을 공격하여 Admin 쉘을 따내고, 최종적으로 내부네트워크에 위치한 프린터에 접근하는 모습을 보여줍니다.


2) 내부 네트워크에 위치한 디바이스 공격

Urgent/11 취약 디바이스(예:프린터)가 방화벽 장비나/NAT 뒤에 내부 네트워크에 위치하더라도, 공격 가능하다는 시나리오입니다.

image

예를 들어, 내부 네트워크에 위치한 프린터가 인터넷 클라우드 서비스로 연결될 때 그 연결과정을 가로채어 MITM을 통해 패킷을 조작하는 방식으로 내부 네트워크의 디바이스를 공격할 수 있습니다. 이런 방식으로 내부로 침투해 다른 디바이스나 PC를 공격할 수도 있겠죠.

다음 동영상은 내부 네트워크에 있는 제록스 3052 프린터가 클라우드 서비스에 연결되는 과정에서 DNS Spoofing을 이용해 가로채고, Urgent/11 공격 패킷을 삽입하여 내부에 위치한 프린터를 외부에서 공격가능하다는 것을 보여줍니다. 내부에 침투하고 나서는 내부에 연결된 노트북 대상으로 BlueKeep 취약점 공격하는 모습을 보여줍니다.

3) 내부 네트워크에 이미 접근되어 있는 경우

같은 네트워크에 VxWorks 장비들이 위치해 있는 경우입니다. 이 경우는 Urgent/11 취약점 패킷을 broadcast하여 한번에 취약 장비를 공격할 수 있을 것입니다.

대응

취약점이 발표된 후, 몇몇 VxWorks 기반 장비 업체들은 빠르게 시큐리티 패치를 내놓고 있습니다. Urgent/11 홈페이지를 가면 업데이트된 내용을 확인할 수 있습니다.

image

문제는 PC 업데이트처럼 자동으로 업데이트할 수 없기 때문에, 수동으로 패치 작업을 진행하여야 한다는 점입니다. 현재까지도 그리고 앞으로도 취약한 디바이스들의 대부분이 취약점을 그대로 내포하고 있을 가능성이 높은 것이죠. 다행히도 PoC는 공개가 되지 않았습니다. 하지만 익스플로잇 개발 가능성은 늘 있습니다.


Exploiting Qualcomm WLAN and Modem Over The Air

Tencent Blade 팀의 퀄컴 WLAN 취약점 발표입니다. 80211 Management Beacon 처리 핸들러에서 발견된 글로벌 버퍼 오버플로우 취약점(CVE-2019-10540)을 설명합니다. 글로벌 버퍼 오버플로우 취약점이라, Heap ASLR 등 여러 Mitigation의 영향을 받지 않아서 익스플로잇하기 용이했다는군요. 인증과정이 필요없는 pre-auth 취약점이라 퀄컴 WLAN을 장착한 모바일 디바이스가 Wifi를 켜면 이 취약점에 공격당할 수 있습니다.

물론 이 취약점 공격에 성공하더라도 Baseband Processor(BP)에 묶여 있기 때문에, Application Processor로 진입하기 위해선 다음과 같은 추가적인 취약점 체인들이 필요하게 됩니다.

  1. WLAN -> Modem
  2. Modem -> Linux Kernel

1)번 과정까진 여전히 BP에 묶여 있고, 2)번 과정을 통해 AP로 진입할 수 있습니다. 1)번 과정이 추가적으로 필요한 것은 2)번 과정에 필요한 리소스(시스템콜등)에 대한 접근권한이 WLAN프로세스는 제한되어 있어서라고 합니다. 1)번 과정은 Modem 메모리를 WLAN 프로세스의 메모리로 매핑할 수 있는 취약점을 발견하여 해결하였다고 하네요. 2)번 과정의 취약점은 발표하지 않았습니다.

PoC는 공개되지 않았고, 데모 동영상을 통해 Pixel 폰 대상으로 공격가능함을 보여주고 있습니다.


The Most Secure Browser? Pwning Chrome from 2016 to 2019

Tencent KeenLab의 Chrome 취약점 발표입니다.

먼저 SET이라는 자바스크립트 (뮤테이션) 퍼저를 소개하고 있습니다. Pwn2Own에 사용된 V8 취약점은 모두 이 SET이라는 퍼저를 통해 발견했다고 하는군요. 뮤테이션 시 Semantic Error를 줄이기 위해, 원본 시드를 조금씩 변형하는 전략을 사용한 것으로 보입니다. 뮤테이션된 자바스크립트 중에서 런타임 오류가 없는 것들만 다시 시드 풀에 담는 방식을 사용했을 것으로 생각되는군요.(자세한 내용이 없어 추정입니다.)

뮤테이션은 다음과 같은 방법을 사용합니다.

  • 동일한 문장을 다른 컨텍스트에서 실행하기
    • 문장을 Loop나 함수로 감싸기
    • if 삽입해서 control flow 변경하기
  • empty loop를 추가하여 함수를 강제로 JITed
  • 가비지 콜렉터 호출 문장 삽입
  • 구조 변환
    • 문장들 순서 섞기
    • 한 문장을 단순 반복

최신 자바스크립트 퍼징은 FuzilliAlchemist를 보면 많은 아이디어를 얻을 수 있습니다.

나머지 내용은 크롬 V8 익스플로잇 방법과 샌드박스 이스케이프에 대한 내용입니다. 저는 퍼저 내용이 더 궁금했는데, 발표자료 대부분이 익스플로잇 테크닉을 다루고 있어서 이 부분에 관심 있는 분들은 참조하면 좋을 것 같습니다.


A Silver Bullet to Discover File Privilege Escalation Bugs Automatically

Tencent에서 발표하였고, DACL Rewrite 취약점 헌팅을 자동화하는 방법을 얘기합니다. 참고로 저희 블로그 포스팅에서 DACL Rewrite 취약점에 대해 다룬 적이 있습니다.

발표자는 시스템에서 발생하는 DACL 변경 이벤트(“SetSecurity”)를 procmon을 이용해 수집합니다. 다양한 이벤트를 수집하기 위해 여러 시스템 애플리케이션을 실행하여 랜덤하게 UI Interaction하는 프로그램을 구현했습니다. 이를 통해 DACL이 변경된 파일 목록을 구할 수 있습니다.

image

수집된 파일 목록에 대해 Symlink나 HardLink를 생성한 후, 다시 DACL 변경 이벤트를 발생시켜 봅니다. Link 타겟의 DACL이 변경되었다면, DACL Rewrite 취약점이 존재한다고 판단할 수 있습니다.

발표자는 이런 자동화 방법으로 3건의 DACL Rewrite 취약점을 발견하였습니다.


He Said, She Said – Poisoned RDP Offense and Defense

CheckPoint에서 발표한 RDP 클라이언트 공격에 대한 내용입니다.

오픈소스인 rdesktop, freerdp에서는 많은 수의 memory corruption 취약점을 발견하였지만, MS RDP Client(mstsc)는 memory corruption 취약점은 1건도 발견하지 못하였다고 하네요.

발표 내용은 주로 MS RDP Client의 논리 취약점에 대해 다룹니다. 특히 기본 기능 중 하나인 클립보드가 서버와 클라이언트간에 동기화된다는 점을 이용하여 다음과 같은 여러 가지 악용이 가능함을 설명합니다.

  1. 서버측에서 클라이언트의 클립보드 스니핑 가능
  2. Copy & Paste를 할 때 임의 위치에 임의 파일을 드롭할 수 있는 취약점(CVE-2019-0887)

Hyper-V에서 VM에 연결할 때 RDP를 쓰기 때문에, 이러한 취약점이 Guest-To-Host 이스케이프에 활용될 수 있다고 하는군요.