TechTok #9. 브라우저 확장 프로그램은 어떻게 작동할까요? 그리고 방화벽이란 무엇일까요?
지난해 12월 TechTok 시리즈를 시작할 때, 우리는 이를 광고 차단과 개인정보 보호를 둘러싼 기술들에 대해 독자 여러분이 궁금해하는 질문에 직접 답하는 방식으로 구성했습니다. 공식은 단순합니다. 여러분이 묻고, 저희가 답하며, 그렇게 해서 지금까지 여덟 편을 이어왔습니다. 그동안 여러분이 특별 온라인 폼 을 통해 보내주신 질문 덕분이지만, 오늘은 약간의 방향 전환을 하겠습니다.
오늘 다룰 두 질문은 AdGuard의 CTO이자 공동 설립자인 안드레이 메슈코프
(Andrey Meshkov)이 제안한 것입니다. 그는 자주 언급되지만 명확히 설명되는 경우는 드문 기술 용어들이 있다는 점을 지적했습니다. 자, 단순하게 시작해봅시다.
브라우저 확장 프로그램은 어떻게 작동할까요?
먼저, 브라우저 확장 프로그램이 무엇인지 정의해 봅시다. 아주 단순하게 말하면, 브라우저 안에서 실행되며 웹 경험을 다양한 방식으로 바꾸는 미니 프로그램입니다. 주소창 옆의 작은 아이콘들? 그것이 바로 브라우저 확장 프로그램입니다.
이들은 정말 다양한 일을 할 수 있습니다 — 단순한 링크 열기 방식 변경이나 자동 텍스트 복사에서부터, 광고 및 추적기 차단, VPN 기능, 심지어 AI를 활용한 글쓰기·요약 보조까지. 보통은 설치 방법만 알면 충분하지, 그 내부 동작 방식까지 알 필요는 없습니다. 그런데 도대체 어떻게 작동하는 걸까요?
핵심은 이름에서 드러납니다. 독립 소프트웨어와 달리 확장 프로그램은 브라우저 없이는 동작할 수 없습니다. 브라우저와 확장 프로그램의 상호작용 중심에는 API(Application Programming Interfaces) 가 있습니다. 브라우저가 제공하는 기능과 속성 모음인 API를 통해 확장 프로그램이 브라우저 기능에 제한적이고 권한 기반으로 접근할 수 있습니다.
예를 들어, 어떤 API가 새 탭을 열거나 기존 탭을 닫을 수 있게 해준다면, 확장 프로그램은 해당 권한을 가질 경우 이를 수행할 수 있습니다. 접근하려는 기능과 데이터가 많을수록 요청 권한도 늘어나므로, 새로운 확장 프로그램을 설치할 때 권한 요청을 꼼꼼히 살펴야 합니다.
일반적으로 각 브라우저 개발사는 해당 브라우저에 특화된 자체 API를 개발합니다. 이 때문에 예를 들어 Chrome용 확장 프로그램이 Safari에서 작동하지 않거나 그 반대의 경우가 흔히 발생합니다. 이는 이상적인 상황은 아니기 때문에, 이러한 API를 공통 프레임워크 하에서 표준화하고 통합하려는 노력이 진행되어 왔으며, 그 중 하나가 WebExtensions API입니다. 이 덕분에 Chrome, Firefox, Safari와 같은 주요 브라우저들은 대부분 호환되는 확장 프로그램 API를 제공합니다. 이는 개발자가 거의 변경 없이 여러 브라우저에서 작동하는 확장 프로그램을 만들 수 있도록 합니다. 그러나 이는 당연한 것이 아닙니다. 많은 경우 다양한 브라우저에서 확장 프로그램을 원활하게 작동시키려면 많은 작업이 필요하며, 모든 개발자가 그 추가적인 노력을 기울일 자원이나 의지가 있는 것은 아닙니다.
보안 문제로 돌아가서, 브라우저가 확장 프로그램에 부과하는 제한 사항에 대해 논의해 보겠습니다. 브라우저 확장 프로그램은 이른바 샌드박스라는 격리된 환경에서 작동합니다. 이 환경은 각 확장 프로그램이 브라우저 API에만 접근할 수 있도록 허용하며, 운영 체제나 다른 응용 프로그램과의 상호작용을 제한합니다. 각 확장 프로그램은 기능을 수행하기 위해 필요한 권한을 선언하는 매니페스트를 가지고 있습니다(예: 페이지 콘텐츠 수정 권한이나 다운로드 시작 및 취소 권한 등). 브라우저는 이러한 권한을 강제 적용하며, 확장 프로그램이 권한 범위를 넘어서는 작업을 수행하지 못하도록 차단합니다. 이 방식으로, 확장 프로그램이 해킹당하더라도 이론상으로는 그 범위 밖의 프로세스나 파일에 피해를 입힐 수 없습니다.
브라우저 확장 프로그램을 공식 스토어 외부의 출처에서 설치하지 말라는 경고 메시지를 자주 접하게 됩니다. 이는 공식 스토어가 추가적인 보안 계층을 제공하기 때문입니다. 개발자가 확장 프로그램을 스토어에 제출하면 검토 과정이 진행됩니다. 이 과정에서 개발자는 확장 프로그램이 요청하는 모든 권한이 필요한 이유를 설명해야 합니다. 검토자가 코드를 검토한 결과, 확장 프로그램이 제공하는 기능에 비해 요청된 권한이 과도하다고 판단되면 해당 확장 프로그램은 스토어에서 거부될 수 있습니다. 그러나 검토 프로세스가 오류가 전혀 없는 것은 아닙니다. Chrome 스토어와 같은 인기 스토어에 등록된 확장 프로그램이 악성으로 변해 사용자의 데이터를 도용하거나 더 심각한 피해를 입힌 사례가 많습니다. 따라서 확장 프로그램을 설치하기 전에 항상 확장 프로그램의 권한을 검토하는 것이 매우 중요합니다.
마지막으로, 확장 프로그램과 보안에 대해 이야기할 때 Chrome의 확장 프로그램 플랫폼 신규 버전인 Manifest V3로의 전환을 언급하지 않을 수 없습니다. 저희가 이 주제에 대해 많은 글을 작성했으며, Ad-Filtering Dev Summit에서 이 주제에 대한 다양한 강연을 진행했습니다. 이는 브라우저 확장 프로그램에 미치는 영향이 심각하며, 광고 차단 확장 프로그램에는 두 배로 심각하기 때문입니다. 이 문제는 개발자들에게 많은 어려움을 초래했지만, Chrome 브라우저 확장 프로그램의 보안 강화 측면에서는 긍정적인 측면이 있습니다. 이 기능은 확장 프로그램이 원격으로 호스팅된 코드나 임의의 코드를 실행하는 능력을 제거하므로, 모든 코드가 검토를 거쳐야 합니다. 이 변경 사항은 보안 위험을 완전히 제거하지는 않더라도, 적어도 크게 줄일 것입니다.
다음 질문으로 넘어가겠습니다…
방화벽이란 무엇일까요?
이 질문은 모든 측면을 다 다루려면 책 한 권 분량이 될 수 있습니다. 하지만 핵심만 짚어보겠습니다. 먼저 왜 방화벽(firewall)이라는 이름이 붙었을까요?
원래 방화벽은 IT 용어가 아니었습니다. 건물 내부에서 불길이 번지는 것을 막기 위해 만든 두꺼운 벽을 뜻했습니다. 인터넷 이전에도 존재하던 개념이죠.
컴퓨터 네트워크에서의 방화벽은 1980년대 후반 처음 등장했습니다. 불길을 막듯이, 원치 않거나 위험할 수 있는 네트워크 트래픽의 확산을 막는 것이 목적이었습니다.
1세대 방화벽은 패킷 필터(packet filter) 였습니다. 인터넷을 오가는 작은 데이터 조각(패킷)을 검사하며, 송·수신 IP, 포트, 프로토콜에 기반해 미리 정의된 규칙으로 허용·차단을 결정했습니다.
1990년대 초에는 상태 기반(stateful) 방화벽이 등장했습니다. 상태 기반 방화벽은 개별 패킷만 검사하는 것이 아니라 연결 상태 전체를 추적할 수 있어, 특정 패킷이 기존에 승인된 세션의 일부인지 단순히 무작위로 들어온 요청인지를 구분할 수 있습니다.
이후 애플리케이션 계층 방화벽이 등장했습니다. 단순히 IP와 포트가 아니라 HTTP, DNS 같은 애플리케이션 프로토콜까지 이해하고 필터링할 수 있습니다. 2008년 이후에는 심층 패킷 검사(DPI) 기술이 도입되어 데이터 내용 자체까지 분석할 수 있게 되었습니다.