시계 하나 맞추려고 차 내비게이션까지 탈옥했습니다

Jailbreaking my car's navigation system just so I can change the time

blog.nns.ee ▲ 921 댓글 365 xx_ns

요약

지도 SD 카드 없이는 시간 설정이 막힌 내비게이션을 해킹해 시계를 한 시간 되돌렸습니다.

에스토니아에 사는 보안 전문가 라스무스 모라츠가 자기 블로그에 올린 글입니다. 서머타임이 끝나 2014년식 Renault Latitude의 시계가 한 시간 빨라졌는데, 순정 내비게이션 TomTom Carminat LIVE에서는 시간 설정 메뉴를 찾을 수 없었습니다.

왜 중요한가

  • 지도 카드 복제를 막는 잠금 장치가 시계 설정 같은 기본 기능까지 묶어 버린 사례입니다.
  • 오래된 리눅스 2.6 기반 장치치고 방어가 탄탄했지만, 작은 버그 하나와 커널 기능을 엮자 루트 권한까지 뚫렸습니다.

핵심 내용

  • 설정 메뉴 정의를 SD 카드에서 읽어 오기 때문에, 카드가 없으면 시간 설정 항목이 아예 나오지 않았습니다.
  • 카드는 고유 하드웨어 번호(CID)에 묶인 서명을 검사해 복제할 수 없었고, 정품은 약 60유로였습니다.
  • 펌웨어를 QEMU(하드웨어 에뮬레이터)로 돌려 보며 스크립트 해석기와 이미지 디코더를 뒤졌지만 대부분 막다른 길이었습니다.
  • 로그 명령의 경로 조작 버그로 core_pattern(프로그램이 죽을 때 커널이 할 일)을 바꾸고, 일부러 프로그램을 죽여 루트로 스크립트를 실행했습니다.
  • 이 장치는 GPS 시간에 분 단위 시차만 더하는 방식이라, 설정 파일의 180을 120으로 고쳐 문제를 풀었습니다.

HN 반응

  • 전 주인 말대로 SD 카드를 받았으면 될 일이었다는 농담이 많았고, 작성자는 카드가 이미 실수로 버려졌다고 댓글로 밝혔습니다.
  • 다른 차도 시계가 제각각 틀어진다는 경험담이 이어졌고, GPS로 시간을 맞추자는 의견에는 GPS가 시간대 정보를 주지 않는다는 반론이 나왔습니다.

댓글

