strip 유틸리티를 통한 Linux 배포판 전체의 Trusting-Trust 공격

1 hour ago 2

소스 코드 검토를 우회하는 trusting-trust 공격이 컴파일러가 아닌 GNU strip에서도 가능하며, NixOS 부트스트랩부터 최종 환경까지 감염이 이어지는 것을 실증함 공격은 소스를 검사·생성·수정하지 않고 완성된 ELF 파일만 변환하며, 깨끗한 소스로 다시 빌드한 다음 세대 strip에도 악성 로직을 전달함 초기 바이너리 시드에 변조된 strip 하나를 넣으면, 해당 시드가 의존성 클로저에서 사라진 뒤에도 최종 표준 환경에 페이로드가 남음 실제 nixpkgs 리비전에서 전체 그래픽 설치 이미지를 빌드 실패 없이 생성했으며, 그 안의 거의 모든 바이너리에 백도어를 삽입해 감염된 패키지에서 임의의 악성 동작을 가능하게 함 소스 코드 검토만으로는 이런 공격을 발견할 수 없으며, 배포판 실행 파일 상당수를 처리하는 빌드 후처리 유틸리티도 자기 전파와 하위 소프트웨어 감염의 매개가 될 수 있음 소스 코드 공개와 검토만으로 해결되지 않는 신뢰 문제 Linus의 법칙은 충분히 많은 사람이 코드를 검토하면 버그를 찾기 쉬워진다는 생각으로, Eric S. Raymond가 오픈소스 개발에 관한 에세이를 통해 널리 알림 공개 소스를 누구나 검토할 수 있다는 점은 자유·오픈소스 소프트웨어의 버그, 보안 취약점, 백도어 가능성을 낮추는 근거가 됨 그러나 실행하려면 먼저 컴파일해야 하므로, 소스 공개만으로 실행되는 소프트웨어까지 신뢰할 수 있는 것은 아님 Ken Thompson의 trusting-trust 공격에서는 악성 컴파일러가 보안상 중요한 프로그램의 소스와 컴파일러 자신의 소스를 인식함 보안상 중요한 프로그램에는 백도어를 삽입하고, 컴파일러에는 같은 공격 로직을 재생성함 악성 소스를 제거해도 감염된 컴파일러 바이너리로 깨끗한 소스를 컴파일하면 감염이 이어져 소스 코드 검토로는 드러나지 않음 Thompson은 실제 프로토타입을 구현했지만, 문서화되거나 연구된 구현 사례는 부족하며 현실에서의 지속적인 전파 가능성도 일반적으로 잘 알려져 있지 않음 기존 방식은 컴파일러 자신의 소스를 인식해야 하므로, 소스가 크게 바뀌면 공격이 발견되지 않아도 전파가 중단될 수 있음 GNU strip을 통한 자기 전파와 NixOS 실험 GNU binutils의 strip은 오브젝트 파일과 실행 파일에서 정보를 제거하는 빌드 후처리 유틸리티이며, 배포판이 생성하는 실행 파일의 상당 부분을 처리함 따라서 strip을 감염시키면 자신의 감염을 ...

Read Entire Article