1P by neo 2달전 | favorite | 댓글과 토론

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 등이 있음