세상 구석 구석의 이야기

맥북 프로의 날짜를 1970년 1월 1일로 설정했습니다. 그랬더니…

ios

iOS의 시스템 날짜를 잘못 건드리면 기기가 멈춰버리는 버그가 발견돼 세간의 입방아에 오르내리고 있다는 소식을 앞서 전한 바 있습니다. iOS의 날짜와 시간 설정에서 ‘자동으로 설정’ 옵션을 해제하고 날짜를 1970년 1월 1일로 바꾸면, 기기가 무한 재부팅 상태로 빠지면서 아무 것도 할 수 없는 소위 ‘벽돌폰’이 된다는 내용이었죠. 공장초기화나 아이튠즈를 통한 복구기능으로도 문제가 해결되지 않기 때문에 문제가 생기면 애플 수리센터를 방문해 메인보드를 교체하거나 케이스를 분해한 뒤 배터리를 임의로 분리하는 것 외에는 아직까지 뚜렷한 해결 방안이 없는 상태입니다.

왜 이런 문제가 나타나는지 여러 분석이 나오고 있지만 가장 설득력 있는 주장은 ‘유닉스 에폭(The Unix Epoch)’에 따른 버그라는 것입니다. 유닉스 운영체제는 1970년 1월 1일을 기준 시간으로 설정해 1초 단위로 시간을 계산합니다. 따라서 유닉스 기반 시스템의 시간을 초기화하면 1970년 1월 1일로 돌아가게 되는데요. 날짜 설정을 임의로 건드리면 시간대 설정과 맞물려 날짜가 1970년보다 더 앞으로 돌아가고, 그에 따라 날짜 관련 데이터가 꼬이면서 인해 운영체제가 시스템 날짜를 제대로 인식하지 못한다는 것입니다.

그런데 여기서 의문이 드는 한 가지가 있습니다. OS X를 쓰는 맥은 전혀 문제 없을 것이냐는 점이지요. iOS의 뿌리는 맥OS이고, 맥OS는 넥스트스텝이라는 운영체제에 기원합니다. 그리고 넥스트스텝은 다시 유닉스(Unix)에 뿌리를 두고 있는데, 이 진화를 거쳐와 iOS와 분기된 OS X 역시 유닉스 에폭의 영향을 받을 가능성이 있기 때문이지요.

OS X의 시스템 날짜를 1970년 1월 1일로 설정하면?

OS X 시스템 환경설정을 통해 시스템 날짜를 1970년 1월 1일 1시로 설정했다

“OS X의 시스템 날짜를 1970년 1월 1일로 설정하면 어떻게 되는가?”에 대한 질문이 머릿 속에서 지워지지 않아 결국 기자의 맥북 프로에서 직접 해봤습니다. 하지 말라는 일은 더 하고 싶고, 가지 말라는 곳엔 기어이 가 보아야 직성이 풀리는 성격이라서 말이죠. 결과는 OS X 역시 부팅이 제대로 되지 않습니다. iOS 장치처럼 애플 수리센터를 방문하거나 배터리를 분리해야 하는 iOS에 비해 상대적으로 복구가 간단한 편이지만, 역시 오류는 발생합니다.

우선, 위 사진처럼 시스템 환경설정을 통해 시간대를 그리니치 표준시로 변경하고, 시스템 날짜는 1970년 1월 1일 1시로 설정했습니다. 참고로 1970년 1월 1일 1시보다 더 빠른 시간을 입력하면 운영체제가 시스템 날짜를 마지막에 설정한 시간으로 강제로 돌려놓습니다. 즉, 사용자가 설정할 수 있는 가장 빠른 시스템 날짜는 1970년 1월 1일 1시입니다.

이 상태에서 맥을 재시동하면 일단 부팅은 이상 없이 진행되지만, 로그인 화면에서 문제가 발생합니다.

 OS X 로그인 화면사용자 암호를 제대로 입력하더라도 잘못된 비밀번호라고 튕겨내면서 데스크톱으로 넘어가지 못하고 어떠한 데이터도 접근할 수 없는 상태가 됩니다. 비밀 번호를 잘못 입력한 것 아니냐 할 수도 있을 텐데요. 1년 넘게 쓰던 비밀 번호를 여러 번 잘못 입력할 일은 일은 없습니다. 혹시 대문자 키가 켜져 있어서 그런게 아닌지도 여러 번 확인했습니다. 신기하게도 자동 로그인 설정을 꺼놓은 채 시스템 날짜를 1970년 1월 1일로 설정하더라도 맥을 부팅할 때 무조건 로그인 화면을 띄운 후 암호를 물어봅니다.

이것이 OS X 키체인 인증 과정에서 문제가 발생하는 것인지, 아니면 시스템 날짜를 이용한 익스플로잇을 차단하는 메커니즘이 있는건지 모르겠습니다. 아무튼 어떤 방법으로도 운영체제 진입이 불가능했고, 하드웨어와 소프트웨어 정보가 저장된 NVRAM과 SMC 칩을 초기화하더라도 문제가 해결되지 않았습니다. 이 상태에서 빠져나오는 유일한 탈출구는 시스템 복구 모드를 사용해 날짜를 원래대로 돌려놓는 것뿐입니다.

날짜를 되돌리는 방법은 로직보드에 달린 수은 전지가 방전됐을 때 적용하는 것과 비슷한데요. 시스템 복구 모드에 들어가 터미널 앱을 실행한 뒤 ‘date’ 명령어를 사용해 시스템 날짜를 원래 날짜로 설정합니다. 이렇게 하면 로그인 화면에서 사용자 암호를 암호를 정상적으로 인식합니다. (관련 정보)

다만, 이렇게 운영체제에 성공적으로 진입하더라도 여러 응용 프로그램(Dropbox, ReadKit, Divvy, Scrivener 등)의 인증이 풀리면서 앱을 시작할 수 없거나 강제 충돌되는 현상이 나타납니다.

사진처럼 초기화만 되어도 다행… 아예 실행되지 않는 앱도 수두룩…사실 일요일에 글을 쓸 수 없었던 이유도 이것 때문이었습니다. 도무지 앱을 살릴 수 없어서 타임머신으로 데이터를 복구했는데 용량이 크다 보니 온종일이 걸리더군요. 캘린더와 연락처 일정도 꼬여 있어서 아이클라우드 사이트를 방문해 시스템 날짜를 바꾸기 전 데이터를 불러왔습니다. 다행히 복구 후에는 부팅도 잘 되고 모든 프로그램이 정상적으로 실행되지만 다시는 하고 싶지 않은 경험이었습니다. 어쩌면 이것 외에도 아직 발견하지 못한 문제가 남아 있을 수 있습니다. 어제 이후 사파리가 어딘가 영 이상하게 돌아가는 것을 보면 말이죠.

아무튼, 복구 방법이 있긴 하지만 이처럼 엄청난 부작용이 있을 수 있으니 단순한 호기심으로라도 맥의 시스템 날짜를 1970년으로 돌리지 마시기 바랍니다. 제가 여러분의 실험체가 대신한 것으로 만족하시길~

글/ 테크G ONE™ one_tm@techg.kr


Comments are closed.

포스트 카테고리