본문으로 건너뛰기
피드

웹페이지 하나가 허락 없이 브라우저에서 알아낼 수 있는 것들

security 약 8분

이 웹페이지는 사용자가 접속한 첫 순간 브라우저가 기본으로 넘겨주는 정보만으로 위치, 화면, 언어, GPU, 폰트, 배터리, 브라우저 지문 같은 단서를 얼마나 많이 만들 수 있는지 보여준다. 해킹이나 취약점이 아니라 표준 자바스크립트 API와 브라우저 동작만으로 가능한 일이라는 점이 핵심이다. 페이지는 일부 위험한 기법을 실행하지 않았다고 밝히지만, 다른 사이트는 같은 기능을 추적과 광고에 얼마든지 쓸 수 있다는 메시지를 던진다.

  • 1

    IP 주소, 브라우저 API, 폰트, 캔버스, 배터리, 화면 정보만으로 방문자를 상당히 구분 가능

  • 2

    캔버스 핑거프린팅은 2014년 프린스턴 연구에서 상위 10만 개 웹사이트 중 5퍼센트에서 관찰됨

  • 3

    배터리 API 조합은 2015년 연구에서 최대 30분 동안 쿠키 없이 방문자 추적 가능성을 보임

  • 4

    파비콘 요청을 이용해 사용자가 특정 서비스에 로그인했는지 감지하는 기법도 문서화돼 있음

  • 이 페이지의 메시지는 단순함. “당신이 허락하지 않아도 브라우저는 이미 꽤 많은 걸 말한다”임

    • 접속 직후 몇 밀리초 안에 브라우저가 넘겨준 정보만으로 페이지가 여러 관찰 결과를 구성함
    • 해킹, 취약점, 몰래 심은 악성코드가 아니라 표준 자바스크립트 API와 일반적인 브라우저 동작을 사용함
    • 글쓴이는 “모든 게 설계대로 작동한다. 문제는 그 설계다”라는 식으로 이 불편한 지점을 찌름
  • IP 주소만으로도 위치와 인터넷 제공자 단서를 만들 수 있음

    • 모든 요청의 헤더에는 IP 주소가 따라감
    • 페이지는 이를 ip-api.com에 보내 도시와 인터넷 제공자 이름으로 변환한다고 설명함
    • 화면에는 첫 옥텟과 마지막 옥텟만 보여주지만, 나머지 값을 알 수는 있었다고 적음
    • GDPR에서는 추적에 쓰이는 IP 주소가 개인정보로 간주될 수 있음
  • 브라우저 API는 생각보다 많은 장치 정보를 노출함

    • 화면, 브라우저, 언어, GPU, 코어 수, 배터리, 폰트, 사용자 선호 설정 같은 정보가 표준 API를 통해 관찰될 수 있음
    • 이 페이지는 모질라 문서에 공개된 일반 API를 사용한다고 밝힘
    • 즉 “위험한 사이트라서 특별히 당했다”가 아니라, 현대 브라우저가 제공하는 기능의 조합이 문제라는 얘기임
  • 폰트 핑거프린팅은 오래된 추적 신호임

    • 설치된 폰트 조합은 렌더링된 텍스트 폭을 측정해서 추정할 수 있음
    • 이 기법은 2010년부터 문서화돼 있음
    • EFF의 도구는 내 브라우저가 얼마나 고유한지 보여주는데, 많은 브라우저는 쿠키 없이도 웹 전반에서 추적될 만큼 충분히 독특함
    • 폰트 조합은 그중에서도 강한 신호 중 하나로 꼽힘

중요

