Homebrew 6.0.0 릴리스 노트
Homebrew 6.0.0은 향상된 보안과 성능을 도입합니다
Homebrew 6.0.0은 새로운 탭 신뢰 메커니즘과 Linux 샌드박싱을 통해 공급망 위험을 완화하는 데 중점을 두며, 새로운 기본 내부 JSON API를 통해 업데이트 속도를 크게 향상시킵니다. 이번 릴리스는 macOS 27 (Golden Gate)에 대한 초기 지원을 도입하고 brew bundle 기능을 확장합니다.
보안 향상
탭 신뢰 메커니즘
Homebrew 6.0.0은 제3자 탭에 대해 임의의 샌드박스되지 않은 Ruby 코드를 실행하지 못하도록 필수 신뢰 모델을 구현합니다. 탭 및 탭에 해당하는 formulae 또는 cask는 이제 코드가 평가되거나 실행되기 전에 명시적으로 신뢰되어야 합니다. 공식 Homebrew 탭은 기본적으로 신뢰됩니다.
주요 기술적 변경 사항은 다음과 같습니다:
- Enforcement: 신뢰되지 않은 탭은 코드 실행 전에 표시되며, 신뢰되지 않은 탭에 대한 자동 탭핑이 비활성화됩니다.
- Management: 새로운
brew tap명령을 통해 사용자는 신뢰를 관리할 수 있으며, 원격 URL을 통해 탭을 신뢰하도록 할 수 있습니다. - Integration:
brew bundle이 이제trusted:옵션을 인식하고,brew bundle dump는 신뢰된 항목을 기록합니다.
Linux 샌드박싱
Linux를 macOS와 일치시키기 위해 Homebrew는 이제 Bubblewrap 샌드박스를 빌드, 테스트 및 postinstall 단계에 활용합니다. 현재 개발자를 위해 기본적으로 활성화되어 있습니다. 구현에는 강화된 설치 단계와 샌드박스된 cask 실행 훅이 포함됩니다.
보안 권고 및 수정 사항
이번 릴리스는 세 가지 중요한 보안 취약점을 해결합니다:
- GHSA-7699-qf8c-q47m: HTTPS에서 HTTP로의 리다이렉트 보호를 무시하도록 허용하던 POST 다운로드 전략의 우회를 수정했습니다.
- GHSA-6689-q779-c33m: macOS
.pkgpostinstall에서 Git 훅을 통한 루트 코드 실행 취약점을 해결했습니다. - GHSA-59v8-x8q4-px5c: macOS 설치 패키지가 사용자 제어
/var/tmpplist를 신뢰하도록 하는 취약점을 수정했으며, 이는 로컬 공격자가 Homebrew 소유권을 할당할 수 있게 할 수 있었습니다.
성능 및 인프라
기본 내부 JSON API
내부 JSON API가 이제 기본값이 되었으며, 이전 선택적 시스템(HOMEBREW_USE_INTERNAL_API는 이제 사용 중단됨)을 대체합니다. 메타데이터를 하나의 다운로드로 결합함으로써 Homebrew는 네트워크 요청을 줄이고 업데이트 과정을 가속화합니다.
일반 속도 향상
사용자는 여러 영역에서 더 빠른 성능을 체감할 것입니다:
- Startup: Ruby 라이브러리 로딩 및 일반 시작 로직에 대한 조정.
- Command Speed:
brew leaves가 약 30% 더 빨라졌습니다. - Upgrade Process: 업그레이드 중 병렬화된 bottle 탭 가져오기.
기능 업데이트
brew bundle 개선
brew bundle은 중요한 기능 확장을 받았습니다:
- Parallel Installation: Formula 설치가 이제 기본적으로 병렬 작업으로 실행됩니다.
- New Extensions:
npm,krew, 그리고 Windowswinget에 대한 지원이 추가되었습니다. - Enhanced Cleanup:
npm,cargo,go,uv확장에 대한 정리 지원이 추가되었습니다.
사용자 경험 및 기본값
사용자 설문조사를 기반으로 Homebrew는 투명성을 높이기 위해 여러 기본값을 변경했습니다:
- Ask Mode: 이제 개발자를 위한 기본값입니다.
brew install및brew upgrade가 의존성 요약을 제공하고 진행 전에 확인을 요구합니다. brew info: 출력이 더 일관되게 되었으며, 실행 파일을 나열하는 새로운 "Binaries" 섹션과 더 명확한 재귀 런타임 의존성 정보를 포함합니다.
새로운 명령
brew exec:npx와 유사한 새로운 명령으로, formula 환경을 지원합니다.brew vulns: 설치된 패키지의 알려진 취약점을 확인하는 새로운 tap 및 서브커맨드입니다.brew as-console-user: MDM 또는 루트 환경에서 Homebrew를 올바르게 실행하도록 설계되었습니다.
플랫폼 지원 및 폐기
macOS 27 (Golden Gate)
Homebrew는 macOS 27에 대한 초기 지원을 추가합니다. 특히 macOS 27이 Intel 지원을 중단함에 따라, Homebrew는 macOS Intel x86_64에 대해 단계적인 폐기를 진행할 예정입니다:
- September 2026: Tier 3으로 이동 (CI 지원 없음, 새로운 바이너리 bottle 없음).
- September 2027: 완전 지원 중단; 관련 코드가 모두 삭제됩니다.
brew-rs 실험
Ruby 프론트엔드를 Rust(brew-rs)로 옮기는 실험이 종료되었습니다. 벤치마크 결과, Rust 프론트엔드는 제한된 캐시된 bottle 가져오기 상황에서만 성능 향상을 제공했으며, 대표적인 전체 설치에서는 개선되지 않았습니다. 성능 작업은 Ruby 최적화와 I/O 타이밍 개선으로 돌아갔습니다.
커뮤니티 인사이트 및 반론
릴리스는 전반적으로 성능 및 보안 향상으로 좋은 평가를 받았지만, 커뮤니티 토론에서는 몇 가지 논쟁점이 강조되었습니다:
- Intel Deprecation: 일부 사용자는 Intel 지원 중단 일정이 공격적이라는 우려를 표했으며, 많은 Mac 서버가 오래된 Intel 하드웨어에서 운영되고 있음을 지적했습니다.
- Version Pinning: 사용자는 특정 환경을 깨뜨릴 수 있는 "강제 업그레이드"를 피하기 위해 보다 견고한 고정 및 롤백 메커니즘을 지속적으로 요청하고 있습니다.
- Alternative Tooling: 일부 개발자는 언어별 런타임(Python, Node.js)의 버전 관리를 개선하거나 전체 환경 재현성을 위해
mise또는Nix와 같은 도구로 마이그레이션한다고 언급했습니다.
“전체 OS 수준 개발 환경을 mise로 전환했습니다... '재패키징'에 필요한 접착 코드가 전혀 없고, 버전 지연도 없습니다. 패키지의 임의 버전을 설치할 수 있으며... 작업 폴더별로 활성화된 버전을 동적으로 조정할 수 있습니다.”
“최근에 Nix에서 Homebrew로 다시 전환했습니다... Brew는 보유하고 있는 패키지에 대해 더 나은 지원을 제공하는 것 같습니다... 더 나은 Mac 지원... 더 나은 사용자 경험.”