Firefox·Tor 프라이버시 기대를 깨뜨린 IndexedDB fingerprint, HN이 주목한 이유

왜 HN이 이 버그를 크게 봤나

이 글이 HN에서 강하게 반응을 얻은 이유는 private browsing과 Tor 사용자가 가장 믿고 싶은 경계를 건드렸기 때문이다. 크롤링 시점 스레드는 906점, 279개 댓글이었고, 반응의 요지는 “또 하나의 브라우저 버그”가 아니었다. 쿠키도 없고 로그인도 없어 보이는 상황에서, 브라우저 구현 세부사항 하나만으로 세션을 이어 붙일 수 있다면 프라이버시 모델 자체가 흔들린다는 것이다. 그래서 댓글도 Tor Browser의 New Identity에 집중됐다. 사용자는 거기서 확실한 끊김을 기대하는데, 브라우저 프로세스가 살아 있는 동안 식별자가 이어진다면 그 기대가 무너진다.

기술적으로 무엇이 새어 나갔나

Fingerprint.com 글에 따르면 문제는 indexedDB.databases()가 돌려주는 결과의 순서였다. Firefox 계열 브라우저는 private context에서 데이터베이스 이름을 UUID 기반 파일명으로 매핑하는 전역 해시 테이블을 쓰고, 이후 메타데이터를 모을 때 그 내부 구조를 정렬 없이 순회했다. 그 결과 반환 순서가 origin별 중립값이 아니라, 브라우저 프로세스 차원의 안정된 상태를 반영하는 fingerprint처럼 동작했다. 연구진은 고정된 이름 16개만 제어해도 이론상 약 44비트 규모의 식별 공간이 만들어진다고 설명한다. 핵심은 값 자체보다, 서로 다른 사이트가 같은 실행 중 브라우저에서 같은 순서를 본다는 점이다.

수정과 커뮤니티의 해석

글은 Mozilla가 이를 Firefox 150, ESR 140.10.0에서 수정했고, 내부 저장 순서를 노출하지 않도록 결과를 canonical sort하면 문제가 사라진다고 적는다. HN에서는 이 점이 오히려 더 무섭게 읽혔다. 수정 원리는 단순한데, 그만큼 사소한 구현 디테일이 프라이버시 경계를 깨뜨릴 수 있다는 뜻이기 때문이다. 상위 댓글 중 하나는 글이 지나치게 제품 홍보로 흐르지 않고 메커니즘과 수정 포인트를 명확히 적어 준 점을 높게 평가했다. 또 다른 댓글은 중요한 구분을 덧붙였다. Tor에서의 fingerprinting은 곧바로 deanonymization과 같지는 않지만, 그래도 충분히 위험하다. Tor의 목적 자체가 세션 간 linkability를 줄이는 데 있기 때문이다.

왜 중요한가

실무적으로 남는 결론은 명확하다. 패치 이전 환경에서는 private window를 닫는 것만으로 충분하지 않을 수 있고, Tor Browser도 세션 끝에 완전히 종료해야 한다는 보수적 운용이 더 안전하다. 하지만 더 큰 의미는 따로 있다. 프라이버시 누수는 언제나 노골적인 데이터 접근에서만 나오지 않는다. 이름, 값, 권한 없이도 안정된 반환 순서 하나가 추적 채널이 될 수 있다. HN이 이 글을 고신호로 본 이유도 여기에 있다. 추적은 더 영리해지고 있고, 방어는 더 자주 구현 디테일에서 무너진다. IndexedDB 이야기는 그걸 아주 깔끔하게 보여 준 사례다.

출처: Fingerprint.com research note · Hacker News 토론