연구 목록으로
차량용 인포테인먼트(IVI) 시스템의 펜웨어 분석
완료

차량용 인포테인먼트(IVI) 시스템의 펜웨어 분석

Firmware Analysis of In-Vehicle Infotainment Systems

IVIAVNFirmware AnalysisPenetration TestingVehicle Hacking

펌웨어는 자동차 인포테인먼트 장치를 작동하게 만드는 저수준 소프트웨어로, 화면의 앱보다 먼저, 그리고 그 아래에서 동작하는 코드입니다. 펌웨어를 분석하는 것은 이러한 임베디드 시스템이 어떻게 구성되고, 어떻게 부팅되며, 어떻게 스스로를 업데이트하고, 얼마나 잘 보호되는지를 이해하는 방법입니다. 이 글은 순천향대학교 LISA Lab에서 수행하는 차량 헤드 유닛 펌웨어 분석 연구를 소개합니다.

펌웨어란 무엇이며, 왜 분석하는가

펌웨어는 헤드 유닛의 칩에 저장된 영구 소프트웨어입니다 — 부트로더, 운영체제 커널, 그리고 여러 하드웨어를 하나의 작동하는 컴퓨터로 만들어 주는 시스템 이미지들을 말합니다. 화면의 앱보다 아래에 있는 계층으로, 하드웨어가 어떻게 켜지고, 어떤 운영체제가 실행되며, 그 과정에서 무엇이 로드되는지를 결정합니다.

펌웨어를 분석하는 것은 임베디드 시스템이 실제로 어떻게 동작하는지 — 광고된 모습이 아니라 실제 거동 — 를 가장 직접적으로 이해하는 방법입니다. 연구자에게는 근본적인 질문에 답을 줍니다. 이 장치가 어떤 프로세서와 운영체제를 쓰는지, 저장소가 어떻게 구성되는지, 스스로를 어떻게 업데이트하는지, 그리고 얼마나 잘 보호되는지입니다. 자동차 소프트웨어 연구의 거의 모든 것이 이 답 위에 세워집니다.

헤드 유닛 속으로: 저장소와 파티션

펌웨어는 기판의 비휘발성 플래시 메모리 — 보통 자동차 전원이 꺼져도 내용을 유지하는 eMMC 칩 — 에 저장됩니다. 이 칩을 찾아내고 그 구성을 이해하는 것이 펌웨어 분석의 첫 번째 실질적 단계 중 하나입니다.

이 저장소는 하나의 나뉘지 않은 공간이 아닙니다. 각기 정해진 역할을 가진 파티션으로 나뉩니다. 모든 것을 시작시키는 부트로더 파티션, 부트 이미지(커널과 작은 시작 환경), 시스템 이미지(안드로이드 OS와 기본 앱), 벤더 이미지(하드웨어 전용 드라이버와 라이브러리), 그리고 복구 이미지(시스템을 수리하거나 재설치할 때 쓰는 최소 환경)입니다. 이 파티션들을 — 각각 무엇을 담고 있고 크기가 얼마인지 — 파악하면, 장치 소프트웨어의 각 조각이 정확히 어디에 있는지 알 수 있습니다.

부팅 체인: 전원 인가에서 시스템 구동까지

헤드 유닛은 전원이 들어와도 곱바로 익숙한 터치스크린으로 넘어가지 않습니다 — 하나의 체인을 밟아 올라갑니다. 먼저 작은 부트로더가 실행됩니다(자동차 장치는 흔히 U-Boot나 'Little Kernel' 계열 로더를 사용합니다). 부트로더는 기본 하드웨어를 초기화하고 리눅스 커널에 제어를 넘기며, 커널은 드라이버와 핵심 시스템을 구동합니다. 그런 다음에야 안드로이드 계층이 시작됩니다. 시스템 서비스, 애플리케이션 프레임워크, 그리고 마지막으로 사용자 인터페이스입니다.

