본문 바로가기

IT

알리익스프레스가 내 컴퓨터의 ‘소리’를 듣고 있었다? WebAudio 핑거프린팅의 정체

728x90
반응형

어느 날 블루투스 이어폰을 연결했는데 이상하게 웹브라우저를 켜놓은 것만으로 PC가 계속 오디오를 사용하는 것처럼 표시된다면 어떨까.

“혹시 사이트가 내 마이크를 몰래 켜놓은 건가?”

제법 무서운 상상이지만 최근 AliExpress에서 발견된 사례는 조금 다르다. 실제 사람의 목소리나 주변 소리를 녹음한 것은 아니지만, 브라우저의 오디오 처리 기능을 이용해 사용자의 기기 특성을 알아내는 코드가 발견됐다.

 

이 기술의 이름은 브라우저 핑거프린팅(Browser Fingerprinting), 그중에서도 Web Audio API를 이용하면 흔히 WebAudio Fingerprinting이라고 부른다.

브라우저 핑거프린팅 개인정보 수집 방법

더 놀라운 점은 이런 기술이 영화에 등장하는 해킹 기술이 아니라는 것이다. 이미 웹사이트의 봇 탐지, 부정거래 방지, 다중 계정 탐지 등 실제 서비스에서 활용되고 있다.

 

그렇다면 정말 쿠키를 지우고 시크릿 모드로 들어가도 “아까 그 사람”이라는 사실을 알아낼 수 있는 걸까?

알리익스프레스에서 발견된 이상한 오디오 코드

2026년 8월 공개된 분석에 따르면 AliExpress 웹사이트에서 실행되는 난독화된 JavaScript 코드가 브라우저의 Web Audio API를 사용하는 것이 발견됐다.

 

대략적인 구조를 단순화하면 다음과 같다.

테스트용 음파 생성
↓
브라우저에서 음파 처리
↓
분석 및 계산
↓
계산 결과값 추출
↓
기기 특성을 나타내는 신호로 활용

여기서 중요한 사실이 있다.

이 과정에서 사용자의 마이크를 켜고 주변 소리를 녹음하는 것이 아니다.

웹사이트가 직접 테스트용 음파를 만들어 브라우저 내부에서 처리한 다음 그 결과를 측정한다.

그래서 일반적으로 사용자는 아무 소리도 듣지 못한다.

쉽게 비유하자면 이런 것이다.

같은 수학 문제를 여러 컴퓨터에 풀게 했는데 정답은 모두 100이지만 컴퓨터 내부 계산 과정에서 아주 미세한 차이가 발생한다. 사이트는 그 작은 차이를 모아 “이 컴퓨터는 이런 특징이 있군”이라고 판단한다.

똑같은 계산을 하는데 왜 결과가 달라질까?

Web Audio API에는 OscillatorNode, AnalyserNode, DynamicsCompressorNode 같은 다양한 오디오 처리 기능이 존재한다.

예를 들어 브라우저에 특정 파형을 생성시키고 압축과 분석 과정을 수행하게 만들 수 있다.

const context = new OfflineAudioContext(1, 44100, 44100);

const oscillator = context.createOscillator();
const compressor = context.createDynamicsCompressor();

oscillator.connect(compressor);
compressor.connect(context.destination);

oscillator.start();

context.startRendering();

실제 fingerprint 라이브러리는 이것보다 훨씬 정교한 측정을 수행하지만 원리는 비슷하다.

CPU 아키텍처, 운영체제, 브라우저의 오디오 엔진 구현, 부동소수점 계산 방식 등의 차이 때문에 최종 결과가 조금씩 달라질 수 있다.

 

그리고 웹사이트는 이 값을 브라우저를 구별하는 하나의 특징으로 사용할 수 있다.

자동차 엔진 소리만 듣고 정확히 어느 차량인지 알아내기는 어렵지만 “이건 디젤이고, 대략 이런 종류의 엔진이다” 정도의 정보를 얻을 수 있는 것과 비슷하다.

오디오 하나만으로 내 컴퓨터를 정확히 찾을 수 있을까?

여기서 과장이 발생하기 쉽다.

