loading

PC.Div.Soft/News

Broadcom Wi-Fi의 취약점 'Broadpwm' 상세, 웜의 악몽 재현

나에+ 2017. 7. 30. 00:45
반응형

■ 출처

http://pc.watch.impress.co.jp/docs/news/1073143.html

https://blog.exodusintel.com/



- WiFi를 켜놓고 있는 것만으로도 당할 가능성 있어... Galaxy/Nexus/iPhone 등이 표적 -


시큐리티 연구소의 Nitay Artenstein씨가 26일, Broadcom의 WiFi칩 'BCM43xx' 제품군에 임의의 코드를 실행할 수 있는 취약점 'Broadpwm'의 세부 사항을 발표했습니다. 악용하게 되면 2000년 전후에 유행했던 '웜'의 악몽이 재래할 것이라고 하며 경종을 울리고 있습니다. 또한, Apple의 'iOS 10.3.3' 및 macOS Sierra 10.12.6에서는 이 취약점이 수정되었다고 합니다.


Broadcom의 BCM43xx 제품군은 삼성의 Galaxy S3에서 S8까지 모든 제품, Galaxy Note 3, Google의 Nexus 5/6/5X/6P, iPhone 5이상의 모든 iPhone에 들어가 있어 이러한 장치들을 대상으로 이 취약점을 이용한 악용될 가능성이 있습니다.


BCM 43xx 칩은 Cortex-R4 마이크로 컨트롤러 및 독자 프로세서를 기반으로 하고 있으며, 전자는 MAC 및 MLME레이어를 다루고, 후자는 802.11 물리 계층을 책임집니다. 시작시에는 Cortex-R4 측에 프로그램이 RAM에 읽어들이지만, 이 RAM 영역은 ASLR(Adress Space Layout Randomization:무작위 주소 공간 배치)나 DEP(Data Execution Prevention:데이터 실행 방지) 기능이 없고, 모든 영역에 RWX(읽기/쓰기/실행) 권한이 부여되어 있다고 합니다. 그렇기에 Nitay씨가 이 RAM 영역에서 프로그램을 실행할 수 있느지를 연구했다고.

이 Cortex-R4는 HNDRTE라고 하는 미스터리한 독자적인 리얼 타임 OS를 동작하고 있는데, HNDRTE의 소스는 사유 소프트웨어로, 공개되어 있지 않다. 하지만 이전 Broadcom은 VMG-1312라는 칩셋을 사용한 Wi-Fi 라우터로, Linux 용 오픈 소스 드라이버와 함께 사유 드라이버의 소스코드를 유출했고, 그 속에서 실마리를 찾을 수 있었다고 합니다.


또 하나의 과제는 공격 타겟과 같은 네트워크 상에 있지 않는 상태에서 어떻게 Wi-Fi 칩 내부에 침입하느냐였는데, 여기서 연구자들은 IEEE 802.11 협회의 거동에 주목했습니다.


IEEE802.11은 암호화 통신이 이루어지기 전에도 통신이 이루어지고 있는데, 바로 액세스 포인트를 찾는 단계입니다. 단말기는 먼저 AP에 프로브 요청을 던지고, AP에서 응답을 반환하죠. 그 후, 지원되는 암호화 유형과 802.11의 기능 등을 포함한 데이터도 주고 받습니다. 실제 암호화 통신은 이 시퀀스 후에 행해지기 떄문에, 이 시퀀스에서 MAC 주소나 SSID를 위장하거나 하여 인증을 거치지 않고 버그를 일으킬 수 있게 됩니다.


Broadcom은 802.11의 다양한 프로토콜 및 펌웨어 자체의 다양한 기능을 쉽게 처리할 수 있도록 모듈로 구조로 이 시퀀스를 구현하고 있는데, 그게 바로 'wlc_attach_module'입니다. 그리고 이 안에 있는 함수의 범위를 좁혀나가자, 트래픽 우선 순위를 설정하는 무선 멀티미디어 확장(WMM)의 함수 'wlc_iem_add_parse_fn' 버그를 발견했다고 합니다.


이 프로그램에서 버퍼 'current_wmm_ie'가 크기'ie'의 데이터를 보관하는 데 충분한 크기인지를 확인하지 않고, 함수 'memcpy()'를 호출했는데요, 연구자가 실제로 실험해보니 current_wmm_ie는 44바이트 만큼의 메모리를 할당(얼로케이트)했지만, ie의 최대 크기는 255바이트로, 211바이트 만큼 오버플로우했다고 합니다.


오버플로우된 코드는 'wlc_pm_st'의 형태이고, 절전 모드로 전환하거나 절전 모드를 지속하는 등 전력 관리 상태를 표시합니다. 하지만 이 구조체에 데이터를 덮어써도, 시스템이 충돌하지 않는 영역, 그리고 SSID 문자열을 보유하고 있는 인접하는 구조체의 영역을 합쳐도 44바이트 밖에 안되어 의미있는 프로그램을 넣을 수는 없었다고 합니다.


그래서 연구자들은 조금 전의 영역을 실제 프로그램으로 점프하는 스터브(stub?)로 해서, 실제 프로그램의 페이로도로 하여 보다 대용량 링 버퍼(스캔한 SSID의 정보를 보유 지정해두는 곳)에 두기로 했습니다.


마지막은, Broadcom 칩에서 벗어나 메인 애플리케이션 프로세서의 코드 실행으로 승격하는 것인데요, 지금으로썬 3가지 방법이 있을 수 있다고 합니다.


1. Broadcom의 커널 드라이버의 버그를 찾는 것, 하지만 이 방법은 어렵고 자칫하면 시스템이 멈춰버려 의미가 없다.

2. PCI Express버스를 사용해 커널 메모리를 직접 읽고 쓰는 법

3. 공격 대상이 HTTPS가 아닌 사이트를 방문할 때까지 기다린 다음, Wi-Fi 칩에서 악성 URL로 리디렉션한다. 하지만 웹브라우저마다 익스플로이드체인을 마련해야 할 필요가 있음


현재의 연구 대상은 주로 3번이지만, 이미 연구자는 암호화되지 않은 HTTP 트래픽을 발견하는 함수를 찾아내고 있다고 합니다.


블로그의 마지막에 이 Broadpwm은 첫번째 'Wi-Fi 웜'이라고 평가했습니다. 이 연구에서, 혼잡한 도시에서 1시간 정도 모니터링한 결과 Probe Request로 수백개의 SSID 이름을 도청했고, 이중 약 70%가 Broadcom의 Wi-Fi칩이었다고 합니다. 그렇기에 Broadpwm을 악용한 프로그램이 만약 나타난다면 며칠 안에 거대한 영향을 미칠것이라고 합니다.


반응형

'PC.Div.Soft > News' 카테고리의 다른 글

AMD, Ryzen Threadripper 8월 10일 발매  (0) 2017.07.31
AMD Ryzen Threadripper 뚜따 - EPYC  (0) 2017.07.29
Adobe Flash, 2020년을 끝으로 종료  (0) 2017.07.29