컴파일러만의 공격이 아니다: GNU strip 하나로 리눅스 배포판 전체를 백도어한 연구

Trusting-Trust Attack against an Entire Linux Distribution

Ken Thompson의 trusting-trust 공격은 컴파일러가 자신이 빌드한 프로그램을 백도어하고, 재빌드 과정에서 백도어를 스스로 재생산하는 기법으로, 컴파일러에만 적용되는 위협으로 널리 알려져 있다. 이 연구는 그 통념을 깨고, 소스 코드를 검사하거나 생성하지 않는 일반적인 빌드 유틸리티인 GNU strip을 대상으로 완전한 trusting-trust 공격을 구성했다. 완성된 ELF 파일만 조작하여 NixOS 리눅스 배포판의 부트스트랩 과정에서 단 하나의 변조된 strip이 시드에 심어지고, 이 페이로드가 세대를 거쳐 전파되어 최종 표준 환경에까지 생존한다. 실제 nixpkgs 리비전에서 이 공격은 완전한 그래픽 설치 프로그램을 오류 없이 빌드하고, 그 바이너리의 거의 전부를 백도어하여 서브버티드 패키지의 임의 악성 행위를 가능하게 했다.

우리는 소스 코드를 검사하거나 생성하지 않는 평범한 빌드 유틸리티인 GNU strip을 중심으로 완전한 trusting-trust 공격을 구축했으며, 이는 컴파일러에만 국한된 위협이라는 기존의 인식이 틀렸음을 보여준다.
  1. Jach

    저는 그들이 7.2절에서 Wheeler의 연구를 간략히 언급한 것이 좋습니다. 왜냐하면 그것은 많은 사람들이 모르는 것 같은 신뢰-신뢰 공격에 대한 일반적인 반박을 제공하기 때문입니다. 그들은 이 경우에는 적용되지 않는다고 일축하지만, 저는 그들의 주장에 설득되지 않습니다. 컴파일러만 교체하고 같은 환경에서 실행한다면 도움이 되지 않는 것은 사실이지만, 제가 기억하기로 Wheeler의 접근 방식은 환경 자체를 다양화할 매개변수로 취급합니다. 따라서 컴파일러뿐만 아니라 호스트/OS, 심지어 하드웨어까지도 포함합니다. 그래서 그것을 strip으로 확장하는 것은 사소합니다. 나쁜 배포판 툴체인으로 소스에서 binutils를 빌드하고, 배포판 strip으로 수정하고, 이것을 빌드 A라고 부릅니다. 그런 다음 다양한 환경에서 소스에서 binutils를 빌드하는데, 여기에는 다양한 스트리퍼로 수정하는 것도 포함되며, 이것을 B라고 부릅니다. 그런 다음 (같은 다양한 환경에서) B의 툴체인과 스트리퍼로 재빌드를 수행하고, 이것을 C라고 부르며, C를 A와 비교합니다. 불일치가 공격을 무너뜨립니다.

  2. colinsane

    참고로, x86_64-linux 및 i686-linux nixpkgs 부트스트랩 시드는 25개의 번들 바이너리가 아니라 181바이트입니다. https://github.com/NixOS/nixpkgs/pull/479322 이후로요. 게시 날짜 기준으로 이 기사는 aarch64-linux, riscv64-linux 등의 비-x86 플랫폼에 적용될 것입니다. 이것에 대해 우려하고 있고 x86이 아니라면, 다른 플랫폼으로 확장하는 것을 권장합니다! 시간이 지나면 musl 자체가 지원하는 모든 Linux 플랫폼으로 일반화하는 것이 가능하다고 믿습니다.

  3. fjfaase

    참고로, 저는 작은 시드로 시작하는 live-bootstrap 프로젝트를 검토했습니다. stage0에서 실행되는 모든 프로세스를 보여주는 T-다이어그램은 [1]을 참조하세요. 저는 더 적은 단계가 필요하지만 더 큰 시드로 시작하는 (아마도 더 잘 문서화된) 솔루션을 작업했으며, T-다이어그램은 [2]와 [3]을 참조하세요. x86_64 및 arm64 대상도 있습니다. (RISC-V 작업이 시작되었습니다.) [1] https://fransfaase.github.io/Emulator/tdiagram.html [2] https://fransfaase.github.io/MES-replacement/ [3] https://fransfaase.github.io/MES-replacement/Tdiagram.html

  4. hardwaresofton

    참고로, Guix는 전체 소스 부트스트랩을 가지고 있습니다: https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-...

  5. rep_lodsb

    이것은 기본적으로 ELF 실행 파일을 감염시키는 바이러스이며, 새로운 것은 없습니다.

이 날의 다른 글

2026-09-07