WebAudio fingerprint 값 하나만 가지고 지구상의 수많은 컴퓨터 가운데 특정 PC 한 대를 정확하게 찾아내는 것은 일반적으로 어렵다.

실제 WebAudio fingerprinting 연구에서도 여러 사용자가 같은 결과값을 가지는 현상이 확인됐다.

Firefox처럼 fingerprinting 방어 기능이 발전한 브라우저에서는 WebAudio로 얻을 수 있는 정보량이 더욱 줄어들었다.

하지만 문제는 사이트가 WebAudio 하나만 조사하지 않는다는 것이다.

진짜 무서운 것은 여러 정보를 합치는 것이다

현대적인 브라우저 fingerprint 시스템은 수많은 특징을 동시에 조사한다.

대표적인 정보는 다음과 같다.

WebAudio 오디오 처리 환경 특징
Canvas 그래픽 렌더링 차이
WebGL GPU 및 그래픽 환경
화면 정보 해상도, 픽셀 비율
CPU 논리 프로세서 수
메모리 대략적인 장치 메모리
브라우저 종류, 버전, 지원 기능
OS 운영체제 관련 특징
폰트 설치 또는 사용 가능한 글꼴
네트워크 IP, ASN, VPN 여부 등
행동 마우스, 터치, 스크롤 패턴

 

예를 들어 어느 사용자의 환경이 다음과 같다고 해보자.

Mac
Chrome
2880×1800 해상도
8개의 CPU 논리 코어
특정 WebGL Renderer
특정 Canvas 결과
특정 Audio 결과
한국 IP
특정 브라우저 기능 조합

각 정보 하나하나는 별것 아닐 수 있다.

하지만 수십 개를 동시에 조합하면 상당히 희귀한 조합이 만들어진다.

그래서 fingerprint라는 이름이 붙는다.

실제 사람의 손가락 지문처럼 반드시 전 세계에서 유일하다는 의미가 아니라, 여러 특징을 조합해 동일한 브라우저나 기기일 가능성을 판단한다는 의미에 가깝다.

쿠키를 지워도 다시 알아볼 수 있을까?

여기에서 browser fingerprinting의 진짜 힘이 드러난다.

일반적인 사용자 추적에는 쿠키가 많이 사용된다.

첫 방문
↓
쿠키 ABC123 저장
↓
다시 방문
↓
ABC123 발견
↓
같은 사용자

그런데 사용자가 쿠키를 삭제하면 어떻게 될까?

사이트 입장에서는 기존 식별표가 사라진다.

 

반면 fingerprinting은 상황이 다르다.

쿠키 삭제
↓
사이트 재접속
↓
브라우저와 기기의 특징 다시 측정
↓
이전에 측정한 환경과 비교
↓
동일한 기기일 가능성 계산

때문에 쿠키를 삭제하거나 시크릿 모드를 사용하더라도 fingerprinting까지 완전히 사라지는 것은 아니다.

VPN 역시 마찬가지다.

VPN은 주로 IP 주소를 바꾸는 기술이므로 Canvas, WebGL, 화면 해상도, 브라우저 특성까지 전부 바꿔주는 것은 아니다.

그런데 왜 기업들이 이런 기술을 사용할까?

여기까지 읽으면 이렇게 생각할 수 있다.

“결국 광고주가 사람 몰래 추적하려고 만든 기술 아닌가?”

광고 추적에도 활용할 수 있는 것은 사실이다.

 

하지만 browser fingerprinting의 상당히 중요한 활용 분야가 따로 있다.

바로 보안이다.

 

예를 들어 쇼핑몰에서 이런 일이 발생한다고 생각해보자.

사용자 한 명이 신규 가입
↓
1만원 쿠폰 획득
↓
쿠키 삭제
↓
VPN 변경
↓
새 이메일로 가입
↓
또 쿠폰 획득
↓
100회 반복

단순 쿠키와 IP만 검사하는 사이트라면 잡기 쉽지 않다.

하지만 기기의 다양한 특징까지 비교하면 상황이 달라진다.

새로운 계정
+
IP는 다름
+
브라우저 환경 거의 동일
+
Canvas 동일
+
WebGL 동일
+
기기 특성 유사
+
짧은 시간 동안 계정 수십 개 생성

이렇게 되면 시스템에서 높은 위험 점수를 부여할 수 있다.

 

