처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.09.08 22

컴파일러만의 위협이 아니었다: strip으로 리눅스 배포판 전체를 감염시킨 신뢰 공격

Hacker News 원문 보기

소프트웨어 공급망 보안을 이야기할 때 빠지지 않고 등장하는 고전이 켄 톰슨(Ken Thompson)의 '신뢰를 신뢰하는(trusting-trust)' 공격이다. 오염된 컴파일러가 자신이 빌드하는 프로그램에 백도어를 심고, 동시에 자기 자신을 다시 컴파일할 때도 그 백도어를 은밀히 복제해 넣는다는 시나리오다. 소스 코드 어디에도 악성 흔적이 남지 않기 때문에, 소스를 아무리 감사해도 오염된 바이너리가 계속 재생산된다. 오랫동안 이 위협은 '컴파일러라는 특수한 도구에 국한된 문제'로 여겨져 왔다. 컴파일러만이 소스를 읽고 새로운 실행 파일을 만들어내니, 방어의 초점도 컴파일러 검증과 재현 가능한 빌드(reproducible build)에 맞춰졌다.

arXiv에 공개된 이 연구는 그 전제를 정면으로 반박한다. 연구진은 컴파일러가 아니라 GNU strip을 이용해 완전한 신뢰 공격을 구성했다. strip은 실행 파일에서 디버깅 심벌 등 불필요한 정보를 제거해 용량을 줄이는, 빌드 과정에서 흔히 쓰이는 평범한 유틸리티다. 소스 코드를 들여다보지도, 새로 생성하지도 않는다. 오직 이미 완성된 ELF 바이너리를 조작하는 것만으로 백도어를 심고 전파시켰다는 점이 핵심이다. 즉 '컴파일러의 특수성'이라는 방어 논리가 사실은 훨씬 넓은 표면적을 놓치고 있었다는 지적이다.

씨앗 하나로 최종 환경까지

연구진이 표적으로 삼은 것은 NixOS 리눅스 배포판의 부트스트랩 과정이다. NixOS는 신뢰할 수 있는 최소한의 바이너리 씨앗(binary seed)에서 출발해 단계적으로 도구 체인을 재빌드하며 표준 환경을 쌓아 올리는 구조로 잘 알려져 있다. 이 부트스트랩의 초기 바이너리 씨앗에 조작된 strip 하나를 심어 두면, 그 페이로드가 다음 세대의 strip으로 옮겨 가고, 그다음 세대로 다시 이어진다. 결정적으로 원래의 씨앗이 의존성 폐포(dependency closure)에서 빠져나간 뒤에도 백도어는 최종 표준 환경까지 살아남는다. 톰슨의 원래 공격에서 컴파일러가 세대를 넘어 자기 복제하던 그 성질이, 여기서는 strip을 매개로 그대로 재현된 셈이다.

연구는 이론적 구성에 그치지 않았다. 실제 nixpkgs 리비전 위에서 이 공격을 돌렸을 때, 그래픽 설치 프로그램을 포함한 완전한 시스템이 아무 오류 없이 빌드되었고, 그 결과물의 거의 모든 바이너리에 백도어가 심어졌다고 밝혔다. 감염된 패키지들은 임의의 악성 동작을 수행할 수 있는 상태가 된다. 빌드가 실패 없이 통과했다는 점이 특히 중요하다. 공격이 티 나지 않게, 즉 정상적인 산출물처럼 완성되었다는 뜻이기 때문이다.

실무자가 눈여겨봐야 할 지점

이 결과가 던지는 실무적 메시지는 분명하다. 공급망 보안 검증의 범위를 컴파일러에서 '빌드 도구 전반'으로 넓혀야 한다는 것이다. 링커, strip, objcopy 같은 바이너리 후처리 도구들은 대개 감사 우선순위에서 밀려 있지만, 이번 연구는 소스를 다루지 않는 도구조차 세대를 넘어 자기 복제하는 백도어의 운반체가 될 수 있음을 보여준다. 재현 가능한 빌드나 소스 감사만으로는 이런 바이너리 계층의 오염을 잡아낼 수 없다. 검증되지 않은 바이너리 씨앗에서 도구 체인을 쌓아 올리는 부트스트랩 모델 자체가 신뢰의 뿌리(root of trust)에 대한 근본적 질문을 안고 있다는 점도 함께 드러난다.

동시에 이 연구의 한계와 성격도 냉정하게 짚을 필요가 있다. 이것은 야생에서 발견된 실제 침해 사고가 아니라, 통제된 환경에서 수행된 개념 증명 성격의 공격 구성이다. 전제 조건으로 초기 바이너리 씨앗에 대한 조작 능력이 필요하며, NixOS의 명시적인 부트스트랩 구조를 활용했다. 따라서 '지금 당장 내 시스템이 이렇게 감염돼 있다'는 이야기로 받아들이기보다는, 우리가 무엇을 신뢰하고 있으며 그 신뢰가 어디에서 시작되는지를 다시 점검하라는 경고로 읽는 편이 정확하다.

부트스트랩을 신뢰의 사슬로 설계하는 NixOS처럼 재현성과 최소 신뢰를 지향하는 배포판일수록, 역설적으로 그 사슬의 가장 낮은 고리인 바이너리 씨앗의 무결성을 어떻게 독립적으로 검증할 것인가가 관건이 된다. 컴파일러만 지키면 된다는 오래된 직관을 내려놓고, 완성된 바이너리를 만지는 모든 도구를 잠재적 신뢰 경로로 취급하는 것. 이번 연구가 남긴 실질적인 숙제는 거기에 있다.

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.