웹페이지가 요청하지 않았는데도 브라우저가 알려준 모든 것을 보여줌

9 hours ago 4
  • 이 페이지는 방문 직후 첫 밀리초 동안 브라우저가 넘긴 데이터만으로 위치, 기기, 브라우저, 언어, GPU, 배터리, 폰트, 사용자 선호 등을 보여주며, 익스플로잇이나 해킹 없이 공개 문서화된 표준 기능만 사용함
  • 모든 요청 헤더의 IP 주소ip-api.com · Free tier · CC-BY-SA에 보내 도시와 인터넷 제공자 이름으로 바꾸며, 조회는 저장하지 않고 화면에는 일부 옥텟만 표시하지만 나머지도 알 수 있다고 명시함
  • 폰트 지문은 렌더링된 텍스트 너비로 설치 폰트를 감지하고, Electronic Frontier Foundation · Cover Your Tracks는 브라우저 고유성을 확인하는 도구를 제공하며, 2014년 Princeton 연구는 상위 100,000개 웹사이트의 5%에서 캔버스 지문을 발견함
  • 페이지에서 실행하지는 않았지만, 단일 사용자 제스처로 마지막 복사 내용 읽기를 요청할 수 있는 Clipboard API, 배터리 잔량과 방전 시간으로 최대 30분 추적 가능성을 보인 “The Leaking Battery”, favicon으로 로그인 사이트를 감지하는 기법이 존재함
  • 서버로 보낸 것은 도착완료 두 개의 익명 이벤트뿐이고 cookies, localStorage, sessionStorage, IndexedDB, 서비스 워커 캐시에 아무것도 저장하지 않으며, 탭을 닫으면 방문자를 잊는다고 명시함

브라우저가 도착 직후 넘긴 정보

  • taken. 의 모든 관찰은 방문 직후 첫 밀리초 동안 방문자의 브라우저에서 나온 데이터이며, 익스플로잇·취약점·해킹 없이 공개 문서화된 표준 기능만 사용함
  • 위치

    • 모든 요청 헤더에 포함되는 IP 주소ip-api.com · Free tier · CC-BY-SA에 보내 도시와 인터넷 제공자 이름으로 변환함
    • 조회는 일시적이며 양쪽 모두 저장하지 않고, 화면에는 IP의 첫 번째와 마지막 옥텟만 표시하지만 나머지도 알 수 있다고 명시함
    • GDPR에서는 추적에 쓰일 때 IP 주소가 개인정보로 간주될 수 있으며, taken.은 추적·보관·로그를 하지 않음
  • 브라우저 API

    • 화면, 브라우저, 언어, GPU, 코어 수, 배터리, 폰트, 사용자 선호 같은 기기 관찰값은 MDN Web Docs · Mozilla · CC-BY-SA 2.5에 공개 문서화된 표준 JavaScript API로 가져옴
    • 브라우저 설계대로 가능한 동작이며, “설계가 문제”라는 결론으로 이어짐
  • 폰트와 캔버스 지문

    • 설치된 폰트를 렌더링된 텍스트 너비로 감지하는 폰트 지문 기법은 2010년부터 문서화됐고, Electronic Frontier Foundation · Cover Your Tracks는 브라우저가 얼마나 고유한지 확인하는 도구를 제공함
    • 대부분의 브라우저는 쿠키 없이도 오픈 웹에서 추적될 만큼 고유하며, 폰트 조합은 가장 강한 신호 중 하나임
    • Princeton University · Web Transparency & Accountability Project의 2014년 연구는 캔버스 지문을 실제 웹에서 처음 문서화했고, 상위 100,000개 웹사이트의 5%에서 발견함
    • 캔버스 지문은 방문자 브라우저에 숨은 이미지를 그리게 한 뒤 렌더링 픽셀을 식별자로 다시 읽는 방식이며, taken.은 그 기법을 실행하지 않았지만 브라우저는 지원함
  • 클립보드와 배터리

    • MDN · Clipboard API specification에 따르면 클릭이나 탭 같은 단일 사용자 제스처로 페이지가 마지막으로 복사한 내용 읽기를 요청할 수 있음
    • 마지막 복사 내용은 비밀번호, 주소, 초안 메시지일 수 있으며, taken.은 요청하지 않았지만 기능 자체는 최신 브라우저에 존재함
    • Olejnik, Englehardt, Narayanan의 2015년 논문 “The Leaking Battery”는 배터리 잔량과 방전 시간 조합만으로 쿠키나 계정 없이 최대 30분 동안 여러 웹사이트에서 방문자를 추적할 수 있음을 보였음
    • Firefox는 2016년에 해당 API를 제거했지만 Chrome과 Edge는 여전히 노출함

