Honda Civics and the Evil Valet

2026-06-14 · 2026-06-14_honda-civics-and-the-evil-valet.md

#reversing #automotive #security #android #root

원문 출처

Honda Civics and the Evil Valet

Eric McDonald의 Juniperspring 블로그에 게재된 2021년형 혼다 시빅 헤드유닛(IC1101) 리버스 엔지니어링 프로젝트의 3주년 업데이트 글과, HN 커뮤니티의 반응을 분석한 노트다.

1. 원문 핵심 내용

'악의적泊车 attendant(Evil Valet)' 취약점

글의 가장 중요한 발견은 물리적 접근만으로 헤드유닛에 임의 코드를 실행할 수 있는 보안 취약점이다.

  • 업데이트 경로: 혼다는 USB를 통해 헤드유닛 소프트웨어를 업데이트할 수 있게 지원한다. Android 리커버리 모드를 통해 서명된 AOSP(Android Open Source Project) 업데이트 파일을 설치하는 방식이다.
  • 결함: 혼다가 res/keys 디렉토리에 공개적으로 알려진 AOSP 테스트 키를 그대로 남겨둔 것이다. AOSP 테스트 키는 개발용 임시 키로, 누구나 알고 있는 공개 키다.
  • 서명 검증: recovery 바이너리는 수정되었지만, verify_file 서명 검증 로직은 표준 AOSP와 동일하게 동작한다. 즉 공개 테스트 키로 서명한 파일도 정상적으로 인정한다.
  • 결과: 공격자가 USB 메모리를 준비해 AOSP 테스트 키로 임의의 업데이트 파일을 서명하면, 헤드유닛에 원하는 코드를 설치할 수 있다.

'악의적泊车 attendant 공격' 시나리오: 저널리스트가 호텔에 주차하고泊车 attendant에게 차를 맡긴다.泊车 attendant가 3자 기관(정보기관 등) 소속이라면, USB를 꽂아 업데이트를 설치할 수 있다. 차를 받아받은 저널리스트는 헤드유닛이 변조된 사실을 모른다.

증거: 저자는 공개적으로 유통되는 EU 소프트웨어 업데이트 파일 MRC_EU_SW_v12_4.zip이 테스트 키로 서명되어 있음을 확인했다. 모든 공식 혼다 업데이트가 AOSP 테스트 키를 사용할 가능성이 매우 높다고 추정한다.

새로운 도구들

  • ota-builder: 헤드유닛이 수락하는 업데이트 파일을 쉽게 생성하는 도구. su 바이너리를 setuid로 설치하는 업데이트를 만들 수 있어, 사실상 루팅을 간단히 할 수 있다.
  • apk-rebuilder: 혼다 시빅 업데이트 파일을 받아서 리소스, smali 코드(다익스트라 역어셈블리), 리팩된 APK, 램디스크를 추출하는 자동화 도구. 커뮤니티가 민감한 소스 파일을 직접 호스팅하지 않고도 혼다 코드를 분석할 수 있게 한다.

진행 중인 작업과 기여 요청

  • 버전 관리 문제: 업데이트 프로세스가 버전 번호에 민감해서, 버전이 맞지 않으면 리커버리 루프나 소프트브릭(소프트웨어 고장)이 발생할 수 있다. 10세대 시빅 소유자들의 헤드유닛 버전 정보 수집이 필요하다고 요청.
  • 도구체인: ARMv7용 로컬 컴파일 도구체인이 실험적으로 존재하며, Docker 기반 공개 구현을 목표로 한다.
  • 커스텀 테마: 미쓰비시가 포크한 AOSP 프레임워크 내에 테마가 있고, 헤드유닛 앱이 미니파이되어 하드코딩된 리소스 ID를 사용하기 때문에 구현이 어렵다.
  • aidl-rebuilder: .smali 파일에서 모든 AIDL(Android 인터페이스 정의 언어) 인터페이스를 매핑하는 도구. 가상 속도계 같은 커스텀 앱을 가능하게 할 잠재력이 있다.

문서화 전략과 LLM