30개 표시 · 전체 365개
  1. bambax HN

    시간을 바꾸는 옵션이 없다는 걸 도저히 믿을 수 없었습니다 (...) 그래서 펌웨어를 받아서 파헤쳐 보기로 했습니다

    역대 가장 HN다운 문장 중 하나일 거예요.

  2. miki123211 HN

    LLM이 생각하는 방식도 그렇습니다 (글쓴이가 슬롭을 썼다고 몰아가려는 건 아니고, 조금 동떨어진 관찰일 뿐입니다).

    제 Claude(Opus 5.5)에게 Claude의 어떤 기능이 어떻게 동작하는지 물으면, 앤트로픽 문서를 찾아보는 대신 strings로 자기 자신의 바이너리를 리버싱하기 시작하는 게 자연스러운 성향입니다. 시키지도 않았는데 Claude Code 클라우드의 환경이 어떻게 돌아가는지 알아내려 하고, 앤트로픽의 Rust 바이너리를 리버스 엔지니어링해서 왜 그런 일이 벌어지는지, 자기가 무엇을 해야 하는지 파악하려 듭니다.

  3. pmontra HN

    Claude(Sonnet 5.5)에게 diff 사이드 패널을 끄는 방법을 물었더니 모른다고 했습니다. 검색 페이지의 Google AI 모드에 물었더니 /diff를 입력하라고 하더군요.

    그래도 Claude와 저는 하루 종일 코드를 썼고, 2시간 넘게 걸리던 긴 작업이 30분으로 줄었습니다. 최종 결과물은 같았고요.

  4. nikanj HN

    코드와 문서는 늘 서로 말이 다르고, 그 싸움에서는 언제나 문서가 진다는 걸 알 만큼 충분히 학습했으니까요.

  5. dmos62 HN

    그게 앤트로픽 LLM만 그런 건가요? OpenAI 모델에서는 그런 걸 본 적이 없어요.

  6. tom1337890 HN

    정말 멋진 글이에요. 너무 좋네요. 문서로 남겨두길 잘했어요. 반년 뒤에 또 필요할 테니까요.

    제가 얻은 교훈은 이거예요. 그냥 SD 카드를 받고 전 주인을 믿었어야 했다는 거요. 가끔은 '평범한 사용자'가 정말 알고 있기도 하거든요. ^^

  7. xx_ns HN

    맞아요. 글에서는 다루지 않았는데, 사실 전 주인이 이미 (실수로) SD 카드를 쓰레기통에 버린 상태였어요. 그래서 자기가 쓰레기통을 뒤져서 찾아볼까 하고 제게 물었는데, 신경 쓰지 말라고 했어요.

  8. Barbing HN

    “걱정 마세요, 대신 HN 첫 페이지에 가면 되니까요” - 훨씬 재밌네요!

  9. lisper HN

    카드를 빼면 문제가 생긴다는 걸 알았다면서, 전 주인은 애초에 왜 뺀 건가요?

  10. gambiting HN

    OP가 카드를 원하지 않으면 그 카드를 이베이에서 60유로에 팔 수 있으니까요.

  11. bookofjoe HN

    ...사실 전 주인이 이미 (실수로) SD 카드를 쓰레기통에 버린 상태였어요...

  12. bornfreddy HN

    멋진 글이네요. 그런데 제 이해가 맞다면, 6개월마다 시간이 자동으로 갱신되도록 바꿀 수 있다는 거죠?

  13. bgun HN

    그 대화 내용이 좀 헷갈리네요. 왜 SD 카드를 안 받으셨어요? 추가 요금을 받으려고 했나요? 10년 된 지도라도 (게다가 다른 기능도 있는 모양인데) 갖고 싶을 만한 물건 같은데요.

    어쨌든 그 헛걸음 덕분에 이런 글이 나왔다니 다행이네요!

  14. ansipunk HN

    OP는 기술에 밝은 자신이 올바른 설정 페이지를 못 찾을 리 없다고 믿었고, 전 주인이 그다지 똑똑한 사람이 아니라고 짐작했기 때문입니다. 제 생각에는 그럴 만합니다. 합리적인 사람이라면 인포테인먼트 시스템의 설정이 지도 SD 카드가 있어야만 쓸 수 있다고는 예상하지 않을 테니까요.

  15. duskdozer HN

    저도 아무리 피하려고 해도 계속 빠지는 함정이에요. '설마 그렇게 동작하겠어?' 싶은데, 실제로 그렇게 동작하거든요.

  16. darknavi HN

    그리고 문서로 남겨두길 잘했어요. 반년 뒤에 또 필요할 테니까요.

    와, 개인 프로젝트에서는 너무 현실이에요. 미래의 나를 위해 알아낸 것과 생각을 더 많이 적어둬야겠어요.

  17. drivers99 HN

    저는 이런 용도로 '엔지니어링 노트북'을 쓰기 시작했습니다. 다른 분야나 학교에서는 다른 이름으로 부르죠(실험 노트, 선장 일지 등). 진짜 엔지니어링 노트북은 페이지를 더하거나 뺄 수 없게 실로 꿰맨 제본에, 페이지에 번호가 매겨져 있고, 맨 앞에 색인이 있으며, 기록은 철저히 시간순으로 하고, 다른 사람에게 페이지를 확인받고 서명하게 하고, 빈 공간에는 대각선을 그어 나중에 뭘 끼워 넣지 못하게 하고, 지울 때는 선 하나만 긋는 식입니다. 무언가를 내가 발명했다는 걸 증명해야 할 수도 있고, 그 밖에도 법적으로 책임을 피하려는(CYA) 이유가 있기 때문입니다. 다만 개인 프로젝트에는 이런 요건 대부분이 필요 없습니다. 쓸모 있는 부분은 프로젝트를 추적하고, 어떤 설정을 시도했고 결과가 어땠는지를 적어 두는 것 같은 일입니다. 그러면 나중에 처음부터 다시 재현하지 않아도 됩니다. '제조용 거버 파일을 KiCad에서 만들 때 어떤 설정을 썼더라? 오실로스코프에서 ___는 어떻게 설정했지? 그걸 만들 때 어떤 부품을 썼지? 지난번에 뭘 확인해 둘 걸 그랬지? 그 파일들을 어디에 뒀더라?' 같은 질문에 답이 됩니다. 출력물을 붙여 두고 참고할 수도 있습니다.

  18. EvanAnderson HN

    하드커버 엔지니어링 노트북은 사용감이 정말 좋아요. 다만 제가 쓰는 평범한 메모 정도에 쓰기에는 가격이 부담스럽더라고요.

    취소된 프로젝트에서 반쯤 쓰다 만 걸 몇 권 얻었는데, 쓰고 들고 다니는 게 정말 즐거웠어요.

  19. drivers99 HN

    저는 그냥 컴포지션 노트북을 써요. 품질, 가게, 세일 등에 따라 1~5달러 정도예요. 고등학교 화학 시간에 실험 노트로 썼던 것도 그거고, 비슷한 규율을 따르는 거라 저한테는 잘 어울려요.

  20. warkdarrior HN

    MEMORY.md가 든든한 친구죠.

  21. Forgeties79 HN

    솔직히 저는 제가 만든 내부 위키를 읽는 게 낫겠어요.

  22. numpad0 HN

    일부 스바루 모델은 운전자 시야에 시계가 3개 있고 전부 CAN 버스에 연결돼 있다고 들었어요. 하나는 내비, 다른 하나는 내비의 원격 디스플레이, 나머지 하나는 그냥 달려 있는 건데, 서로 동기화되는 게 하나도 없대요. 어쩌다 그렇게 됐는지 찾아봤는데, 설상가상으로 적어도 하나는 RTC 기능이 있는데도 32.768kHz(혹은 2의 거듭제곱으로 나뉘는 멀쩡한 값들 중 하나)용 XTAL 핀이 없는 uC를 쓰고, 그 대신 15MHz쯤 되는 CPU 클럭으로 시간을 센다더라고요. 그러니 그냥 계속 어긋날 수밖에요.

    스바루가 어떻게 사업을 유지하는지 이해가 안 돼요. 정말 어떻게요. 4자리 숫자 시간이잖아요. 그냥 CAN으로 방송하면 되잖아요. 왜 안 해요.

    그리고 이런 구형 내비게이션 유닛 중에는 완전히 직사각형인 것들이 많은데, 흔히 '2DIN'이라고 부르는 표준을 따라요. (아마존에서 파는 저가 수입품) 애프터마켓 유닛이 나와 있어서 약간의 작업만 하면 교체할 수 있어요. 해당 시장용으로 설치된 순정 유닛에 문제가 있을 때 대부분 그렇게 해요.

  23. ManuelKiessling HN

    제 smart fortwo에는 시계가 두 개 있어요. 하나는 라디오에, 하나는 운전석 계기판에 있죠.

    둘 다 시간이 지나면 틀어지는데 서로 반대 방향으로 틀어져서, 두 시각의 '평균'을 내면 대충 맞는 시간이 나온다는 게 요령이에요.

  24. jttnr HN

    2010년에 산 제 첫 차 현대 i10은 아주 기본적이고 기능이 별로 없었습니다. FM/AM 튜너와 CD 플레이어가 달린 단순한 라디오뿐이었고 내비게이션은 없었습니다.

    가장 놀라웠던 건 서머타임이 시작되거나 끝날 때마다 시계가 알아서 조정된다는 점이었습니다.

    달력이나 날짜 설정은 없었으니, RDS(RDS가 이런 기능을 지원하는지는 모르겠습니다)나 내장 DCF77 수신기로 시간을 받았을 거라고 짐작합니다.

    그 뒤로 산 차들은 기능이 훨씬 많았는데도 이 기능이 있는 차는 하나도 없었습니다.

    GPS 내비게이션이 내장된 차들이 GPS 신호의 시간으로 시계를 맞추지 않는 이유도 궁금합니다. 심지어 GPS 좌표로 시간대까지 알아낼 수 있으니 수동으로 설정할 필요도 없을 텐데요.

  25. phire HN

    RDS일 겁니다.

    위키백과를 확인해 보니 RDS에는 시간과 날짜를 전송하는 선택 기능이 있고, 명시된 용도가 바로 자동차 시계 갱신입니다.

    > 내장 GPS 내비게이션이 있는 차들이 GPS 신호의 시간으로 시계를 동기화하지 않는 이유도 궁금합니다.

    GPS는 시간대 정보도, 윤초 정보도 전송하지 않습니다. 아주 정확한 'UTC 마이너스 18초'를 전송하긴 하지만, 시간대 데이터베이스를 갱신할 인터넷 연결이나 (최근까지는) 윤초 정보가 없으면 시계를 갱신하는 데 쓰기에는 좀 쓸모가 없습니다.

  26. Nition HN

    다들 기사는 읽고 말씀하시는 건지 모르겠네요. OP의 차는 GPS로 시간을 받고 있고, 사용자가 설정하는 오프셋(OP의 불운한 상황에서는 고정된 오프셋)을 적용해요.

  27. krautsauer HN

    GPS는 안 보내지만 갈릴레오, GLONASS, 베이더우는 보내요 (미치비키는 잘 모르겠네요). 요즘 차량용 수신기는 아직도 GPS만 쓰나요?

  28. lazide HN

    GPS는 세밀한 위치 정보도 주니까, 시간대 데이터베이스만 있으면 지금 벌어지는 일보다 훨씬 나을 거예요.

    그다음에 원하면 사용자가 시간대 오프셋 같은 걸 직접 덮어쓰게 하면 되고요.

  29. phire HN

    이제 윤초가 없어졌으니, 내장 시간대 데이터베이스 방식(사용자 덮어쓰기 포함)이 훨씬 현실성 있어졌다고 생각해요.

  30. themanualstates HN

    제가 15년간 말도 안 되는 감가상각을 거친 뒤에 산 1999년식 Mercedes-Benz S-Class는 그렇게 했어요.

    직접 수리하다가 시계를 망가뜨린 줄 알았어요. 그 차도 시계를 수동으로 못 맞췄거든요(+30분 오프셋을 켜는 것 말고는요). 다행히 차고에서 나와 GPS 신호를 잡자 저절로 고쳐졌어요.

Hacker News에서 보기 ↗