> 프라이버시 리스크는 “쿠키를 막으면 끝”이 아님. 폰트, GPU, 화면, 언어, 시간대 같은 조합만으로도 사용자를 꽤 좁혀갈 수 있음.

  • 캔버스 핑거프린팅(canvas fingerprinting)은 더 노골적인 예시임

    • 2014년 프린스턴 연구가 실제 웹에서 캔버스 핑거프린팅을 처음 문서화함
    • 당시 상위 10만 개 웹사이트 중 5퍼센트에서 발견됐다고 함
    • 방식은 숨겨진 이미지를 브라우저에 그리게 하고, 렌더링된 픽셀을 다시 읽어 식별자로 쓰는 것임
    • 이 페이지는 해당 기법을 실행하지 않았지만, 방문자의 브라우저는 그 기능을 지원한다고 설명함
  • 클립보드 API도 “타이밍만 맞으면” 민감해질 수 있음

    • 클릭이나 탭 같은 사용자 제스처가 한 번 있으면 페이지가 마지막으로 복사한 내용을 읽도록 요청할 수 있음
    • 그 내용이 비밀번호, 주소, 메시지 초안일 수도 있음
    • 이 페이지는 요청하지 않았지만, 기능 자체는 현대 브라우저에 존재함
  • 배터리 정보도 한때 추적 신호가 됐음

    • 2015년 “The Leaking Battery” 연구는 배터리 퍼센트와 방전 시간 조합이 방문자를 최대 30분 동안 추적할 만큼 고유할 수 있음을 보였음
    • 쿠키도, 계정도 필요 없었다는 점이 포인트임
    • 파이어폭스는 2016년에 해당 API를 제거했지만, 크롬과 엣지는 여전히 노출한다고 글은 설명함
  • 실행하지 않았지만 더 찝찝한 기법도 소개됨. 파비콘으로 로그인 여부를 추정하는 방식임

    • 페이지가 여러 서비스의 파비콘 URL을 로드해보고 성공과 실패를 관찰함
    • 로그인 상태와 로그아웃 상태에서 다른 이미지가 돌아오면, 사용자가 특정 서비스에 로그인했는지 알 수 있음
    • 페이스북, 구글, X, 깃허브, 레딧, 링크드인 같은 서비스가 예시로 언급됨
    • 허가가 필요 없고, 문서화돼 있으며, 법적으로도 쓰일 수 있다는 점이 더 찜찜함

⚠️주의

> 브라우저에서 “권한 요청 팝업이 안 떴으니 안전하다”고 보기 어렵다. 권한 없이 가능한 관찰만으로도 추적 신호가 충분히 만들어질 수 있음.

  • 페이지는 방문자별 16줄짜리 바코드도 만든다고 설명함

    • GPU, 폰트, 화면 크기, 언어, 시간대, 운영체제, 브라우저, 색상 깊이 같은 값에서 16개의 선 높이를 계산함
    • 같은 데이터면 같은 바코드가 나오고, 다른 방문자면 다른 바코드가 나올 가능성이 높음
    • 계산은 브라우저 안에서만 일어나고 전송하지 않는다고 밝힘
  • 그래도 이 페이지는 “우리는 덜 했다”고 꽤 집요하게 밝힘

    • 런타임에 대규모 언어 모델(LLM)이 문장을 만들지 않고, 사람이 쓴 템플릿 중 조건에 맞는 문장을 고른다고 설명함
    • 서버로 보낸 이벤트는 도착과 완료, 총 2개뿐이라고 밝힘
    • 쿠키, 로컬스토리지, 세션스토리지, 인덱스드DB, 서비스워커 캐시는 쓰지 않는다고 함
    • 다만 호스팅 제공자의 기본 로그는 며칠 남을 수 있고, 이건 대부분의 사이트가 똑같이 가진 현실이라고 덧붙임
  • 프론트엔드와 보안 개발자에게 이 글이 주는 교훈은 꽤 실용적임

    • 기능 하나하나는 합리적이어도, 조합하면 강한 식별자가 될 수 있음
    • 사용자에게 친절한 기능과 사용자를 추적 가능한 대상으로 만드는 기능 사이의 경계가 생각보다 얇음
    • 브라우저 API를 설계하거나 사용하는 쪽 모두 “이 값이 단독으로 무해한가”가 아니라 “다른 값과 결합하면 어떤 신호가 되는가”를 봐야 함

