7P by neo 2달전 | favorite | 댓글 4개
  • 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단계를 거치면 피해자 차량에 접근할 수 있었음:
    1. 딜러 토큰 생성 및 HTTP 응답 헤더에서 "token" 값 추출
    2. 피해자 이메일과 전화번호 알아내기
    3. 유출된 이메일과 VIN으로 기존 소유주 접근 권한 수정
    4. 공격자를 차량의 새로운 소유주로 추가
  • 피해자 입장에서는 자신의 차량에 접근했다는 알림이나 권한이 변경되었다는 사실을 알 수 없음
  • 공격자는 누군가의 번호판으로 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는 여전히 많은 개선이 필요함
  • 차량을 인터넷에 연결하지 말아야 한다고 생각함