GN⁺: Kia 차 해킹 : 번호판만으로 차 원격 제어하기
(samcurry.net)- 2024년 6월 11일, Kia 차량에서 번호판만으로 차의 주요 기능을 원격 제어할 수 있는 취약점을 발견함
- 공격자는 피해자의 이름, 전화번호, 이메일 주소, 물리적 주소 등의 개인 정보를 조용히 획득할 수 있음
- 이 취약점을 이용하여 공격자는 차주 모르게 자신을 차량의 보이지 않는 두번째 사용자로 추가할 수 있음
- 취약점 영향을 보여주기 위해 데모 도구를 제작했지만, 실제로 공개하거나 악용되지는 않음
- 이 취약점은 이후 수정되었으며, 이 도구는 출시되지 않았고, 기아 팀은 이 취약점이 악의적으로 악용된 적이 없음을 확인했음
영향을 받은 차량
- 2025년부터 2014년까지의 다양한 Kia 모델이 영향을 받음
- 각 모델별로 원격 잠금/해제, 원격 시동/정지, 원격 경적/라이트, 원격 카메라 등의 기능이 가능함
취약점 상세
약 2년전, 우리는 12개 이상의 자동차 제조사의 보안 취약점을 찾아냈음. 1,500만대 이상의 차량을 원격으로 위치 추적하고, 시동을 끄고, 잠금 해제하고, 시동을 걸 수 있는 치명적인 문제점을 발견했음 - Paul Roberts
- 시간이 많이 지나, 이전에 취약점을 발견했던 제조사들의 사이트를 다시 살펴보기로 함
- Kia의 owners 사이트와 모바일 앱은 인터넷을 통해 차량 제어 명령을 보낼 수 있어 흥미로웠음
- 웹사이트는 프록시 서버를 통해 명령을 백엔드 API로 전달하고, 앱은 API에 직접 접근함
- owners 웹사이트에서 문 잠금 해제 요청을 보내는 HTTP 요청 예시:
POST /apps/services/owners/apigwServlet.html HTTP/2 Host: owners.kia.com Httpmethod: GET Apiurl: /door/unlock Servicetype: postLoginCustomer Cookie: JSESSIONID=SESSION_TOKEN;
- 서버는
JSESSIONID
를 사용해Sid
세션 ID를 만들어 백엔드 API에 다음과 같이 전달함:GET /apigw/v1/rems/door/unlock HTTP/1.1 Host: api.owners.kia.com Sid: 454817d4-b228-4103-a26f-884e362e8dee Vinkey: 3ecc1a19-aefd-4188-a7fe-1723e1663d6e
-
Sid
는 세션 토큰,Vinkey
는 차대번호(VIN)와 매핑되는 UUID임
딜러 인프라 취약점
- 우리는 Kia 딜러 웹사이트도 살펴보기로 함. 새 차를 구매할 때 Kia에서 고객 정보를 어떻게 처리하는지 궁금했기 때문
- 딜러 사이트에서 새 차량 등록을 위해 고객에게 보내는 이메일의 URL을 확인:
https://kiaconnect.kdealer.com/content/kDealer/…
- 한번도 본 적 없는
kiaconnect.kdealer.com
도메인이 흥미로움 - 위 URL에서
token
파라미터는 VIN 키로, 딜러가 생성한 일회용 접근 토큰.vin
파라미터로 지정된 차량을 수정할 수 있음 - URL을 로드하면 토큰 유효성을 확인하는 HTTP 요청이 전송:
POST /apps/services/kdealer/apigwServlet.html HTTP/1.1 Host: kiaconnect.kdealer.com { "token": "985a49f0-1fe5-4d36-860e-d9b93272072b", "vin": "5XYP3DHC9NG310533", "scenarioType": 3, "loginPref": null }
- 딜러 사이트의 요청 URI가 owners 사이트와 동일한
/apps/services/kdealer/apigwServlet.html
인 게 흥미로웠음 - 딜러용 내부 API로 요청을 전달하는 프록시가 있을 것으로 예상
- 자바스크립트 코드를 살펴보니 딜러 차량 조회, 계정 조회, 등록, 해지 등 직원 전용 기능을 하는 API 호출이 있음
- 직접 소유한 차량의 VIN으로 API 엔드포인트에 접근해봤지만, 401 Unauthorized 오류가 발생. 딜러 토큰으로는 동작하지 않았음
일반 계정으로 딜러 API 접근
- 그래서 딜러 웹사이트에 일반 계정으로 가입해서 액세스 토큰을 생성한 뒤, 그걸로 API에 접근해보기로 함. owners 사이트와 API 형식이 비슷해 보였기 때문
- 딜러 사이트에서 owners 사이트와 같은 방식으로 사용자 등록을 시도했더니 성공!
- 로그인해서 액세스 토큰을 발급받고, 이전에 접근 불가했던 VIN 조회 API를 호출하자 응답에 차량 소유주의 이름, 전화번호, 이메일이 담겨 있었음
- 우리가 만든 일반 계정으로 딜러 포털에 인증하고 수정된 채널 헤더를 사용하면 모든 딜러용 API에 접근할 수 있다는 걸 의미
차량 무단 접근
- 몇 시간 동안 자바스크립트 코드를 분석한 끝에 차량 등록, 해지, 수정 엔드포인트가 어떻게 동작하는지 파악
- 다음 4단계를 거치면 피해자 차량에 접근할 수 있었음:
- 딜러 토큰 생성 및 HTTP 응답 헤더에서 "token" 값 추출
- 피해자 이메일과 전화번호 알아내기
- 유출된 이메일과 VIN으로 기존 소유주 접근 권한 수정
- 공격자를 차량의 새로운 소유주로 추가
- 피해자 입장에서는 자신의 차량에 접근했다는 알림이나 권한이 변경되었다는 사실을 알 수 없음
- 공격자는 누군가의 번호판으로 VIN을 알아낸 뒤 API를 통해 피해자를 몰래 추적하고 차 문 열기, 시동 걸기, 경적 울리기 등의 명령을 보낼 수 있음
개념 증명 대시보드 제작
- 우리는 이 취약점의 심각성을 보여주기 위해 공격자가 (1) Kia 차량의 번호판을 입력하고 (2) 소유주 개인정보를 가져온 뒤 (3) 차량 제어 명령을 실행할 수 있는 개념 증명용 대시보드를 만들었음
- "Exploit" 페이지에서 차량 무단 접근을 시도하고, "Garage" 페이지에서 명령을 내리고 위치를 추적하도록 함
- 렌트한 잠긴 Kia 자동차를 대상으로 테스트를 진행했고, 블로그 맨 위 영상에서 스마트폰으로 차량을 해킹한 뒤 원격으로 문 잠금/해제, 시동 켜기/끄기, 경적 울리기, 위치 추적 등을 수행하는 모습을 볼 수 있음
결론
- Meta가 개발 과정에서 실수로 누군가 여러분의 페이스북 계정을 탈취할 수 있는 코드 변경을 할 수 있는 것처럼, 자동차 제조사들도 여러분 차량에 그런 취약점을 만들어낼 수 있음
- 앞으로도 자동차에선 취약점이 계속 발견될 것
타임라인
- 06/07/24 16:40 UTC - Kia 팀에 취약점 제보 방법 문의
- 06/10/24 13:21 UTC - Kia 팀 답변 받음
- 06/11/24 22:41 UTC - 취약점 제보
- 06/12/24 18:20 UTC - 심각도 때문에 티켓 알림 이메일 전송
- 06/14/24 18:00 UTC - Kia 팀이 조사중이라 응답
- 06/18/24 16:41 UTC - 심각도 때문에 티켓 알림 이메일과 도구 스크린샷 전송
- 06/20/24 02:54 UTC - 티켓 알림 이메일과 번호판 입력해 접근하는 스크린샷 전송
- 08/12/24 12:30 UTC - 티켓 알림 이메일로 업데이트 요청
- 08/14/24 17:41 UTC - Kia 팀이 취약점 해결하고 테스트중이라 응답
- 09/26/24 08:15 UTC - 취약점 해결 확인 후 대중에 공개
GN⁺의 의견
- 자동차 해킹이 현실이 되고 있음을 보여주는 충격적인 사례임. 앞으로 커넥티드카가 늘어나면서 이런 취약점 문제는 더욱 심각해질 것
- 이번 사건은 자동차 제조사들의 보안 인식 부족과 허술한 시스템 설계를 여실히 보여줌. 소프트웨어 취약점 관리와 코드 리뷰 등 보안 개발 생명주기(SSDLC) 도입이 시급해 보임
- 자동차 원격 제어 기술은 편의성을 높여주지만 동시에 공격 표면을 넓히기도 함. 기술과 보안, 프라이버시 사이의 균형을 잡는 게 중요할 것.
- 개인정보를 기반으로 한 인증 방식의 문제점도 드러남. 번호판을 아는 것만으로도 차량을 탈취할 수 있다는 것은 너무 허술. 생체인식이나 다중인증 등 강화된 인증 체계가 필요할 것임
- 이용자가 자신의 차량 보안 상태를 인지하고 통제할 수 있어야 함. 누가 내 차에 접근했는지, 어떤 명령을 내렸는지 알려주는 알림 기능 등이 필요
Hacker News 의견
-
Kia의 미국 차량에 인터락을 생략한 결정이 전국적인 차량 도난 문제를 야기했음
- 이로 인해 밀워키와 시카고 같은 도시에서 차량 절도가 급증했음
- 단순히 구부러진 USB 케이블로 차량을 훔칠 수 있었음
-
취약한 Kia 차량 데이터베이스를 크롤링하여 근처 Kia 차량을 보여주고 잠금을 해제하는 "라이드 쉐어" 앱을 만들 수 있음
-
누구나 딜러로 등록할 수 있고, 딜러는 판매하지 않은 차량 정보도 조회할 수 있는 것이 문제임
- 딜러 직원이 이를 악용하여 스토킹할 수 있음
-
기사에 따르면, 원래 Kia와 딜러만 차량을 추적할 수 있었으나 이제는 "비인가"된 사람들도 추적할 수 있게 되었음
- 왜 기업이 차량을 추적하는 것은 괜찮고, 다른 사람이 하면 문제가 되는지 의문임
-
Kia가 차량과 소유자에 대한 많은 데이터를 보유하고 있는 것이 문제임
- 이 취약점은 이미 수정되었으나 데이터 문제는 여전히 남아 있음
-
Kia 차량을 소유한 형제가 차량 절도로 인해 정신 건강에 부정적인 영향을 받고 있음
-
온라인 계정을 만들어 차량을 활성화해야 하는 차량을 구매하지 않을 것임
- 이전에 소유한 Kia 차량이 10만 마일 전에 1천 마일마다 1쿼트의 오일을 소모했음
-
현재 시장에 연결 기능이 없는 새로운 차량은 없음
- 비연결 차량을 만드는 것이 가능한지 궁금함
-
Kia 소유자로서, 취약점이 수정되었고 악의적으로 악용되지 않았다는 점에 안도함
- 그러나 Kia는 여전히 많은 개선이 필요함
-
차량을 인터넷에 연결하지 말아야 한다고 생각함