따라서 fingerprinting은 실제로 다음과 같은 분야에서 상당히 유용하다.

  • 자동화 봇 탐지
  • 부정 결제 탐지
  • 계정 탈취 탐지
  • 신규가입 이벤트 악용 방지
  • 다중 계정 탐지
  • 웹 스크래핑 방지
  • 자동 매크로 탐지

중요한 것은 fingerprint를 “이 사람이 김철수다”라고 확정하는 신분증으로 쓰는 것보다 여러 보안 신호 가운데 하나로 사용하는 것이다.

AliExpress는 그러면 실제로 사용자를 추적한 것인가?

이 부분은 상당히 조심해서 이야기해야 한다.

AliExpress에서 WebAudio를 포함한 여러 기기 정보를 수집하는 JavaScript가 발견됐다는 것과, 그 정보를 광고 목적으로 사용자 장기 추적에 사용했다는 것은 서로 다른 주장이다.

클라이언트에서 실행되는 JavaScript를 분석하면 어떤 정보를 수집하는지는 확인할 수 있다.

 

하지만 서버 내부에서 그 데이터를

  • 몇 분 동안 저장하는지
  • 몇 년 동안 저장하는지
  • 사기 방지에만 사용하는지
  • 광고 프로필과 결합하는지
  • 다른 Alibaba 서비스의 계정과 연결하는지

까지는 알기 어렵다.

 

따라서 현재 공개된 분석만 가지고 “AliExpress가 WebAudio로 사람들을 몰래 광고 추적했다”고 단정하는 것은 정확하지 않다.

반면 광범위한 browser/device fingerprinting 관련 정보가 수집된 것은 충분히 주목할 만한 부분이다.

Brave는 이런 fingerprinting을 어떻게 막을까?

Brave가 사용하는 흥미로운 방어 기술 가운데 하나가 Farbling이다.

일반적인 차단 방식이라면 특정 API를 아예 실행하지 못하게 만들 수 있다.

 

그런데 이 방법은 웹사이트가 깨질 가능성이 있다.

그래서 Brave는 조금 다른 접근을 사용한다.

예를 들어 실제 Canvas 또는 Audio 계산 결과가 다음과 같다고 가정해보자.

0.734829129

웹사이트 A에서는 약간 변형해서

0.734831...

웹사이트 B에서는

0.734826...

처럼 보이게 만드는 것이다.

웹사이트 입장에서는 API가 정상 작동하는 것처럼 보이지만 여러 사이트에서 동일한 fingerprint를 만들기 어려워진다.

쉽게 말해 매장에 들어갈 때마다 지문 모양이 아주 조금씩 변하는 장갑을 끼는 셈이다.

 

Brave는 Canvas, WebAudio 등을 대상으로 이러한 fingerprinting 방어 기능을 적용하고 있으며 최근에는 WebGL과 WebGPU 관련 정보 노출에 대한 보호도 강화하고 있다.

Firefox도 fingerprinting을 막는다

Firefox 역시 Enhanced Tracking Protection을 통해 fingerprinting 방어 기능을 제공한다.

특정 환경에서는 Canvas, 폰트, CPU 코어 수, 화면 정보 등의 노출을 제한하거나 값을 일반화한다.

더 강력한 privacy.resistFingerprinting 옵션도 존재하지만 웹사이트 호환성에 영향을 줄 수 있기 때문에 일반 사용자는 기본 보호 기능이나 Strict 모드를 사용하는 것이 편하다.

 

결국 현대 브라우저의 fingerprinting 방어 전략은 크게 두 가지다.

정보 자체를 차단
또는
모든 사용자를 비슷하게 보이도록 만들기

후자가 특히 중요하다.

핑거프린팅에서 가장 강력한 방어는 “내 정보를 하나도 알려주지 않는 것”만이 아니라 “수많은 사용자와 똑같아 보이는 것”이기 때문이다.

시크릿 모드와 VPN만 믿으면 안 되는 이유

프라이버시 이야기가 나오면 흔히 사용하는 방법이 있다.

“VPN 쓰면 되는 거 아닌가?”

VPN은 훌륭한 기술이지만 역할이 다르다.

