# LinkedIn이 브라우저 확장 프로그램을 스캔 중

> Clean Markdown view of GeekNews topic #29080. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=29080](https://news.hada.io/topic?id=29080)
- GeekNews Markdown: [https://news.hada.io/topic/29080.md](https://news.hada.io/topic/29080.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-05-02T03:34:40+09:00
- Updated: 2026-05-02T03:34:40+09:00
- Original source: [404privacy.com](https://404privacy.com/blog/linkedin-is-scanning-your-browser-extensions-this-is-how-they-use-the-data/)
- Points: 1
- Comments: 1

## Topic Body

- **LinkedIn**은 Chrome에서 `chrome-extension://` URL 요청을 보내 특정 확장 프로그램 설치 여부를 확인하며, 설치되지 않은 항목은 개발자 도구 콘솔에 요청 실패 오류로 남음
- [browsergate.eu](https://browsergate.eu/?ref=cms.hondas.net) 기록과 [GitHub 추적 저장소](https://github.com/dandrews/nefarious-linkedin?ref=cms.hondas.net)에 따르면 스캔은 최소 2017년부터 이어졌고, 대상 목록은 **38개**에서 2026년 4월 기준 **6,278개**로 늘어남
- LinkedIn은 이미 사용자의 **이름·고용주·직책·경력·위치**를 보유하므로, 확장 프로그램 스캔은 익명 기기 지문이 아니라 검증된 직업적 신원에 소프트웨어 목록을 덧붙이는 방식이 됨
- 스캔은 LinkedIn의 **APFC** 기기 지문 채취 시스템 일부이며, canvas fingerprint, WebGL, 오디오 동작, 폰트, 화면 정보, 기기 메모리, WebRTC 로컬 IP 등 **48개** 브라우저·기기 특성과 함께 프로필을 구성함
- 탐지 결과는 `AedEvent`와 `SpectroscopyEvent`로 패키징돼 RSA 공개키로 암호화된 뒤 LinkedIn의 `li/track` 엔드포인트로 전송되며, browsergate.eu는 이 방식이 EU Digital Markets Act 위반에 해당한다고 보고 형사 수사가 열렸다고 밝힘

---

### 개인 식별 프로필에 붙는 소프트웨어 목록
- 일반적인 지문 채취는 익명 방문자의 브라우저를 쿠키 없이 다시 인식하기 위한 방식으로 다뤄짐
- 이 경우 프로필은 기기 수준에서 식별될 수 있지만 반드시 개인 신원과 연결되지는 않음
- LinkedIn은 익명 방문자가 아니라 사용자의 **이름, 고용주, 직책, 경력, 급여 범위, 전문 네트워크, 위치**를 이미 보유함
- LinkedIn의 확장 프로그램 스캔은 알 수 없는 방문자의 기기 프로필을 만드는 것이 아니라, 이미 검증된 직업적 신원에 상세한 소프트웨어 목록을 덧붙이는 방식이 됨
- LinkedIn의 스캔 목록에는 수백 개의 구직 관련 확장 프로그램이 포함되어 있어, 사용자가 고용주에게 알리기 전에 조용히 구직 중인지 파악할 수 있음
- 정치 콘텐츠, 종교적 실천, 장애 보조, 신경다양성과 관련된 확장 프로그램도 목록에 포함되어 있어 브라우저 소프트웨어가 개인 생활을 추론하는 근거가 될 수 있음
- LinkedIn은 사용자의 직장을 알고 있기 때문에, 한 직원의 스캔 결과는 개인뿐 아니라 그 조직의 내부 도구, 보안 제품, 경쟁사 구독, 업무 흐름을 파악하는 데 기여할 수 있음
- LinkedIn의 [privacy policy](https://www.linkedin.com/legal/privacy-policy?ref=cms.hondas.net)에는 확장 프로그램 스캔이 공개되어 있지 않으며, 사용자는 동의를 요청받거나 고지받지 않음

### LinkedIn을 넘어서는 문제
- ## 단속과 선례
  - LinkedIn은 확장 프로그램 목록을 사용해 특정 확장 프로그램을 설치한 사용자에 대해 추론하고 단속 조치를 취함
  - browsergate에 따르면 Milinda Lakkam은 선서하에 “LinkedIn took action against users who had specific extensions installed.”라고 확인함
  - 사용자는 자신의 소프트웨어가 목록화되고 있다는 사실, 그 목록이 자신에게 불리하게 쓰인다는 사실, 그리고 LinkedIn 개인정보 처리방침에 나타나지 않는다는 사실을 알 방법이 없음
- ## 지문 채취 생태계
  - 브라우저 지문 채취는 보통 한 사이트가 신호를 수집해 프로필을 만들고 세션 간 사용자를 인식하는 문제로 다뤄짐
  - LinkedIn의 확장 프로그램 스캔은 검증된 신원에 연결된 상세 소프트웨어 목록을 생성하며, 그 프로필은 LinkedIn 내부에 머물 필요가 없음
  - LinkedIn이 제3자 행동 데이터셋을 구매하고 그 안에 사용자의 지문이 있으면, LinkedIn은 이를 이미 보유한 사용자 정보에 덧붙일 수 있음
  - LinkedIn 외부의 탐색 행동, 구매 이력, 위치 패턴, 관심사가 LinkedIn 계정과 연결된 프로필 일부가 될 수 있음
  - 반대로 LinkedIn은 모든 페이지 방문에서 로드되는 Google의 reCAPTCHA enterprise를 포함해 제3자 스크립트를 통합하며, 플랫폼 사이로 데이터가 흐름
  - LinkedIn이 검증된 신원과 연결한 지문은 linkedin.com 밖의 광고·추적 시스템에도 영향을 줄 수 있음
  - LinkedIn에 한 번 로그인하면 그 방문에서 만들어진 지문이 웹 전반에서 따라다닐 수 있음
- ## 실제 위협이 되는 사용자군
  - 기자, 변호사, 연구자, 인권 조사관에게 LinkedIn 프로필은 온라인에서 가장 상세한 검증 신원 문서 중 하나가 될 수 있음
  - LinkedIn 프로필은 실명으로 전문 목적을 위해 의도적으로 구축된 정보임
  - 확장 프로그램 스캔은 그 프로필에 개인정보 보호 도구, 보안 확장, 조사 도구, 생산성 앱 설치 기록을 사용자의 인지 없이 연결함
  - LinkedIn과 Chrome을 사용하면 이 수집이 현재 발생하고 있음

### APFC와 고급 JavaScript 지문 채취
- 확장 프로그램 스캔은 단독 기능이 아니라 LinkedIn이 내부적으로 **APFC**라고 부르는 더 넓은 기기 지문 채취 시스템의 일부임
- APFC는 Anti-fraud Platform Features Collection의 약자이며, 내부적으로 DNA, Device Network Analysis라고도 불림
- LinkedIn은 이런 추적 방식에 대해 확장 프로그램 스캔보다 더 공개적인 편이지만, 이 방식들은 상용 웹사이트에 흔히 포함됨
- 이 시스템은 방문마다 **48개의 브라우저·기기 특성**을 수집함
- 수집 항목에는 canvas fingerprint, WebGL 렌더러와 파라미터, 오디오 처리 동작, 설치된 폰트, 화면 해상도, 픽셀 비율, 하드웨어 동시성, 기기 메모리, 배터리 수준, WebRTC를 통한 로컬 IP 주소, 시간대, 언어 등이 포함됨
- 확장 프로그램 스캔은 더 큰 프로필을 구성하는 입력 중 하나임

### 기술적으로 일어나는 일
- LinkedIn의 코드는 Chrome에 설치된 특정 파일을 찾기 위해 `chrome-extension://` URL로 `fetch()` 요청을 보냄
- 확장 프로그램이 설치되어 있지 않으면 Chrome이 요청을 차단하고 실패를 로그에 남김
- 확장 프로그램이 설치되어 있으면 요청은 조용히 성공하고 LinkedIn은 이를 기록함
- 확인된 환경에서 스캔은 약 **15분** 동안 실행됐고, 6,000개가 넘는 확장 프로그램을 검색함
- 사용자는 Chrome에서 LinkedIn을 열고 개발자 도구의 콘솔 탭을 보면 이를 직접 확인할 수 있음
- 콘솔의 빨간 오류는 각각 사용자의 지문 일부에 해당함

### 코드 구조와 탐지 방식
- LinkedIn은 모든 Chrome 방문자의 브라우저에서 JavaScript 코드를 실행하며, 확장 프로그램 스캔을 담당하는 시스템은 그 안에 있음
- 해당 파일은 약 **1.6MB** 크기의 축소되고 일부 난독화된 JavaScript 파일임
- 일반적인 축소는 성능을 위해 코드를 압축하는 작업이지만, 난독화는 코드를 읽고 이해하기 어렵게 만드는 별도 단계임
- LinkedIn은 확장 프로그램 스캔 시스템이 들어 있는 정확한 모듈을 난독화하고, 수천 줄짜리 JavaScript 파일 안에 묻어둠
- 파일 안에는 브라우저 확장 프로그램 ID의 하드코딩 배열이 있음
- 2026년 2월 기준 이 배열에는 **6,278개** 항목이 들어 있었음
- 각 항목은 Chrome Web Store 확장 프로그램 ID와 그 확장 패키지 내부의 특정 파일 경로라는 두 필드를 가짐
- 파일 경로는 우연한 값이 아니라, Chrome 확장 프로그램이 `web_accessible_resources` 필드를 통해 내부 파일을 웹페이지에 노출할 수 있기 때문에 필요함
- 확장 프로그램이 설치되어 있고 특정 파일을 접근 가능하게 선언했다면 `chrome-extension://{id}/{file}`로 보내는 `fetch()` 요청이 성공함
- 설치되어 있지 않으면 Chrome이 요청을 차단함
- LinkedIn은 목록의 6,278개 확장 프로그램 각각에 대해 특정 접근 가능 파일을 식별하고 직접 탐지함
- 목록은 계속 유지·확장되고 있으며, Chrome Web Store 확장 패키지를 크롤링하고 각 매니페스트에서 웹 접근 가능 리소스를 파싱해 탐지 대상을 추가하는 도구가 있었던 것으로 보임

### 두 가지 스캔 모드와 Spectroscopy
- 확장 프로그램 스캔은 두 가지 모드로 동작함
- 첫 번째 모드는 `Promise.allSettled()`를 사용해 모든 요청을 동시에 보내며, 전체 확장 프로그램을 병렬로 탐지함
- 두 번째 모드는 각 요청 사이에 설정 가능한 지연을 두고 순차적으로 요청을 보내 네트워크 활동을 시간에 걸쳐 분산시키며, 모니터링 도구에서 덜 눈에 띄게 만듦
- LinkedIn은 내부 기능 플래그를 사용해 두 모드 사이를 전환할 수 있음
- 스캔은 `requestIdleCallback`으로 지연될 수도 있으며, 브라우저가 유휴 상태일 때 실행되어 사용자가 성능 영향을 보지 못하게 함
- **Spectroscopy**라는 두 번째 탐지 시스템은 확장 프로그램 목록과 독립적으로 동작함
- Spectroscopy는 전체 DOM 트리를 훑으며 모든 텍스트 노드와 요소 속성에서 `chrome-extension://` URL 참조를 검사함
- 이 방식은 LinkedIn의 하드코딩 목록에 없더라도 페이지를 수정하는 확장 프로그램을 잡아낼 수 있음
- 두 시스템을 합치면 설치된 확장 프로그램과 실제로 페이지와 상호작용하는 확장 프로그램을 함께 포괄함

### 텔레메트리 전송
- 두 탐지 시스템은 같은 텔레메트리 파이프라인으로 결과를 보냄
- 탐지된 확장 프로그램 ID는 `AedEvent`와 `SpectroscopyEvent` 객체로 패키징됨
- 이 객체들은 RSA 공개키로 암호화되어 LinkedIn의 `li/track` 엔드포인트로 전송됨
- 암호화된 지문은 이후 세션 중 발생하는 모든 API 요청의 HTTP 헤더에 삽입됨
- LinkedIn은 방문 기간 동안 사용자가 취하는 모든 행동과 함께 이 값을 받음

### 법적 맥락
- [browsergate.eu](https://browsergate.eu/?ref=cms.hondas.net)는 관련 법적 논리를 상세히 정리함
- 2024년 Microsoft는 EU Digital Markets Act에 따라 게이트키퍼로 지정됐고, LinkedIn은 규제 대상 제품 중 하나임
- DMA는 게이트키퍼가 제3자 도구의 사용자 데이터 접근을 허용하도록 요구하고, 해당 도구 사용자에 대한 조치를 금지함
- browsergate.eu는 LinkedIn이 제3자 도구 사용자를 체계적으로 단속하고 이를 식별하기 위해 은밀한 확장 프로그램 스캔을 사용한 점이 해당 규정 위반에 해당한다고 봄
- 이 주장이 법적으로 받아들여질지는 법적 판단의 문제임
- Bavarian Central Cybercrime Prosecution Office in Bamberg의 Cybercrime Unit은 형사 수사가 열렸다고 확인함
- 이 기관은 관할권을 넘나드는 중대 사이버 범죄 사건을 다룸
- browsergate.eu는 형사 수사를 확인하고 사건 번호를 제공했으며, 전체 법원 문서를 공개 준비 중이라고 밝힘

## Comments



### Comment 56665

- Author: neo
- Created: 2026-05-02T03:34:42+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47967262) 
- “형사 수사가 시작됐다는 건 의문의 여지가 없다.” 좋다. 이런 회사들은 **돌팔매를 맞아도 싸고**, 그보다 더한 것도 감수해야 함
  - 정말 필요한 건 이 일이 애초에 **누구 아이디어였는지** 밝혀내는 것임  
    웹사이트를 평균 이하로 망치지 않겠다는 팀이라면, 알려진 **서비스 악화 주도자들** 명단으로 지원자를 걸러낼 수 있어야 함  
    이미 싹을 자르기엔 늦었을 수 있지만, 이런 개인들이 계속 아무 제약 없이 활동하고 더 커지도록 둘 이유는 없음

- “그다음 mastodon에서 browsergate 얘기가 터진 걸 보고 ‘설마’ 했는데, 실제로 소송이 준비 중이었다.” - un-nf  
  Farrell v LinkedIn Corporation 4:26-cv-02953-KAW (N.D. Cal. Apr. 6, 2026)  
  [https://ia601503.us.archive.org/33/items/gov.uscourts.cand.4...](<https://ia601503.us.archive.org/33/items/gov.uscourts.cand.467271/gov.uscourts.cand.467271.1.0.pdf>)

- 왜 내 **Chrome**이 내가 설치한 확장 프로그램 목록을 아무 웹사이트에 알려주는 거지?
  - 정확히는 그대로 알려주는 건 아님. 확장 프로그램의 **ID**와 그 확장 안에 존재한다고 알려진 파일 목록을 만들고, 사이트가 각 쌍을 순회하면서 그 파일을 불러오려 시도함  
    오류가 나지 않으면 해당 확장 프로그램이 설치됐다는 걸 알 수 있음. 영리하고 손이 많이 가는 방식이지만, 이런 일을 막으려는 보안 장치를 우회함  
    이걸 쓰는 이유는 약관을 우회하는 알려진 **스크래퍼 확장 프로그램** 사용자를 차단하기 위해서라고 읽었지만, 완전히 납득되진 않음
  - 원문에서 관련된 부분은 이거임:  
    “Chrome 확장 프로그램은 manifest.json의 web_accessible_resources 필드를 통해 내부 파일을 웹페이지에 노출할 수 있다. 확장 프로그램이 설치되어 있고 리소스를 노출했다면 chrome-extension://{id}/{file}로 fetch() 요청이 성공한다. 설치되어 있지 않으면 Chrome이 요청을 막고 promise가 reject된다.  
    LinkedIn은 목록의 모든 확장 프로그램을 이런 방식으로 테스트한다.”
  - 웹브라우저가 수십 년 동안 저질러 온 끔찍한 **보안 실수들**에 대해서도 같은 질문을 할 수 있음
  - 그 정보가 웹사이트에 제공되는 건가? 특정 확장 프로그램이 설치됐을 때만 나타나는 동작을 이용해 스스로 감지하는 식의 새로운 해킹을 하는 줄 알았음  
    하지만 **6,300개 확장 프로그램**에 대해 그렇게 하려면 일이 너무 많음. 혹시 이걸 서비스로 제공하는 곳이 있나?
  - **Brave**는 이걸 명시적으로 차단함

- 친구들, 직장에서 이런 걸 구현하라는 요청을 받으면 무엇을 택할 건가: 반대하고 버티다가 직장을 잃을 것인가, 아니면 따르고 직장을 지킬 것인가  
  실무자로서 **텔레메트리와 감시**의 경계는 어디에 그어야 하나?
  - LinkedIn, Meta, 또는 사우디나 이스라엘 자금을 받는 곳에서는 일하지 않는 쪽을 택함. 일자리 찾기는 조금 더 어려워지지만, 밤에 더 편히 잠
  - 세 번째 선택지도 있음. 하겠다고 해놓고 일부러 못 하거나, 끝없이 질질 끄는 것임. 의도적으로 일을 망쳤다는 걸 증명하기는 어려움  
    다만 그런 게임을 하고 있다면, 새 직장을 찾을 때일 수도 있음 ;)
  - 익명으로 세상에 **무슨 일이 벌어질지 알리는 것**도 선택지라고 봄. 그러면 직장은 유지하면서도 사람들이 최소한 알게 됨  
    단, 그 사실을 아는 사람이 세 명쯤뿐이라면 바로 누군지 들킬 수 있음
  - 나도 같은 생각을 함. 쉽게 다른 직장을 찾기 어렵고, 의료보험이나 금전적 이유로 그 일이 필요한 사람들이 만든 걸지도 모름. 월급으로 간신히 버티는 상황일 수도 있고  
    비슷한 처지의 관리자들이 지시하고, 그 위 관리자는 매출 증가만 보고 방법은 신경 쓰지 않는 구조일 수도 있음. 그래도 어딘가에서는 “우리가 지금 뭘 하고 있는 거지?”라고 말하는 사람이 있어야 할 것 같은데, 이상함  
    질문에 답하자면 물론 반대할 것임. 지금은 심각한 대가 없이 그런 선택을 할 수 있을 만큼 운이 좋은 상태임. 그런데 누가 HN에 나와서 “네, 전 도덕심이 없습니다!”라고 말하겠나? 버너 계정이라도 실제인지 알 수 없을 텐데
  - 솔직히 나라면 구현할 것 같음. 모든 웹사이트에 설치된 확장 프로그램을 알려주는 건 **Chrome 책임**임. 어쨌든 사용자에게 피해가 가는 것도 아니고

- 원문에서 내가 찾은 가장 관련 있는 부분은 이거임:  
  “Chrome 확장 프로그램은 manifest.json의 web_accessible_resources 필드를 통해 내부 파일을 웹페이지에 노출할 수 있다. 확장 프로그램이 설치되어 있고 리소스를 노출했다면 chrome-extension://{id}/{file}로 fetch() 요청이 성공한다. 설치되어 있지 않으면 Chrome이 요청을 막고 promise가 reject된다.  
  LinkedIn은 목록의 모든 확장 프로그램을 이런 방식으로 테스트한다.”
  - 그렇다면 이런 질의에 무작위로 예/아니오를 반환하는 식으로 **가짜 설치된 확장 프로그램**을 만들 수 있나? LinkedIn이나 다른 지문 추적 사이트들이 어떤 파일을 테스트하는지는 꽤 명확하고, 원글 작성자가 말하듯 관찰할 수 있음  
    같은 파일들을 테스트하는 다른 사이트가 어디인지 보는 것도 흥미로울 텐데, 이미 누가 살펴봤나?
  - 사이트에서 온 코드가, 확장 프로그램에서 온 코드도 아닌데, 거기에 접근할 수 있게 두면 안 될 것 같음

- 이건 **기기 지문 추적**에서 꽤 표준적인 관행임. LinkedIn은 아마 스크래핑 등으로부터 플랫폼을 보호하려고 이걸 쓰는 것 같고, 확장 프로그램 목록은 사용자를 식별하고 지문의 유용한 구성 요소가 될 만큼 충분한 엔트로피를 가짐
  - 스크래핑을 돕는 확장 프로그램을 한 번에 만들어 쓰는 건 이미 꽤 쉽고, LinkedIn이 막을 수 있는 게 별로 없음  
    사람들이 며칠 만에 로컬 Chrome 확장 프로그램을 만들고 설치한 뒤, AI가 개발자 도구에 주입돼 거의 아무 웹사이트나 스크랩하게 만드는 걸 봤음. 그것도 몇 달 전 일임  
    이제 그런 걸 쉽게 방어할 방법은 없다고 봄. 이런 **방어적 프로그래밍** 조치가 쓸모없어지는 건 시간문제임

- 이거 **환각**인가? 이 인용문을 다른 곳에서는 찾을 수 없음  
  “browsergate에 따르면 Milinda Lakkam은 선서하에 ‘LinkedIn은 특정 확장 프로그램을 설치한 사용자에게 조치를 취했다’고 확인했다.”
  - 어느 정도는 맞지만, 실제 인용문은 아님. 이 링크보다 더 거슬러 올라가 보진 않았음:  
    [https://browsergate.eu/the-evidence-pack/](<https://browsergate.eu/the-evidence-pack/>)  
    LinkedIn 시스템은 “[XXXXXX]가 설치된 LinkedIn 사용자에게 조치를 취했을 수 있다.”  
    수정: 좋네! 들여쓰기된 텍스트가 이제 모바일 브라우저에서도 줄바꿈되는 걸 방금 봄. 적어도 ffm에서는 그렇다. 언제 고쳐진 건지 궁금함

- 공정하게 말하면, LinkedIn의 **개인정보 처리방침**에는 이 정보를 수집한다고 명시돼 있음. [https://www.linkedin.com/legal/privacy-policy?ref=cms.hondas...](<https://www.linkedin.com/legal/privacy-policy?ref=cms.hondas.net#your-device-and-location>) 참고  
  “1.5 기기와 위치  
  귀하가 당사 서비스를 방문하거나 떠날 때(일부 플러그인 및 타 사이트의 당사 쿠키 또는 유사 기술 포함), 당사는 귀하가 온 사이트와 이동한 사이트의 URL 및 방문 시간을 받습니다. 또한 귀하의 네트워크와 기기 정보(예: IP 주소, 프록시 서버, 운영체제, 웹브라우저와 추가 기능, 기기 식별자와 기능, 쿠키 ID 및/또는 ISP, 또는 이동통신사)를 받습니다. 모바일 기기에서 당사 서비스를 사용하는 경우, 휴대전화 설정에 따라 해당 기기는 위치 데이터를 당사에 보냅니다. GPS 또는 기타 도구로 정확한 위치를 식별하기 전에 옵트인을 요청합니다.”  
  여기서 관련 있는 부분은 “**일부 플러그인 포함**”임

- LinkedIn 계정을 삭제했고, 이제 삶이 더 나아짐
  - 현재 직장이 있는 사람이라서 할 수 있는 큰소리임. **LinkedIn 계정 없이 구직**하는 건 그렇게 간단하지 않음
