GN⁺: 홈브루 감사 보고서
(blog.trailofbits.com)Homebrew 감사
-
Homebrew 감사 개요
- Homebrew/brew 및 세 개의 관련 저장소를 포함한 Homebrew의 보안 관련 측면을 감사함
- 발견된 문제는 치명적이지 않지만, 공격자가 예기치 않은 시점에 실행 가능한 코드를 로드하여 Homebrew의 무결성을 저해할 수 있음
- Open Tech Fund의 후원으로 수행됨
Homebrew
-
Homebrew 소개
- macOS 및 Linux용 패키지 관리자
- 소프트웨어 개발자들에게 널리 사용되며, 수백만 건의 패키지 설치를 처리함
- Golang, Node.js, OpenSSL 등의 중요한 패키지를 포함하여, Homebrew의 보안이 전체 소프트웨어 생태계의 보안에 중요함
-
Homebrew의 역사
- 2009년 시작된 이후 여러 아키텍처 변경을 겪음
- 바이너리 빌드(병)를 기본 설치 메커니즘으로 도입하여 로컬 소스 빌드를 대체함
- CI/CD를 통해 빌드의 무결성을 유지함
감사 범위
-
감사 질문
- 로컬 액터가
brew install
없이 공식 DSL을 실행할 수 있는지 - 로컬 액터가
brew tap
만으로 공식 DSL을 평가할 수 있는지 - 네임스페이스 혼동이나 충돌을 유발할 수 있는지
- 로컬로 설치된 공식이 Homebrew의 빌드 격리 메커니즘을 우회할 수 있는지
- 낮은 권한의 CI/CD 액터가 높은 권한으로 전환할 수 있는지
- 낮은 권한의 CI/CD 액터가 병 빌드를 오염시킬 수 있는지
- 낮은 권한의 CI/CD 액터가 CI/CD에서 지속성을 유지할 수 있는지
- 로컬 액터가
주요 발견 사항
brew
-
주요 발견 사항
- 공식이 문자열 삽입을 통해 샌드박스를 탈출할 수 있음
- 충돌이 발생하기 쉬운 해시 함수(MD5)를 사용하여 런타임 혼동을 유발할 수 있음
- 공식이 명시되지 않은 네트워크 리소스를 빌드에 포함할 수 있음
- 소켓 피벗을 통해 샌드박스를 탈출할 수 있음
-
sudo
토큰을 통해 권한 상승을 수행할 수 있음 - 비로컬 URL에서 공식을 설치할 수 있음
Homebrew의 CI/CD
-
주요 발견 사항
-
pull_request_target
트리거를 사용하여 서드파티 PR이 Homebrew의 상위 저장소에서 코드를 실행할 수 있음 -
workflow_dispatch
입력을 통해 셸 삽입이 가능함 - 아카이브 추출 중 샌드박싱/격리가 부족하여 높은 권한으로 전환할 수 있음
- 비로컬 URL에서 공식을 설치하여 임의 코드 실행을 유도할 수 있음
-
주요 시사점
-
패키지 관리 생태계 감사의 도전
- 패키지 관리 도구는 설계상 임의의 서드파티 코드를 설치하고 실행함
- Homebrew와 같은 패키징 생태계에서는 패키지 형식(공식)이 자체적으로 실행 가능한 코드임
-
감사 협력
- Homebrew 유지보수자 및 Homebrew PLC와 긴밀히 협력함
- Homebrew의 보안 관리자 Patrick Linnane에게 감사의 뜻을 전함
GN⁺의 정리
- Homebrew는 macOS 및 Linux에서 널리 사용되는 패키지 관리자임
- 감사 결과, 치명적이지는 않지만 보안 문제를 발견함
- Homebrew의 보안은 전체 소프트웨어 생태계의 보안에 중요함
- 패키지 관리 도구의 특성상 임의의 서드파티 코드를 실행할 수 있어 보안 감사가 중요함
- 유사한 기능을 가진 패키지 관리 도구로는 apt, yum 등이 있음