저자는 정적 레퍼런스 문서 대신 결정론적 도구(deterministic tooling)에 초점을 옮겼다. 헤드유닛 코드를 사람이 읽을 수 있는 형태로 변환하는 도구를 유지하고, 사용자가 LLM으로 그 결과를 쿼리하는 방식. 정적 문서는 곧陳舊해지지만, 코드가 항상 진실의 원천(source of truth)이기 때문이다.

2. 커뮤니티 반응 (HN 토론)

HN에서 94점, 43개 댓글. 주제별로 분석한다.

자동차 인포테인먼트의 노후화 문제

가장 큰 공감대를 이룬 주제다. 여러 사용자가 자신의 차도 비슷한 상황이라고 호소했다.

  • 2016~2022년형 10세대 시빅 모두 동일한 시스템: the_pwner224는 "2016년 차에 2012년 소프트웨어"라고 요약했는데, 자동차 업계에서 하드웨어 주기(6년)와 소프트웨어 주기가 분리되어 있다는 점을 지적. mschuster91은 "자동차 업계에서는 일단 작동하면 버그가 나오지 않는 한 수정하지 않는다"고 설명.
  • Nexus 4 노스탤지어: Android 4.4(KitKat) 기반이라는 점에 sphars가 Nexus 4와 Holo 시대를 추억했고, empyrrhicist는 "Nexus 4가 당시에는 느리지 않았다"고 공감.
  • 터치스크린 타입 논쟁: canbus가 "Android 4 시절은 저항식 터치스크린"이라고 추측했으나 spharscausi가 "2017년 시빅은 정전식(capacitive)이고 반응 속도도 괜찮다"고 반박.

루팅과 보안 논의

  • $25 유료 루팅 서비스: 저자가 사용한 루팅 방법이 $25짜리 유료 서비스(WebKit 익스플로잇 + Android 익스플로잇 체이닝)라는 사실이 논란. librick(저자 자신)은 "오픈소스 루팅 도구를 만들어 진입 장벽을 낮추는 게 목표"라고 설명.
  • 해킹 가능성 = 버그? otherme123은 "해킹 가능한 건 버그로 간주된다. 누군가 인포테인먼트를 수정하는 방법을 찾으면 제조사는 곧 업데이트로 막는다. 모두 자신만의 앱이 있다고 주장하지만, 실제로는 사용자가自作 앱을 만들고 공유하는 것을 막는다"고 Mazda Tweaks 사례를 들어 비판.
  • 셀룰러 연결 없음 = 보안 리스크 낮음: the_pwner224는 "차량 데이터 연결이 없으므로 외부에서 해킹당할 리스크는 낮다"고 완화.

실용적 아이디어들

  • 후방 카메라 활용: dom96이 "주행 중 후방 카메라를 대시캠으로 쓰고 싶다"고 제안. 저자는 /sbin/earlyrvc 바이너리가 부팅 시 카메라를 표시하는 역할을 하며, 오픈소스 대체 바이너리를 만드는 것을 고려 중이라고 답변.
  • 어코드 지원 요청: post_break가 2021년형 어코드에도 포트되길 바란다고 요청. 후방 카메라 버튼 커스텀, 기어 변경 후 잔상 시간 연장 등을 언급.
  • 다른 차량: ritonlajoie(Piaggio MP3), at_a_remove(2016 토요타 RAV4) 등 다른 차량 소유자들도 비슷한 리버스 엔지니어링을 원한다고 언급.

자동차 업계의 폐쇄성 비판

  • mianos는 Subaru Starlink 헤드유닛 사례를 들며 "버그가 많고 자주 충돌해도, 차가 딜러를 나온 후에는 소비자가 할 수 있는 게 없다. 집단 소송조차 리콜이나 수정으로 이어지지 않는다"고 비판.
  • riffic는 "이게 자동차 엔지니어링의 현실이다. 항공도 비슷하다"고 동의.

개발 환경 관련

  • bdavbdav: "차 안에서 해킹하면 불편하고 배터리가 고갈된다"는 현실적 어려움 지적.
  • ignormies: "차 안에서 노트북을 들고 앉아서 했는가, 아니면 헤드유닛을 분리해서 했는가"라는 작업 환경 질문.

