- xz/liblzma tarball의 백도어를 둘러싸고, Jia Tan의 Git 커밋 시간대와 작업 패턴이 실제 활동 지역을 추정하는 단서로 쓰임
- 커밋 시각은
GIT_AUTHOR_DATE와GIT_COMMITTER_DATE로 조작 가능하지만, 전체 시각을 그럴듯하게 맞추기보다 시간대만 바꾸는 방식이 더 쉬웠을 가능성이 큼 - Jia Tan의 커밋 440개 대부분은 UTC+08로 기록됐지만, 일부 UTC+02·UTC+03 기록은 동유럽식 겨울·서머타임 전환과 맞아떨어짐
- 2022년 10월 6일과 2023년 6월 27일의 시간대 전환은 실제 이동으로 설명하기 어려울 만큼 간격이 짧아, 단순 여행 가능성을 약하게 만듦
- 일부 +0200 커밋은 Lasse Collin이
git am으로 적용한 패치로 보이며, 이메일 패치 흐름에서는 타임존 정보의 신뢰도가 낮아지는 한계가 있음
xz 백도어와 분석 대상
- xz/liblzma tarball에서 발견된 백도어는 자유 소프트웨어 생태계의 신뢰를 크게 흔든 사건으로 받아들여짐
- 백도어는 xz의 장기 메인테이너였던 Jia Tan이 넣었을 가능성이 있다고 봄
- Jia Tan은 커뮤니티에서 이름 외에 알려진 정보가 거의 없었고, 그 이름도 사실이 아닐 수 있음
- 분석 대상은 JiaT75의 GitHub 활동과 xz 저장소 커밋 타임스탬프임
- 출발점이 된 공개 글은 oss-security 메일링 리스트 게시물임
Git 타임스탬프를 위조하기 어려운 이유
- Git 커밋 시간은
GIT_AUTHOR_DATE와GIT_COMMITTER_DATE환경변수로 바꿀 수 있음 - 아직 푸시하지 않은 커밋은 amend로 날짜를 나중에 수정하는 것도 가능함
- 그러나 그럴듯한 시간 데이터 위조에는 여러 제약이 따름
- 미래에 만든 것처럼 보이는 커밋을 푸시하면 의심을 살 수 있음
- 온라인 논의보다 더 오래된 것처럼 보이는 커밋도 부자연스러움
- 이런 제약을 피하려면 커밋을 보류해야 해 프로젝트 개발이 지연될 수 있음
- 실제 시각을 조정하는 대신 시간대만 변경하면 계산이나 커밋 지연 없이 더 쉽게 속일 수 있음
UTC+08 기록과 UTC+02/03 가능성
- Jia Tan의 커밋 대부분인 440개는 UTC+08 타임스탬프로 남아 있음
- UTC+08은 중국 CST일 가능성이 크지만, 인도네시아·필리핀·서호주도 같은 시간대에 속함
- Jia Tan이라는 이름은 아시아인, 특히 중국인처럼 보이게 하려는 신호일 수 있음
- 실제 활동 지역은 UTC+02 겨울 시간 / UTC+03 서머타임 지역이었을 가능성이 제시됨
- 해당 지역에는 동유럽 EET, 이스라엘 IST 등이 포함됨
- UTC+08 기록을 UTC+02/03 기준으로 보정하면 보통 오전 9시부터 오후 6시까지 일한 패턴이 됨
- 보정하지 않으면 화요일 밤 자정과 새벽 1시에 일한 형태가 되어 덜 자연스러움
시간대 전환에서 드러난 단서
- 일부 커밋은 Jia Tan이 시간대 변경을 잊은 결과일 수 있음
- UTC+02 커밋 3개와 UTC+03 커밋 6개가 확인됨
- UTC+02는 2월과 11월의 겨울 시간과 맞음
- UTC+03은 6월, 7월, 10월 초의 서머타임과 맞음
- 이는 동유럽의 서머타임 전환, 즉 10월 마지막 주말 이후 +0200, 3월 마지막 일요일 이후 +0300 패턴과 맞음
- 이 시간대는 Lasse Collin과 Hans Jansen의 시간대와도 같아 보임
- 4월 2일 업데이트에서는 Joey Hess의 지적을 반영해, 이런 사례 중 다수가 Lasse Collin이 committer인 커밋이라고 덧붙임
- 다만 Lasse가 커밋한 Jia의 모든 커밋에서 같은 현상이 나타나지는 않고, 많은 경우 +0800으로 기록됨
- 따라서 +02/03 커밋이 실수인지, 단순한 워크플로 변화인지는 명확하지 않음
실제 이동으로 보기 어려운 간격
- UTC+08 거주자가 가끔 UTC+02/03 지역으로 비행했다는 설명은 세부 타임스탬프와 잘 맞지 않음
- 2022년 10월 6일에는 21:53:09 +0300 커밋 뒤에 17:00:38 +0800 커밋이 있음
- 두 커밋 사이 차이는 약 11시간
- 중국에서 동유럽 또는 중동까지는 순수 비행 시간만 최소 10~12시간이며, 직항이 드물어 더 오래 걸릴 가능성이 큼
- 2023년 6월 27일에는 23:38:32 +0800 커밋과 17:27:09 +0300 커밋이 이어짐
- 두 커밋 차이는 몇 분 수준임
- 이런 전환은 Jia Tan이 실제로 UTC+08 CST 지역에 있었던 것이 아닐 가능성을 뒷받침함
휴일과 주중 작업 패턴
- 휴일 패턴도 중국보다 동유럽 쪽과 더 잘 맞는 것으로 보임
- 중국 공휴일 목록은 Bank of China Indonesia의 2023년 공휴일 안내를 참고함
- 중국 공휴일로 제시된 날에도 작업 기록이 있음
- 2023년 9월 29일: 중추절
- 2023년 4월 5일: 청명절
- 2023년 1월 22~27일 등: 춘절 기간
- 동유럽 공휴일과 관련해서는 12월 25일 크리스마스, 12월 31일과 1월 1일 신년에 일한 기록이 없다고 봄
- Jia의 가장 흔한 작업 요일은 화요일 86회, 수요일 85회, 목요일 89회, 금요일 79회임
이름과 패치 적용 caveat
- “Jia Cheong Tan”이 실제 이름이라면 중국에서 쓰는 한자 이름의 유효한 로마자 표기일 수 없고, 말레이시아 같은 동남아 쪽 표기에 가깝다는 지적이 있음
- “Cheong” 철자는 현대 중국에서 쓰이지 않으며, 중국식 영문 표기는 이름 글자를 붙여 쓰는 경향이 있다는 예시도 제시됨
- 예시는 “Yangqing Jia”이지 “Yang Qing Jia”가 아님
- 다만 두 개의 +0200 커밋
de5c5e4,e446ab7a는 committer가 Lasse Collin이며, Jia가 이메일로 보낸 패치를git am으로 적용한 것으로 보임 - 해당 커밋과 인접 커밋 일부는 동일한 타임스탬프를 가지며, 이는 패치 파일 묶음을
git am으로 적용한 경우와 일치함 - 패치가 이메일로 오가는 경우 타임존 정보에 의존하기 어려워, 이 분석의 일부는 약해짐