카스퍼스키는 2026년 8월 21일, Android 기반 차량 헤드유닛을 겨냥한 악성코드 감염 경로를 공개했다. 연구진이 6월 Android 위협을 추적하다 찾은 사례로, DoFun 헤드유닛의 내장 펌웨어 업데이트 기능이 악성 앱을 설치하는 통로로 쓰였다. 차량용 헤드유닛에 맞춘 감염 경로가 확인된 첫 사례라고 카스퍼스키는 설명했다. 공급사는 배포 방식을 통보받은 뒤 보안 문제를 고쳤다고 답했다.
헤드유닛은 음악·내비게이션과 일부 차량 기능을 함께 처리하고, 유심 슬롯이나 인터넷 연결로 소프트웨어 업데이트를 받는다. 그래서 사제 Android 헤드유닛을 고를 때 화면 크기나 앱 호환성만 보면 업데이트 권한을 놓치기 쉽다. 누가 펌웨어를 배포하고, 업데이트 앱이 어디까지 설치할 수 있는지가 보안 조건이 된다.

정상 업데이트 앱은 어떻게 설치 통로가 됐나
분석 대상의 TWCore는 분석 데이터를 모으고 헤드유닛 소프트웨어를 갱신하는 정상 시스템 앱이다. 이 앱은 cardoor[.]cn 하위 MQTT 브로커에서 APK 설치 정보를 받았다. 메시지의 installNotExists 값이 참이면 기기에 원래 없던 앱도 설치할 수 있었다. APK는 TWCore의 외부 캐시 폴더에 내려받은 뒤 설치됐다.
카스퍼스키 텔레메트리에서 확인된 악성 앱은 모두 com.tw.core, 곧 TWCore와 같은 패키지 이름의 앱이 설치한 것으로 나타났다. 첫 단계인 JarService는 화면이 없고, 코드 안의 암호화 데이터를 풀어 다음 단계를 불러온다. 이후 로더는 외부 제어 서버에 기기 정보를 보내고 다음 코드의 주소를 받는다. 세 번째 단계는 기본값으로 90분마다 서버와 통신해 설정과 명령을 갱신했다.

연구진은 이 코드가 광고를 표시하거나 클릭을 조작하고, 추가 코드를 내려받을 수 있다고 적었다. 당시 실제로 쓰인 loadlib2 명령은 역방향 프록시 모듈을 내려받았다. 카스퍼스키는 코드의 이름과 네트워크 인프라가 겹친다는 근거로, BADBOX와 연결된 MoYu Group의 활동으로 높은 신뢰도로 귀속했다.
구매 전 판매자에게 무엇을 물어야 하나
이 사례가 모든 Android 헤드유닛에 같은 문제가 있다는 뜻은 아니다. 다만 업데이트 경로가 제품의 기능 목록 밖에 숨은 채 판매되는 경우가 많다. 판매자나 제조사에 업데이트 서버와 펌웨어를 누가 관리하는지, 업데이트 앱이 새 APK까지 설치할 수 있는지, 보안 수정 공지를 어디서 받는지를 묻는 편이 낫다. 답을 문서나 지원 페이지로 받으면 나중에 기기별 지원 범위를 대조할 수 있다.

운영 기록은 고장 이력만은 아니다
설치 직후와 펌웨어를 갱신하기 전에는 버전, 설치된 앱 목록, 갱신 날짜를 남겨 두는 편이 좋다. 화면에 없는 앱이 문제였던 만큼, 앱 목록은 고장 신고용 기록이면서 비정상 설치를 비교할 기준이기도 하다. 보안 수정이 알려졌다면 제품명만 보고 적용됐다고 판단하지 말고, 설치된 펌웨어 버전과 판매자의 지원 안내를 함께 대조해야 한다.
이번 사례의 출발점은 낯선 앱 다운로드가 아니라 정상 업데이트 기능이었다. 사제 헤드유닛의 보안 점검에는 업데이트를 누가 통제하는지, 새 앱을 설치할 권한이 어디에 있는지, 수정 공지가 어떤 경로로 오는지를 구매와 운영의 확인 항목으로 넣어야 한다.
출처: Kaspersky Securelist, "The invisible passenger in your car" (2026-08-21).
