AI 요약
ChatGPT의 모든 메시지 전송 과정에는 Cloudflare의 Turnstile 프로그램이 개입하여 사용자 환경을 실시간으로 분석합니다. 한 개발자가 네트워크 트래픽에서 377개의 관련 프로그램을 추출해 복호화한 결과, 이 시스템은 표준적인 브라우저 핑거프린팅 기술을 훨씬 상회하는 수준의 검증을 수행하고 있었습니다. 특히 분석 프로그램은 브라우저 하드웨어와 네트워크 정보뿐만 아니라, ChatGPT의 실제 React 애플리케이션 상태인 __reactRouterContext와 loaderData 등을 직접 확인합니다. 이는 단순히 브라우저 정보를 위조하는 봇들을 차단하고, 실제 React SPA(Single Page Application)가 완전히 구동된 환경인지를 보장하기 위함입니다. 기술적으로는 서버에서 전송하는 28,000자 규모의 bytecode 내에 복호화 키를 숨겨두는 등 정교한 암호화 방식을 사용하고 있음이 확인되었습니다.
핵심 인사이트
- 3단계 계층 구조 검증: 분석 프로그램은 브라우저(GPU, 폰트), Cloudflare 네트워크(IP, 지역 정보), ChatGPT React 앱 상태(Bootstrap 데이터 등)의 3개 레이어를 모두 확인합니다.
- 55개의 고정 속성 수집: 복호화된 377개의 샘플을 분석한 결과, 모든 샘플에서 예외 없이 총 55개의 특정 속성을 수집하는 일관성을 보였습니다.
- 보안 취약점 발견: 암호화된 bytecode를 풀기 위한 XOR 키(예: 97.35와 같은 float 리터럴)가 정적 명령어 내에 포함되어 있어, HTTP 요청/응답 데이터만으로도 전체 프로그램 복호화가 가능합니다.
주요 디테일
- 데이터 규모: 분석용
turnstile.dx필드는 매 요청마다 변경되는 약 28,000자의 base64 문자열로 구성됩니다. - 커스텀 가상 머신(VM): 28개의 opcode(ADD, XOR, CALL, BTOA 등)를 지원하는 커스텀 VM을 통해 핑거프린팅 로직을 실행합니다.
- 하드웨어 정밀 검사: WebGL 관련 8개 속성(Vendor, Renderer 등), 스크린 관련 8개 속성, 하드웨어 성능(CPU 코어 수, 메모리 용량 등) 5개 속성을 상세히 대조합니다.
- 복호화 프로세스: 요청 시 전송되는
p토큰과 응답의dx값을 XOR 연산하여 1차 bytecode를 얻고, 그 내부의 19KB 크기 암호화 블록을 다시 추출하는 과정을 거칩니다. - React 상태 확인: 봇이 단순히 브라우저 핑거프린트만 흉내 내고 실제 React 앱을 렌더링하지 않을 경우,
clientBootstrap등의 데이터 부재로 인해 검증에 실패하게 됩니다.
향후 전망
- 봇 차단 기술의 진화: 단순한 API 호출 기반의 봇은 차단이 쉬워지며, 헤드리스 브라우저에서도 전체 React 스택을 구동해야 하므로 봇 운영 비용이 크게 상승할 것입니다.
- Cloudflare의 로직 업데이트: 복호화 키가 노출되는 취약점이 공개됨에 따라, Cloudflare는 bytecode 난독화 및 키 생성 로직을 더욱 강화할 것으로 예상됩니다.