실행하지 않은 기법과 남기지 않은 데이터

  • 로그인 사이트 감지

    • taken.은 실행하지 않았지만, 브라우저에 특정 서비스의 favicon URL을 로드하게 하고 성공·실패를 관찰해 어느 사이트에 로그인했는지 감지하는 기법이 문서화돼 있고 합법적이며 널리 배포돼 있음
    • 로그인 상태와 로그아웃 상태에서 다른 이미지를 반환하는 차이를 이용하며, 허가 없이 Facebook, Google, X, GitHub, Reddit, LinkedIn 등 여러 서비스 로그인 여부를 알 수 있음
  • 브라우저 안에서 계산한 바코드

    • 카운트 아래에 표시되는 16개 선은 GPU, 폰트, 화면 크기, 언어, 시간대, 운영체제, 브라우저, 색상 깊이에서 파생된 높이로 구성됨
    • 같은 데이터는 같은 바코드를 만들고, 다른 방문자는 다른 바코드를 보게 되며, 계산은 브라우저 안에서만 일어나고 전송되지 않음
    • 정확히 같은 지문을 가진 사람이 있으면 같은 바를 보겠지만 그 가능성은 작음
  • 문장 생성 방식

    • 모든 문장은 Matt가 직접 썼고, 실행 시점에 언어 모델이 문장을 쓰거나 고치지 않음
    • 코드는 브라우저가 반환한 값에 따라 미리 작성된 문장 템플릿 중 하나를 고르며, 사람이 쓴 문장으로 다룰 수 없는 조건이면 아무 말도 하지 않도록 만들어짐
  • 서버로 보낸 것

    • 서버로 보낸 이벤트는 도착완료 두 개의 익명 이벤트뿐이며, 쿠키·식별자·보관된 IP는 없음
    • 서버는 각 요청의 본문을 버리고 아무것도 반환하지 않으며, 요청이 있었다는 전송 계층 기록은 호스팅 제공자의 기본 보관 기간인 보통 며칠 동안 로그에 남을 수 있음
    • 대부분의 사이트는 광고업체, 지문 수집기, 세션 재생 도구, 태그 관리자에 수백 개의 추가 비컨을 보내지만, taken.은 자체 서버로 두 개만 보내고 그 사실을 알림
  • 기기에 저장한 것

    • cookies, localStorage, sessionStorage, IndexedDB, 서비스 워커 캐시에 아무것도 저장하지 않음
    • 화면에 보인 데이터는 브라우저 안에서 계산됐고, IP 지리 위치 조회와 두 개의 익명 이벤트를 제외하면 기기를 떠나지 않음
    • 탭을 닫으면 taken.은 방문자를 잊으며, 소스 공개와 함께 “대부분의 페이지는 그렇게 말할 수 없다”고 마무리함
  • 시리즈 맥락과 제작

    • Vol. I은 방문자가 머무는 동안 세계에서 일어난 일, Vol. II는 놓친 하늘, Vol. III는 발밑에 이미 있던 것, Vol. IV는 방문자 자신으로 점점 좁혀지는 구성을 가짐
    • 페이지는 MattRise Up Labs에서 만들었고, 이후 에디션은 XBluesky에 올라올 예정임
Read Entire Article