이 체인의 각 단계는 펌웨어 안에 존재하며, 그것이 어떻게 펼쳐지는지를 추적하면 플랫폼의 구성 요소 — 정확한 커널 버전, CPU 아키텍처, 하드웨어와 소프트웨어가 연결되는 방식 — 가 드러납니다. 아래 다이어그램은 가장 아래의 하드웨어와 부트로더에서부터 운전자가 실제로 다루는 앱까지 이 계층들이 어떻게 쌓이는지를 보여 줍니다.

헤드 유닛은 어떻게 스스로를 업데이트하는가

휴대폰처럼 자동차 인포테인먼트 시스템도 소프트웨어 업데이트를 받습니다 — 버그 수정, 기능 추가, 보안 문제 해결을 위해서입니다. 업데이트는 무선(OTA)이나 USB 드라이브로 전달되는 업데이트 패키지 형태로 도착하며, 시스템 내부의 애플리케이션이나 그 아래에서 동작하는 전용 저수준 구성요소에 의해 적용됩니다.

업데이트 패키지는 본질적으로 앞서 설명한 것과 같은 파티션 이미지들 — 부트, 시스템, 벤더, 복구 — 의 묶음이며, 이를 설치하기 위한 지침과, 흔히 모뎀·미디어 프로세서·텔레매틱스 유닛 같은 주변 모듈의 업데이트도 함께 담고 있습니다. 이 파이프라인이 어떻게 구성되는지 — 패키지가 어떻게 구조화되고, 내용이 어떻게 검증되며, 장치에 어떻게 기록되는지 — 를 이해하는 것은 펌웨어 연구의 핵심입니다. 업데이트 과정은 전체 시스템이 어떻게 조직되어 있는지를 보여 주는 가장 분명한 창 중 하나입니다.

세대별로 본 펌웨어 보안

여러 연식에 걸쳐 펌웨어를 살펴보면 분명한 흐름이 보입니다. 자동차 소프트웨어를 둘러싼 보호가 꾸준히 강화되어 왔다는 점입니다. 초기 시스템은 주로 단순한 무결성 검사 — 파일이 손상되지 않았는지 확인하는 값 — 에 의존했습니다. 이후 세대는 암호화를 추가해 업데이트 내용을 평문으로 읽을 수 없게 했고, 암호학적 서명을 더해 설치 전에 그 업데이트가 정말로 제조사에서 왔는지 검증할 수 있게 했습니다.

이러한 펌웨어 보안의 성숙은 반가운 발전입니다. 변조를 더 어렵게 만들고, 차량 소프트웨어에 간섭하려는 시도의 문턱을 높입니다. 연구자에게는 이 변화 — 각 세대가 어떤 보호 기법을 쓰고 얼마나 일관되게 적용하는지 — 를 기록하는 것이 오늘날 자동차 보안이 어디에 서 있고 어디를 더 개선해야 하는지를 이해하는 데 도움이 됩니다. 이러한 분석의 목적은 보호를 무력화하는 것이 아니라 그것을 측정하고, 더 강한 보호를 장려하는 데 있습니다.

펌웨어 분석이 중요한 이유

펌웨어 분석은 자동차 소프트웨어 연구의 토대입니다. 펌웨어는 임베디드 시스템의 실제 거동이 정의되는 곳이기 때문에, 그것을 이해하는 것은 거의 모든 후속 작업의 전제 조건입니다 — 플랫폼이 얼마나 견고한지 판단하고, 설계상의 약점을 찾아 보고하고 개선하며, 더 잘 보호되는 다음 세대 시스템을 설계하는 데 밑거름이 됩니다.

자동차가 점점 더 소프트웨어 중심이 되고 더 연결될수록, 그 중요성은 커질 뿐입니다. 헤드 유닛에서 실행되는 코드는 운전자에, 그리고 점점 더 차량의 나머지 부분에 가까이 자리합니다. 신중하고 책임 있는 펌웨어 분석은 연구자와 제조사가 그 소프트웨어를 이해 가능하고 신뢰할 수 있게 유지하는 방법입니다.