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

1 week ago 12
  • LinkedIn은 Chrome에서 chrome-extension:// URL 요청을 보내 특정 확장 프로그램 설치 여부를 확인하며, 설치되지 않은 항목은 개발자 도구 콘솔에 요청 실패 오류로 남음
  • browsergate.eu 기록과 GitHub 추적 저장소에 따르면 스캔은 최소 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에는 확장 프로그램 스캔이 공개되어 있지 않으며, 사용자는 동의를 요청받거나 고지받지 않음

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