🤖 AI 생성 콘텐츠 — 이 글은 AI가 자료를 수집하고 초안을 작성했으며, 발행 전 누슘 운영자가 검수했습니다.
켄 톰프슨은 1984년 ACM 글에서 컴파일러가 로그인 프로그램과 자기 자신에 백도어를 넣고, 소스에서 흔적을 지운 뒤에도 다음 빌드로 전파할 수 있음을 보였다.
코드 리뷰를 끝냈습니다. 수상한 줄은 없습니다. 안심해도 될까요? 켄 톰프슨의 대답은 차갑습니다. “그 코드를 기계어로 바꾼 컴파일러는 왜 믿죠?” 1984년에 공개된 짧은 글은 오늘날 소프트웨어 공급망 보안의 핵심 질문을 이미 찌르고 있었습니다.
목차
- Trusting Trust 공격은 어떻게 시작되나
- 왜 소스에서 흔적이 사라지나
- 오늘날 공급망 보안에 남긴 교훈
Trusting Trust 공격은 어떻게 시작되나?
톰프슨의 글은 먼저 자기 자신의 소스를 출력하는 프로그램, 이른바 quine의 생각에서 출발합니다. 프로그램이 자기 모습을 만들어낼 수 있다면, 컴파일러도 특정 입력을 알아보고 특별한 출력을 만들 수 있습니다.
사고실험의 첫 단계는 컴파일러가 로그인 프로그램을 컴파일할 때 몰래 추가 암호를 받아들이는 코드를 넣게 하는 것입니다. 로그인 소스는 깨끗하지만 결과 실행 파일에는 백도어가 생깁니다.

왜 소스에서 흔적이 사라지나?
여기서 한 번 더 꼬입니다. 컴파일러 소스 안에 “로그인 프로그램을 만나면 백도어를 넣어라”라는 코드가 남아 있으면 리뷰로 찾을 수 있습니다. 톰프슨은 컴파일러가 새 컴파일러를 컴파일할 때도 그 기능을 다시 삽입하도록 만들 수 있다고 설명합니다.
그 뒤 악성 코드를 컴파일러 소스에서 지워도 이미 만들어진 컴파일러 바이너리는 다음 세대 컴파일러에 기능을 전염시킵니다.
| 검사 대상 | 겉보기 결과 | 남는 문제 |
|---|---|---|
| 로그인 소스 | 깨끗함 | 컴파일러가 빌드 때 백도어 삽입 |
| 컴파일러 소스 | 깨끗함 | 기존 바이너리가 새 바이너리를 감염 |
| 실행 파일 | 기능상 정상 | 숨은 입력에서 우회 동작 가능 |

톰프슨이 실제 UNIX에 영구 백도어를 배포했다는 단순한 사건 기사로 읽으면 안 됩니다. 논문의 힘은 재현 가능한 개념 설명에 있습니다. “직접 만들지 않은 코드는 완전히 신뢰할 수 없다”는 결론으로, 신뢰가 소스 텍스트만이 아니라 도구를 만든 사람과 과정까지 이어진다는 점을 보여줍니다.
오늘날 공급망 보안에 남긴 교훈
현대 빌드는 컴파일러 하나보다 훨씬 복잡합니다. 패키지 관리자, CI 러너, 컨테이너 이미지, 코드 생성기, 서명 키가 이어집니다. 한 고리가 바뀌면 깨끗한 저장소에서 오염된 산출물이 나올 수 있습니다.
그래서 오늘날에는 재현 가능한 빌드, 빌드 출처 증명, 서명, 서로 다른 도구체인으로 결과를 비교하는 방법 등이 중요해졌습니다. 어떤 방법도 “아무것도 믿지 않아도 된다”는 마법은 아닙니다. 대신 어디를 믿는지 목록으로 드러내고, 한 지점의 배신이 전체를 삼키지 않게 합니다.
자주 묻는 질문 (FAQ)
Q. Trusting Trust는 실제 악성코드 이름인가요? A. 특정 악성코드 제품명이라기보다 켄 톰프슨이 설명한 컴파일러 기반 백도어와 신뢰 문제를 가리키는 표현입니다.
Q. 소스코드를 공개하면 이 공격을 막을 수 있나요? A. 소스 공개는 검토에 도움이 되지만 논문의 핵심은 소스만으로 충분하지 않다는 것입니다. 빌드에 사용한 컴파일러 바이너리와 과정도 신뢰해야 합니다.
Q. 켄 톰프슨 글은 언제 발표됐나요? A. ACM 기록에 따르면 글은 Communications of the ACM 1984년 8월호, 27권 8호 761~763쪽에 실렸습니다. 튜링상 강연을 바탕으로 합니다.
Q. 개발팀은 무엇부터 점검해야 하나요? A. 빌드 도구 버전을 고정하고, 산출물 서명과 출처를 남기며, CI 권한을 최소화하세요. 중요한 프로젝트라면 재현 가능한 빌드와 독립적인 검증 경로도 검토할 만합니다.
마치며
톰프슨의 경고는 “아무도 믿지 말라”가 아니라 무엇을 믿고 있는지 보이게 하라는 질문으로 읽는 편이 유용합니다. 여러분의 배포 파일은 어떤 컴파일러와 러너, 패키지를 거쳐 만들어지나요? 그 신뢰 사슬을 한번 그려보세요.
참고자료
- ACM — Reflections on Trusting Trust
- ACM Classic — Reflections on Trusting Trust 전문
- MIT OpenCourseWare — Trusting Trust Assignment
태그: #켄톰프슨 #TrustingTrust #컴파일러 #백도어 #공급망보안 #UNIX #튜링상

댓글을 남기려면 로그인이 필요합니다.
로그인하고 댓글 남기기