3. 새로운 시각

1. '악의적泊车 attendant'는 이론적 위협보다 실제 사회공학적 위협

이 취약점을 'evil valet'이라고 부른 건 단순한 유희가 아니다.泊车 attendant는 차량에 물리적으로 접근할 수 있는 신뢰받는 제3자다. 호텔泊车, 주차장 attendant, 차세탁 업체 직원 등 — 모두 USB 포트에 접근 가능한 위치다. 중요한 건 기술적 난이도가 낮다는 점: AOSP 테스트 키는 공개되어 있고, ota-builder로 루팅 업데이트를 만들 수 있다. 즉 전문 해커가 아니더라도 누구나 실행 가능한 공격이다. 자동차 보안에서 '물리적 접근'을 전제로 한 방어는 실제로 의미 없는 경우가 많음.

2. 자동차 인포테인먼트의 '의도된 노후화'는 제조사 전략일 수 있음

2016년 차에 2012년 소프트웨어가 돌아가는 현상을 단순히 '게으른 엔지니어링'으로 치부하기 쉽다. 하지만 mschuster91의 "일단 작동하면 수정하지 않는다"는 관점을 더 깊이 보면, 이는 자동차 업계의 검증 비용 최소화 전략일 수 있다. 자동차 소프트웨어는 변경 시 재인증(regulatory recertification)이 필요하며, 이는 수백만 달러의 비용이 든다. 따라서 '작동하는 오래된 시스템'을 유지하는 것이 경제적으로 합리적일 수 있다. 물론 소비자 관점에서는 불공평하지만.

3. 오픈소스 루팅 도구는 자동차 해커 커뮤니티의 '공개 키 인프라'가 될 것

ota-builder가 AOSP 테스트 키를 이용해 누구나 루팅 업데이트를 만들 수 있게 한다는 점은, 자동차 인포테인먼트 분야에서 공개 키 기반의 신뢰 체계를 무력화하는 동시에 오픈소스 커뮤니티가 대체 신뢰 체계를 구축하는 시작점이 될 수 있다. 현재 $25짜리 폐쇄형 루팅 서비스가 존재하지만, ota-builder가 안정화되면 이 시장이 오픈소스로 이동할 것. 이는 Android 커스텀 롬 생태계(Recovery, Magisk 등)가 스마트폰에서 겪은 과정과 유사하다.

4. 자녀/미래 영향

아인, 석현, 은한에게 주는 시사점

  1. 자동차도 이제 '컴퓨터'다: 너희가 나중에 차를 탈 때, 대시보드에 있는 화면은 단순 라디오가 아니라 Android 기반의 컴퓨터다. 컴퓨터라면 해킹의 대상이 될 수 있다는 걸 알아두라. 차에 USB를 꽂는 게 단순히 음악 파일을 넣는 게 아니라, 시스템에 코드를 설치하는 행위일 수 있다.
  1. 물리적 보안도 중요: 차를泊车 attendant나 주차장에 맡길 때, USB 포트에 접근할 수 있다는 점을 의식하라. 노트북을 카페에 두고 오는 것과 같은 수준의 경계가 필요하다.
  1. 오픈소스 문화의 힘: 이 프로젝트는 한 개발자가 자신의 차를 해킹하면서 시작했지만, 이제 커뮤니티 전체가 함께 도구를 만들고 공유하는 오픈소스 프로젝트가 되었다. 너희가 나중에 어떤 기술을 배울 때도, 혼자 하는 것보다 커뮤니티와 공유하는 것이 더 빠르게 발전한다는 걸 기억하라.

실용적 조언

  • 차를 맡길 때 USB 포트에 접근 가능한지 확인하고, 가능하면 개인 USB 장치를 차에서 빼두라.
  • 자동차 소프트웨어 업데이트는 공식 채널에서만 받으라.
  • 기술에 관심 있다면, 자신의 차 인포테인먼트 시스템을 연구해보는 것도 좋은 학습 경험이 될 수 있다 (물론 법적·보안적 리스크를 이해한 상태에서).

관련 노트

wikis/notes/raw/notes/2026-06-14_honda-civics-and-the-evil-valet