기술 맥락

  • 이 글의 핵심 기술 선택은 공격 코드를 보여주는 게 아니라, 표준 브라우저 기능만으로 관찰 가능한 정보를 한 화면에 모은 거예요. 그래서 더 불편해요. 취약점을 패치하면 끝나는 문제가 아니라, 정상 동작의 조합이 추적 표면이 되거든요.

  • 브라우저 핑거프린팅이 강한 이유는 신호 하나하나는 평범하지만 조합하면 고유성이 커지기 때문이에요. 화면 크기, 폰트, GPU, 언어, 시간대는 각각은 흔한 값이어도, 전부 합치면 특정 사용자를 꽤 좁혀갈 수 있어요.

  • 캔버스나 폰트 측정이 자주 언급되는 이유는 렌더링 결과가 환경 차이를 은근히 많이 반영하기 때문이에요. 같은 자바스크립트와 같은 텍스트라도 운영체제, 그래픽 드라이버, 폰트 구성에 따라 결과가 조금씩 달라질 수 있거든요.

  • 클립보드나 배터리 API 사례는 웹 플랫폼 설계의 트레이드오프를 잘 보여줘요. 웹앱에는 편리한 기능이지만, 광고 추적이나 세션 연결에 쓰이면 사용자 입장에서는 동의하지 않은 식별 채널이 돼요.

  • 그래서 개발팀이 봐야 할 건 “우리가 쿠키를 쓰는가”만이 아니에요. 어떤 브라우저 API를 호출하는지, 그 값이 다른 분석 이벤트와 결합될 때 사용자를 재식별할 수 있는지까지 같이 봐야 해요.

이 글의 무서운 점은 “악성 코드가 대단한 걸 훔쳤다”가 아니라 “브라우저가 원래 이렇게 많이 말한다”는 데 있음. 프론트엔드와 보안 쪽 개발자라면 기능 편의성과 프라이버시 노출 사이의 선을 다시 보게 되는 글임.

댓글

댓글

댓글을 불러오는 중...

security

윈도우 11 BitLocker 우회 취약점 ‘YellowKey’ 공개, WinRE 경로가 문제로 지목됨

YellowKey라는 BitLocker 우회 취약점 공개 글이 올라왔고, 작성자는 Windows Recovery Environment에만 있는 특정 구성요소가 보호된 볼륨 접근을 허용한다고 주장한다. 공개 내용은 Windows 11과 Windows Server 2022/2025가 영향권이고 Windows 10은 제외된다고 설명하며, Microsoft 보안 조직과의 공개 조율도 언급한다.

security

해고 직후 정부 DB 96개 삭제 혐의, 내부자 접근권 회수의 무서운 사례

미국 정부 고객을 상대하던 IT 업체에서 해고된 쌍둥이 형제가 몇 분 뒤 정부 정보가 담긴 데이터베이스 96개를 삭제한 혐의를 받고 있다. 기사에는 이들이 이전에도 컴퓨터 범죄 전력이 있었고, 회사 네트워크에서 5,400개 계정 정보를 모아 Python 스크립트로 외부 서비스 로그인을 시도했다는 정황도 나온다.

security

EFF, 국경 전자기기 수색에도 영장이 필요하다고 제4순회항소법원에 주장

EFF와 ACLU 등은 미국 제4순회항소법원에 국경에서 휴대폰·노트북 같은 전자기기를 수색하려면 영장이 필요하다는 의견서를 냄. 사건은 Dulles 공항에서 미국 시민의 휴대폰이 영장 없이 수색된 뒤 형사 사건으로 이어진 사례이며, EFF는 수동 수색과 포렌식 수색 모두 같은 높은 기준을 적용해야 한다고 주장함.

security

안드로이드 17, 내 폰 OS가 진짜인지 직접 보여준다

구글이 안드로이드 17에 OS 검증 기능을 넣는다. 사용자는 기기가 공식 안드로이드 빌드를 돌리고 있는지, 부트로더 상태와 빌드 정보까지 확인할 수 있고, 구글 앱과 API의 정식 배포 여부를 검증하는 공개 원장도 제공된다.

security

마이크로소프트 취약점 공개전이 또 터짐, 이번엔 2건

익명의 공개자가 마이크로소프트 관련 취약점 2건을 추가로 공개했다고 주장했어. 구체적인 기술 분석은 본문에 거의 없지만, 패치 튜즈데이를 앞두고 더 큰 공개를 예고해 윈도우 보안 운영팀 입장에선 신경 써야 할 신호야.