방법 주로 막아주는 것
쿠키 삭제 쿠키 기반 식별
시크릿 모드 로컬 기록과 세션 분리
VPN 실제 IP 주소 노출
광고 차단기 광고·추적 스크립트
Fingerprinting 보호 브라우저 기기 특징을 통한 식별

따라서 개인정보 보호를 중요하게 생각한다면 하나의 기술에 모든 것을 맡기기보다는 여러 방어 수단을 조합하는 것이 좋다.

이런 기술은 불법일까?

기술 그 자체가 불법이라고 볼 수는 없다.

같은 fingerprinting 기술이라도 사용 목적에 따라 이야기가 완전히 달라진다.

예를 들어 금융 서비스가 해킹된 계정에서 갑자기 전혀 다른 기기로 로그인한 것을 감지하기 위해 기기 특성을 검사한다면 중요한 보안 기능이 될 수 있다.

 

반면 사용자가 인지하기 어려운 방식으로 장기간 개인을 추적해 광고 프로필을 만든다면 개인정보보호와 관련한 훨씬 큰 문제가 발생한다.

한국에서는 수집하는 정보가 다른 정보와 결합돼 개인을 식별할 수 있는 경우 개인정보보호법상의 적법한 처리 근거, 고지, 이용 목적 등이 중요해질 수 있다.

 

유럽은 더욱 엄격하다.

EU의 ePrivacy 및 GDPR 체계에서는 쿠키뿐 아니라 device fingerprinting과 같이 단말기의 정보를 이용한 추적 기술 역시 규제 대상이 될 수 있으며 서비스 제공에 필수적이지 않은 추적이라면 동의 문제가 발생할 가능성이 크다.

 

결국 중요한 것은 기술 이름이 아니라 다음 질문들이다.

무엇을 수집하는가?
왜 수집하는가?
누구와 결합하는가?
얼마나 오래 보관하는가?
사용자가 알고 있는가?
거부할 수 있는가?

회사에서 직접 도입해도 될까?

웹서비스라면 기술적으로는 상당히 쉽게 구현할 수 있다.

FingerprintJS처럼 오픈소스로 공개된 browser fingerprinting 라이브러리도 있다.

하지만 실서비스에서는 JavaScript 몇 줄로 만든 fingerprint 값을 사용자 ID처럼 사용하는 것은 권장하기 어렵다.

더 좋은 구조는 Risk Engine 방식이다.

사용자 요청
↓
IP / VPN 여부
브라우저 특징
기기 특징
로그인 이력
요청 빈도
자동화 신호
행동 패턴
↓
Risk Score 계산
↓
정상 통과 / CAPTCHA / 추가 인증 / 차단

즉 fingerprint는 판결문이 아니라 증거 하나가 되어야 한다.

“fingerprint가 같으니까 동일인이다.”

보다는

“fingerprint도 비슷하고, 10분 동안 계정을 40개 만들었고, VPN을 사용하면서 자동화 브라우저 특징까지 발견됐으니 위험도가 높다.”

라는 판단이 훨씬 안전하다.

앱에서는 마음대로 fingerprinting하면 더 위험하다

웹과 네이티브 앱 환경은 규칙이 조금 다르다.

 

특히 Apple은 앱이 브라우저 속성, 기기 설정, 네트워크 정보 등을 조합해 사용자를 고유하게 식별하는 fingerprinting을 정책상 제한하고 있다.

 

광고 추적 권한을 받았다고 해서 마음대로 fingerprinting할 수 있는 것도 아니다.

iOS에서 보안이나 부정사용 방지가 필요하다면 Apple이 공식 제공하는 App Attest나 DeviceCheck 같은 기술을 사용하는 것이 더 적절하다.

 

Android 역시 임의의 영구 식별자를 만드는 것보다 Google Play Integrity API와 공식 식별 체계를 활용하는 것이 바람직하다.

회사 입장에서는 “할 수 있는가?”보다 “플랫폼에서 허용하는 방식인가?”를 먼저 확인해야 하는 이유다.

그래서 일반 사용자는 무엇을 하면 될까?

지나치게 겁먹을 필요는 없다.

하지만 “쿠키만 지우면 완전히 익명이다”라는 생각도 현실과는 조금 다르다.

