Trawling

Shubham Shah·Sam Curry, 연결차 계정 취약점으로 원격 잠금·시동 시연

Shubham Shah와 Sam Curry는 익명 처리한 자동차 업체들의 연결차 계정 시스템 결함을 이용해 앱 토큰을 만들고 차량 잠금 해제와 원격 시동을 시연한 연구를 공개했습니다. Shah의 호주 경로와 두 업체의 ForgeRock 서버를 공략한 공동 연구는 서로 다른 경로이며, 후자의 전체 계정-차량 경로는 미국 계정과 차량에서 시험됐습니다. 연구자들은 신고 뒤 업체들이 약 두 시간 만에 취약점을 수정하고 자격 증명을 교체했다고 밝혔습니다.

보안 연구자 Shubham Shah는 2026년 11월 7일 개인 블로그에서 호주 차량 서비스 계정에 접근해 앱 토큰을 발급하고 원격 명령을 보낸 경로를 공개했습니다. Shah와 Sam Curry가 같은 날 함께 공개한 별도 보고서는 이름을 밝히지 않은 두 자동차 업체의 ForgeRock 로그인 서버에서 코드를 실행하고 고객 계정의 앱 토큰을 만든 과정을 설명합니다. 두 글은 업체와 브랜드명을 공개하지 않았습니다. Shah는 호주 경로를 자신이 소유했거나 사용 허가를 받은 차량에서 시험했다고 밝혔습니다.

두 경로에서 차량 앱 토큰은 계정 관리·인증 시스템과 차량 원격 API를 잇는 열쇠였습니다. 정상 앱은 ForgeRock 인증 절차에서 받은 토큰을 차량 API에 보내 위치·상태를 조회하거나 지원되는 명령을 실행합니다. 연구자들은 계정 정보에 접근하거나 바꾼 뒤 이 인증 절차를 통과해 앱 토큰을 발급하고, 차량 API에 명령을 보냈습니다.

호주에서는 번호판에서 앱 토큰까지 이어졌습니다

Shah는 안드로이드 앱을 내려받아 분석하고 앱이 호출하는 API와 관리 도구를 찾아냈습니다. 관리 도구 API는 웹 앱 자바스크립트에 들어 있던 API 키를 이용해 호출할 수 있었습니다. 호주에서는 주별 차량 등록 조회 사이트에서 번호판으로 VIN을 확인할 수 있었고, 관리 도구는 VIN을 가입자 GUID와 연결했습니다. GUID를 이용해 계정 정보와 이메일 주소도 조회할 수 있었습니다. 이 단계에서 얻은 것은 가입자와 계정 정보였으며, 차량 명령에는 별도의 로그인 시스템에서 발급되는 앱 토큰이 필요했습니다.

차량 플랫폼의 계정 정보는 ForgeRock OpenIDM에서 관리했습니다. Shah와 Curry는 자바스크립트 번들에서 스테이징 환경용으로 만들어진 OpenIDM 관리 자격 증명을 발견했고, 해당 값이 운영 환경에서도 통했다고 밝혔습니다. OpenIDM의 getUser API는 계정 정보와 비밀번호·PIN 해시, 모바일 푸시 토큰, 개인 정보를 반환했습니다. 비밀번호를 바꾸려면 WAF가 막던 OpenIDM 사용자 관리 경로에 접근해야 했습니다. 연구자들은 WAF와 백엔드가 URL의 인코딩과 경로를 다르게 해석하는 틈을 찾아 이 경로를 통과하고 계정 비밀번호를 바꿨습니다.

비밀번호 변경 뒤에는 다중 인증 단계도 우회해야 했습니다. 호주 인증 환경의 ROPC(Resource Owner Password Credentials) 토큰 발급 흐름은 다중 인증 없이 토큰을 발급하도록 설정돼 있었습니다. 연구자들은 이 흐름에서 받은 토큰으로 ForgeRock 세션을 만들고, 다시 모바일 앱용 액세스 토큰을 발급했습니다. 그 토큰으로 차량 원격 명령 API를 호출해 문 잠금 해제를 시연했습니다.

별도 경로에서는 로그인 서버에서 코드를 실행했습니다

Shah와 Curry의 공동 보고서는 두 자동차 업체의 고객 로그인에 쓰이는 ForgeRock 서버를 다룹니다. ForgeRock Access Management(AM)는 로그인 절차와 세션 발급을 맡고, Identity Management(IDM·OpenIDM)는 그 과정에서 참조하는 고객 계정 정보를 관리합니다. 연구자들은 WAF가 막던 관리 경로를 조사하다 URL 인코딩과 경로 구분자를 달리 해석하는 점을 발견했습니다. 정적 파일 경로처럼 보이는 요청은 WAF를 통과했지만, 백엔드의 Jetty 서블릿 컨테이너가 경로를 정규화하면서 Apache Felix 관리 콘솔로 연결됐습니다. 콘솔에는 기본 관리자 자격 증명이 남아 있었습니다.

Felix 콘솔의 ConfigMgr는 OSGi 서비스 설정을 바꿀 수 있었고, OpenIDM 스케줄러는 Groovy 스크립트를 실행할 수 있었습니다. 연구자들은 이 기능으로 OSGi 서블릿을 설치해 서버에서 명령을 실행하는 통로를 만들었습니다. 그 통로에서 서버 내부 주소로 요청하자, 외부 WAF가 차단하던 고객 계정 정보에 접근할 수 있었습니다. 계정의 이메일과 비밀번호를 바꾼 뒤에는 정상 ForgeRock 로그인 절차를 거쳐 모바일 앱 토큰을 발급하고 차량 API에 접근했습니다.

공동 보고서는 앱 토큰으로 차량 위치와 상태를 읽고 문 잠금 해제, 원격 시동과 정지 같은 명령을 보냈다고 설명합니다. 연구자들은 명령을 보낸 뒤 차량 상태를 갱신하고, 소유자 옆에서 실제 결과를 확인했습니다. Shubham Shah는 문을 열고 엔진을 켠 뒤 정지시키고 다시 잠갔습니다. 원격 명령은 연결 서비스가 활성화된 계정과 차량에 적용됐습니다.

Shah는 두 글의 결과를 종합해 호주·미국·캐나다 차량에 원격 명령을 보낼 수 있었다고 썼습니다. Curry와 함께 쓴 보고서는 영향을 받은 시스템이 여러 지역의 고객을 지원했지만, 전체 계정-차량 공격 경로는 미국 계정과 차량에서만 시험했다고 밝혔습니다. 따라서 호주·미국·캐나다는 Shah가 제시한 영향 범위이고, 공동 보고서가 직접 시험했다고 밝힌 지역은 미국입니다.

연구자들은 취약점을 신고한 뒤 두 업체가 약 두 시간 만에 문제를 수정하고 영향을 받은 자격 증명을 교체했다고 전했습니다.

참고 자료

오류 제보