uMatrix 재구상: Manifest V3에 세분화된 요청 제어 도입
고급 사용자와 프라이버시 애호가에게, 더 이상 지원되지 않는 uMatrix 확장 프로그램은 단순한 도구 그 이상이었습니다; 브라우저의 명령 센터와도 같았습니다. uBlock Origin의 개발자 Raymond Hill이 만든 uMatrix는 사이트 권한 및 하위 리소스 요청을 제어할 수 있는 직관적인 매트릭스 스타일 인터페이스를 제공했습니다. 이를 통해 사용자는 서드파티가 제공할 수 있는 스크립트, 프레임, 폰트, 비디오 등을 정확히 제한할 수 있었으며, 번거로운 수동 작업을 관리 가능한 워크플로우로 전환했습니다.
uBlock Origin(uBO)이 이러한 기능들을 많이 흡수했지만, Chrome의 Manifest V3(MV3)로의 전환으로 격차가 생겼습니다. MV3에 부합하는 후속 제품인 uBO Lite는 uMatrix를 필수적으로 만들었던 세분화된 제어 기능이 부족합니다. 이로 인해 Tavis Ormandy는 새로운 확장 아키텍처의 제약 하에서 uMatrix와 같은 경험이 가능한지 조사하게 되었습니다.
기술적 과제: MV2 vs. MV3
uMatrix를 복제하는 데 있어 가장 큰 장애물은 Manifest V2에서 Manifest V3로의 전환입니다. MV2에서는 확장 프로그램이 '차단' 웹 요청을 사용할 수 있었으며, JavaScript 콜백을 실행해 실시간으로 요청을 허용할지 차단할지를 결정할 수 있었습니다.
MV3는 이 기능을 제거합니다. 대신 확장 프로그램은 declarativeNetRequest API를 사용해야 합니다. 이는 확장 프로그램이 모든 요청마다 로직을 실행할 수 없으며, 미리 규칙 집합을 선언하고 브라우저가 이를 실행해야 함을 의미합니다. 비평가들은 이것이 광고 차단기와 프라이버시 도구의 기능을 '약화'시킨다고 주장하지만, Ormandy는 uMatrix 대체라는 특정 사용 사례에서는 이러한 규칙이 충분히 유연하여 실용적이라고 제안합니다.
matrix³를 위한 제안된 아키텍처
uMatrix의 세분화된 제어를 되돌리기 위해, Ormandy는 브라우저의 새로운 제한에 맞서기보다 기존 웹 표준을 활용하는 설계를 제안합니다. 이 전략은 두 가지 주요 구성 요소를 포함합니다:
1. Content Security Policy (CSP) 활용
declarativeNetRequest 규칙으로 모든 요청을 관리하려고 시도하는 대신, 제안된 해결책은 API를 사용해 맞춤형 Content-Security-Policy(CSP) 헤더를 삽입하는 것입니다. CSP는 어떤 리소스를 어디서 로드할 수 있는지를 제어하도록 설계된 브라우저 고유 메커니즘입니다. 실제 차단 작업을 브라우저 자체 CSP 엔진에 위임함으로써, 확장 프로그램은 이러한 정책을 관리하는 인터페이스가 됩니다.
2. report-to를 통한 자동 탐색
uMatrix의 가장 뛰어난 기능 중 하나는 사이트가 로드하려는 하위 리소스를 정확히 사용자에게 보여주어, 실시간으로 승인하거나 거부할 수 있게 하는 것이었습니다. MV3에서 이를 재현하기 위해, Ormandy는 CSP의 report-to 지시자를 사용할 것을 제안합니다.
CSP 위반이 발생하면 브라우저는 특정 엔드포인트에 보고서를 전송하도록 지시받을 수 있습니다. declarativeNetRequest를 사용해 이러한 보고서를 가로채면, 확장 프로그램은 실시간으로 차단된 리소스 목록을 채울 수 있습니다. 이는 피드백 루프를 생성합니다: 브라우저가 요청을 차단하고, 위반을 보고하며, 확장 프로그램이 해당 위반을 사용자에게 표시해 '허용' 규칙을 만들 수 있게 합니다.
현재 상황: matrix³
이 개념적 프레임워크는 matrix³라는 개념 증명으로 이어졌습니다. 현재는 최소한의 UX를 갖춘 프로토타입 단계이지만, "block $\rightarrow$ report $\rightarrow$ user decision $\rightarrow$ allow" 핵심 루프가 Manifest V3 하에서 실현 가능함을 보여줍니다.
커뮤니티 관점 및 대안
이 프로젝트를 둘러싼 논의는 브라우저 생태계 내 깊은 긴장을 부각시킵니다. 많은 사용자들은 이러한 우회 방법이 필요해진 것이 광고 차단기의 효과를 제한하려는 Google의 MV3 추진의 직접적인 결과라고 주장합니다.
대안 경로
기능을 포기하고 싶지 않은 사람들을 위한 대안으로 여러 커뮤니티 구성원들이 다음을 제시했습니다:
- Firefox: Firefox가 Chrome과 같은 제한적인 MV3 접근 방식을 채택하지 않았기 때문에, uBlock Origin은 여기서 완전히 작동합니다. 다른 사람들은 Firefox 사용자를 위한 현대적인 대안으로 nuMatrix를 제안했습니다.
- Brave: 일부 사용자는 Brave가 uMatrix와 유사한 기능을 명시적으로 지원한다고 발표했음을 언급했습니다.
- Chrome Flags: Chrome에 머물고자 하는 사용자들을 위해, 일부는 명령줄 플래그(예:
--disable-features=ExtensionManifestV2Unsupported)를 사용해 일시적으로 MV2 확장 프로그램을 유지할 수 있다고 제안했지만, 이는 불안정한 해결책입니다.
"User Agent" 철학
기술 구현을 넘어, 대화는 브라우저를 "user agent"로 보는 철학에까지 이르렀습니다. 비평가들은 현대 브라우저에 네이티브 세분화된 요청 제어가 부족한 것이 시스템적인 실패라고 주장합니다. 한 댓글자는 다음과 같이 언급했습니다:
"uMatrix와 같은 기능은 브라우저에 바로 내장되어야 합니다... 이것은 절대적으로 필수적인 확장 프로그램이며... 버튼 한 번 클릭으로 대부분의 사이트가 로드하려는 다양한 불필요한 요소들을 볼 수 있다는 것은 정말 눈을 뜨게 합니다."
이러한 제어를 확장 프로그램으로 옮기고, 그 확장 프로그램을 MV3로 제한함으로써, 브라우저는 사용자에게 서비스를 제공하는 에이전트 역할을 멈추고 웹 광고 생태계의 문지기로 전락합니다.