개인정보 보호에 관심이 있다면 다음 정도면 충분히 현실적인 방어가 된다.

  1. fingerprinting 방어 기능이 강한 브라우저 사용
  2. 브라우저의 추적 방지 기능 활성화
  3. 필요하다면 uBlock Origin 같은 콘텐츠 차단기 사용
  4. 불필요한 브라우저 확장 프로그램을 지나치게 많이 설치하지 않기
  5. VPN은 IP 보호 수단으로 생각하고 fingerprint 방어와 구분하기
  6. 시크릿 모드를 완벽한 익명 모드라고 생각하지 않기

특히 Brave나 Firefox는 fingerprinting 대응을 중요하게 다루는 대표적인 브라우저다.

마무리: 인터넷에서 우리는 생각보다 많은 흔적을 남긴다

이번 AliExpress WebAudio 사례에서 가장 흥미로운 점은 웹사이트가 사용자의 마이크를 몰래 도청했다는 것이 아니다.

오히려 더 현실적인 이야기가 숨어 있다.

 

우리가 웹사이트에 접속하는 순간 브라우저는 생각보다 많은 특징을 드러낸다.

화면 크기, GPU, CPU, 폰트, 그래픽 처리 결과, 오디오 계산 결과까지 말이다.

각각은 별것 아닌 정보지만 수십 개가 모이면 하나의 꽤 특징적인 프로필이 만들어진다.

 

그래서 현대 인터넷에서 사용자 식별은 더 이상 쿠키 하나만의 이야기가 아니다.

동시에 이 기술을 무조건 악성 기술이라고 볼 수도 없다.

똑같은 기술이 광고 추적에 사용되면 골칫거리가 될 수 있지만, 계정 탈취와 결제 사기를 막는 데 사용되면 훌륭한 보안 기술이 된다.

 

결국 browser fingerprinting에서 가장 중요한 질문은 이것이다.

“이 기술이 존재하는가?”

그 답은 이미 확실하다.

존재한다.

 

그리고 다음 질문이 진짜 중요하다.

“누가, 어떤 목적으로, 얼마나 많은 정보를 수집하고 있는가?”

앞으로 웹사이트를 사용할 때 브라우저가 단순히 페이지를 보여주는 프로그램만은 아니라는 사실을 한 번쯤 기억해두면 인터넷 프라이버시를 이해하는 데 꽤 도움이 될 것이다.


참고자료 및 출처

  1. Brave Privacy Updates - Fingerprinting Defenses 2.0
    https://brave.com/privacy-updates/4-fingerprinting-defenses-2.0/
  2. Brave Privacy Updates - WebGL/WebGPU Fingerprinting Protections
    https://brave.com/privacy-updates/38-webgl-webgpu-fingerprinting-protections/
  3. W3C - Web Audio API Recommendation
    https://www.w3.org/TR/webaudio/
  4. W3C - Fingerprinting Guidance for Web Specification Authors
    https://www.w3.org/TR/fingerprinting-guidance/
  5. Mozilla Support - Firefox Protection Against Fingerprinting
    https://support.mozilla.org/kb/firefox-protection-against-fingerprinting
  6. Mozilla Support - Resist Fingerprinting
    https://support.mozilla.org/kb/resist-fingerprinting
  7. FingerprintJS GitHub Repository
    https://github.com/fingerprintjs/fingerprintjs
  8. Web Audio API Fingerprinting 연구 자료
    https://arxiv.org/abs/2107.14201
  9. Tom Ritter - WebAudio Fingerprinting / Alibaba 분석
    https://ritter.vg/blog-webaudio_alibaba.html
  10. Apple Developer - User Privacy and Data Use
    https://developer.apple.com/app-store/user-privacy-and-data-use/
  11. Apple Developer - DeviceCheck
    https://developer.apple.com/documentation/devicecheck
  12. Google Android Developers - Play Integrity API
    https://developer.android.com/google/play/integrity
  13. 개인정보보호위원회 - 온라인 행태정보 관련 개인정보 보호 정책 자료
    https://www.pipc.go.kr/
  14. European Data Protection Board - ePrivacy Directive Article 5(3) Guidelines
    https://www.edpb.europa.eu/
728x90
반응형