"수백만개 IoT 장치에 영향을 끼치는 치명적 취약점 공개"
[애플경제] 파이어아이 맨디언트가 미 연방 사이버보안국(Cybersecurity & Infrastructure Security Agency)과 대만 IoT 클라우드 서비스 기업 쓰루텍(ThroughTek)의 칼레이(Kalay) 플랫폼 네트워크를 사용하는 8300만여대의 IoT 기기에 대한 치명적인 위협 취약점을 공개했습니다. 이 취약점은CVSS3.1 기본 점수 9.6 수준의 치명적인 취약점입니다.
쓰루텍은 칼레이 플랫폼을 제공합니다. 이 플랫폼은 P2P(Point to Point) 방식으로 IoT 장치와 클라우드 서비스를 연결합니다. 이 기술이 Kalay 플랫폼의 주요 특징인데요, 이 기술을 통해 높은 전송 효율과 짧은 대기 시간을 구현합니다.
칼레이 플랫폼에 연결되는 주요 장치는 IoT 카메라, 스마트 베이비 모니터, DVR(Digital Video Recorder) 등입니다. 대용량 오디오, 비디오 파일을 P2P 네트워크를 통해 전송한다고 보면 됩니다.
P2P가 갖는 탈중앙화 특징으로 보안성이 높은데요... 그럼에도 취약점이 노출좨 칼레이 플랫폼에 연결된 8300만개 이상의 장치를 위태롭게 했습니다. 이번에 공개된 취약점을 악용하면 공격자는 IoT 장치 손상 및 실시간 비디오 및 음성 데이터를 탈취 등이 피해를 입힐 수 있습니다.
맨디언트가 발견한 취약점은 CVSS3.1 기본 점수 9.6 수준의 치명적인 것입니다. 그리고 현재 CVE-2021-28372, FEYE-2021-0020으로 추적 중입니다. 또 현재 CISA(Cybersecurity & Infrastruture Security Agency)에서 쓰루텍 칼레이 P2P SDK에 대한 보안 권고를 발표한 상황입니다. CISA는 칼레이 플랫폼 이용 조직에 맨디언트 및 쓰루텍의 보안 권고를 따를 것을 권장하고 있습니다.
이에 따르면 구현된 SDK가 3.1.10 버전 이하일 경우 라이브러리를 버전 3.3.1.0 또는 3.4.2.0으로 업그레이드하고 칼레이 플랫폼에서 제공하는 Authkey 및 DTLS(Datagram Transport Layer Security) 기능을 활성화합니다. 또 구현된 SDK가 3.1.10 버전 이상일 경우 Authkey 및 DTLS를 활성화하십시오.
더불어 칼레이 고유 식별자(UID)를 반환하는 API 또는 기타 서비스에 대한 보안 제어를 검토합니다.
그렇다면 공격자는 이번에 공개된 취약점을 어떻게 이용할까요? 공격자는 칼레이 UID를 반환하는 API 또는 서비스의 취약성을 통해 칼레이 UID를 획득합니다. 이를 통해 해당 UID에 해당하는 장치를 원격으로 손상할 수 있습니다. 칼레이 플랫폼 이용 조직은 우선 모든 소프트웨어를 최신으로 업데이트하고 신뢰할 수 없는 공용 네트워크 연결을 피해야 합니다.
맨디언트 연구원들은 2가지 접근방식으로 칼레이 플랫폼의 P2P 프로토콜을 분석했습니다.
먼저 연구원들은 쓰루텍 라이브러리가 포함된 앱을 구글 플레이 스토어와 애플 앱 스토어에서 다운로드해 분석했다고 합니다. 이러한 라이브러리에는 일반적으로 디버깅 심볼이 포함되어 있지 않아 연구원들은 Frida, gdb, Wireshark 같은 도구를 이용해 동적 분석도 수행했다고 합니다.
다음으로 연구원들은 다양한 칼레이 지원 장치를 구매해 로컬 및 하드웨어 기반 공격을 수행하는 동적 테스트를 실행했습니다. 이를 위해 UART/JTAG 인터페이스 식별, 칩 오프(chip-off) 공격, 장치에 있는 기타 디버깅 기능 등을 활용했습니다. 참고로 칼레이의 프로토콜은 AV 처리 외에도 원격 측정이나 펌웨어 데이트 등을 위해 RPC 기능도 구현돼 있습니다.
연구원들은 칼레이의 프로토콜의 논리 및 흐름 취약성을 식별하는 데 집중했습니다. 연구원들은 장치 등록 프로세스에서 네트워크에 액세스하기 위해 장치에 고유하게 할당된 20바이크 식별자(UID)가 필요하다고 보았습니다. 테스트 환경에서 연구원들은 이 UID를 칼레이 지원 클라이언트에 제공했습니다. 연구원들은 UID에 대한 무차별 대입 실행 가능성을 조사했는데 필요 리소스와 시간 측면에서 실행 불가능한 것으로 나타났습니다.
다음 그림은 칼레이 네트워크에서 일반적인 장치 등록 및 클라이언트 연결 프로세스를 보여줍니다. 예제 시나리오는 사용자가 홈 네트워크에 있는 칼레이 지원 카메라를 사용해 원격 네트워크(커피숍 무선 네트워크 또는 이동통신 망)를 통해 모바일 애플리케이션의 카메라 피드에 원격으로 접근하는 것입니다.
공격자가 피해자의 칼레이 장치의 UID를 획득하면 네트워크에서 동일한 UID를 가진 장치를 악의적으로 등록하고 칼레이 서버가 기존 장치를 덮어쓰게 할 수 있습니다. 공격자가 악의적으로 UID를 등록하면 피해 장치의 UID에 액세스하려는 모든 클라이언트 연결 시도가 공격자에게 전달됩니다.
이를 통해 공격자는 연결 프로세스를 이어가는 가운데 장치에 액세스하는 데 필요한 인증 정보를 구할 수 있습니다. 다음 그림은 동일한 UID를 가진 피해 장치와 악성 장치가 네트워크에 동시에 존재할 때 클라이언트의 연결 시도가 어디로 가는지를 보여줍니다. 이 예에서 악의적인 등록은 네트워크의 기존 등록을 덮어쓰므로 클라이언 연결이 악의적인 장치로 라우팅 됩니다.
손상된 자격 증명으로 공격자는 칼레이 네트워크를 사용해 원래 장치에 원격으로 연결하고 AV 데이터에 접근하고 RPC 호출을 실행할 수 있습니다. 이에 따라 공격자는 RPC 인터페이스 취약점을 이용해 원격에서 장치를 손상할 수도 있습니다.
연구원들은 칼레이 데이터를 처리하는 IoT 장치의 바이너리가 일반적으로 루트 권한으로 실행되며 ASLR(Address Space Layout Randomization), PIE(Platform Independent Execution), 스택 카나리아(stack canaries), NX 비트 같은 일반적인 바이너리 보호 기능이 적극적으로 사용하지 않을 경우 위험에 노출될 수 있음을 관찰했습니다.
다음 그림은 칼레이 RPC 인터페이스 취약점을 악용하여 추가 공격을 준비하기 위해 캡처된 사용자 이름과 암호를 사용하는 가상의 공격을 보여줍니다.
맨디언트와 쓰루텍은 칼레이의 프로토콜을 사용하는 경우 최소 3.1.10 버전으로 업그레이드하는 것을 강력하게 권장합니다. 더불어 DTLS, AuthKey 기능을 결합해 사용하면 위험을 줄이고 공격자가 프로토콜을 남용하는 것을 방지할 수 있습니다.
ASLR, PIE, 스택 카나리, NX 비트 같은 보안 강화 기능도 칼레이 데이터를 처리하는 모든 바이너리에서 활성화돼야 합니다. 더불어 PRC 기능은 꼭 필요한 경우가 아니면 신뢰할 수 없는 것으로 여기고 삭제해야 합니다.
이번 취약점 사례는 IoT 네트워크를 노린 공격의 한 유형을 잘 보여줍니다. 어떤 네트워크이건 안전을 100% 보장할 수 없다는 사실을 또 한 번 확인할 수 있는 사례가 아닐까 싶네요.
(제공=파이어아이 맨디언트)
