크롬 브라우저 익스텐션 들여다 보면, 익스텐션이 브라우저의 접근하려는 range는 manifest.json에 선언되어 있다. 선언된 권한 중, 익스텐션이 역할에 맞는 작동을 위해 선언된 경우가 있는가 하면, 역할에 맞지 않는 수많은 권한들을 선언한 경우도 있다. 익스텐션 개발에서의 Security Requirements(보안 요구 사항) 준수는 개발자에게 달려 있으며, 이와 같이 익스텐션 역할에 맞지 않게 월권하는 행위는 PoLP에 어긋나게 된다.

레퍼런스 : Extending hand to attackers; Browser Privilege Escalation Attacks via Extensions

Over-permissioned

익스텐션 내부에서는 다양한 API를 사용하여 웹 상에서 특정 행동을 하게 하거나, 의도된 data flow를 만들어낸다. 하지만 API는 사용하지 않되 이와 관련된 권한만 선언하는 것은 의심해 볼 필요가 있는데, 악의를 품은 공격자가 선언된 권한을 악용하여 injection을 수행할 가능성이 있기 때문이다. 이를 Over-permissioned(과도하게 부과된 권한)라고 한다.

Booted Software

Booted Software란 사용자가 브라우저를 실행할 때 자동으로 활성화되는 익스텐션 또는 애플리케이션을 의미한다. 현재 진행 중인 연구 대상인 크롬 브라우저 익스텐션 또한 같은 맥락인데, 익스텐션은 백그라운드에서 지속적으로 실행되면서 특정 작업을 수행하기 때문이다.

Over-permissioned와 연결지어서, Booted Software인 익스텐션이 과도한 권한을 갖게 된다면 지속적인 감시 및 웹 조작이 가능하며, 악성 행위를 장기간 수행할 가능성이 높다. 따라서 익스텐션이 과도한 권한을 요구하는 경우, 실제 악용 가능성을 평가하는 것은 매우 중요하다.

Over-permissioned vs. Suspicious permissiones


Over-permissioned 익스텐션이 취약점을 탐지하는 맥락에서 분석에 중요하다면, 현재 연구에서는 Suspicious permissions를 판단하려고 한다. 쉽게 말해, 익스텐션의 역할과는 맞지 않는 권한이 선언되었을 때, 이를 의심스러운 익스텐션으로 간주하고, 본격적인 분석 단계로 넘겨 보려고 한다. 실제로 권한만 선언하고 API는 사용하지 않는 Over-permissioned와는 다른 느낌이다. 익스텐션의 역할과 권한을 매칭하고 의심스러운 정도를 파악하기 때문이다. Suspicious permissions를 가진 익스텐션을 판단하기 위해서는 manifest.json에 선언될 수 있는 권한 중, 웹에 접근하는 강력한 권한들을 다음의 표로 추려 보았다.

권한역할의심 이유
tabs브라우저의 모든 탭 정보 접근 및 조작사용자 방문 기록 추적, 피싱 공격 가능
webRequest모든 네트워크 요청 감시로그인 정보, 쿠키, API 키 탈취 가능
webRequestBlocking네트워크 요청 차단 및 수정악성 사이트 리다이렉트, 트래픽 조작 가능
clipboardRead클립보드 내용 읽기비밀번호, 신용카드 정보 탈취 가능
clipboardWrite클립보드 내용 변경암호화폐 주소 변경, 악성 코드 삽입 가능
nativeMessaging외부 애플리케이션과 통신로컬 시스템 파일 접근, 백도어 가능
proxy프록시 설정 변경 및 트래픽 조작MITM 공격 가능, 네트워크 조작 가능
debugger브라우저 및 웹페이지 디버깅세션 가로채기, 코드 주입 가능
downloads파일 다운로드 권한악성 파일 자동 다운로드 가능
management익스텐션 설치 및 삭제정상 확장 삭제, 악성 확장 설치 가능
history브라우징 기록 접근사용자의 검색 패턴 추적, 개인정보 노출 가능
cookies웹사이트 쿠키 읽기 및 변경세션 탈취, 계정 하이재킹 가능
bookmarks북마크 읽기 및 수정악성 사이트 북마크 삽입, 사용자 관심사 분석 가능

Analysis Workflow


Random Sampling

연구 과정에서 내려 받은 약 10만 개의 크롬 브라우저 익스텐션 row dataset이 존재한다. 모두 살펴보기에는 한계가 있지만, 이를 랜덤 샘플링 할 경우 대략적인 형식이나 개발자들의 익스텐션 권한 선언 방식을 파악할 수 있다고 판단했고, 10만 개의 익스텐션 zip파일을 대상으로 랜덤 샘플링을 수행하여 500개의 익스텐션을 랜덤하게 뽑아냈다.

Filtering

랜덤 샘플링을 마친 뒤에는 필터링을 해야 한다. 위 표에서 명시된 권한을 하나라도 가지고 있는 익스텐션은 총 500개 중 144개였다. 이를 통해 대략 30%의 익스텐션이 high-privilege를 가지는 것으로 판단했다. 하지만 이는 익스텐션 역할에 있어 실제 필요한 권한일 수도, 필요한 api를 사용하기 위한 권한일 수도 있다. 따라서 의심 권한을 실제 사용하는 여부를 판단하기 위해 익스텐션 정보와 매칭해보았다. 익스텐션의 정보는 Chrome Web Store API를 사용하여 파이썬의 BeautifulSoup 라이브러리를 통해 가져왔다.

Figure 1

익스텐션의 정보는 영어뿐만 아니라 다양한 언어로 Description 되어 있었다.

분석 아이디어는 다음과 같다: 이를 보다 더 분석에 용이하게 해결하기 위해 LLM을 사용하여 다양한 언어로 되어 있는 익스텐션의 Summary를 분석하여, 해당 익스텐션이 요청한 의심되는 고권한이 실제 사용 목적에 부합하는지를 판단한다

  • 익스텐션 Summary를 필요 시 영어로 번역
  • 요청된 권한(Permissions)이 Summary와 논리적으로 연관이 있는지 판단

LLM을 사용한 분석은 다음 차례의 과제로 남겨두도록 하겠다.