Discord/Twitch/Snapchat 연령 인증 우회하기
(age-verifier.kibty.town)- 여러 플랫폼의 연령 인증 절차를 자동으로 성인으로 통과시키는 스크립트
-
Discord 콘솔에 코드를 붙여넣어 실행하면, 자동으로
/age-verification/verifyAPI 요청을 보내고 인증 완료 페이지로 이동 - Twitch, Kick, Snapchat 등 다른 플랫폼에서도 QR 코드 URL을 입력해 동일한 방식으로 인증 가능
- 이 도구는 k-id 시스템의 얼굴 데이터 처리 구조를 악용해, 실제 얼굴 없이도 합법적인 메타데이터를 생성함
- AES-GCM 암호화와 예측 데이터 구조를 복제해 검증 절차를 통과시키는 방식으로, 글로벌 연령 인증 확대에 맞춰 제작됨
Discord에서의 인증 절차
- Discord 웹앱의 개발자 콘솔(F12) 에 특정 스크립트를 붙여넣어 실행하는 방식
- 스크립트는 Discord의 webpack 모듈 캐시를 추출하고, 내부 API 클라이언트를 찾아
/age-verification/verify엔드포인트에 요청을 보냄 - 요청 결과로 받은
verification_webview_url을age-verifier.kibty.town으로 리디렉션함
- 스크립트는 Discord의 webpack 모듈 캐시를 추출하고, 내부 API 클라이언트를 찾아
- 사용자는 캡차를 해결한 뒤 페이지가 “success”를 표시할 때까지 대기하면 인증 완료
- 이 과정을 통해 Discord 계정이 성인 인증된 상태로 표시됨
다른 플랫폼(Twitch, Kick, Snapchat 등) 인증 방식
- 각 플랫폼의 연령 인증 페이지에서 ‘selfie’ 옵션을 선택하고, 표시된 QR 코드의 URL을 복사
- 해당 URL을
age-verifier.kibty.town의 입력창에 붙여넣고 ‘verify’ 버튼을 클릭 - 이후 자동으로 인증 절차가 진행되어 성공 메시지가 표시됨
작동 원리
- Discord가 사용하는 k-id 연령 인증 시스템은 얼굴 영상을 서버로 전송하지 않고, 얼굴 관련 메타데이터와 프로세스 세부 정보만 전송함
- 이 구조 덕분에 합법적으로 보이는 메타데이터를 조작해 전송하면 실제 얼굴 없이도 인증 통과 가능
- 과거 amplitudes의 k-id verifier가 공개된 이후, 파트너사 faceassure가 검증을 강화했으나 이번 도구는 새로운 방식으로 이를 우회함
기술적 세부 단계
-
1단계: 암호화 파라미터 복제
- 합법적 요청과 비교했을 때 누락된
encrypted_payload,auth_tag,timestamp,iv를 확인 - AES-GCM 암호화로, 키는
nonce + timestamp + transaction_id를 HKDF(SHA-256) 로 파생해 생성 - 동일한 구조를 재현해 누락된 파라미터를 생성함
- 합법적 요청과 비교했을 때 누락된
-
2단계: 예측 데이터 조작
- 암호화를 완벽히 복제해도 실패하자, 검증이 ‘prediction arrays’(outputs, primaryOutputs, raws)에 의존함을 확인
-
raws데이터를 기반으로 z-score를 이용해 이상치를 제거하며outputs와primaryOutputs를 생성 - 추가로 다음 조건들이 검증됨
-
xScaledShiftAmt,yScaledShiftAmt값은 두 가지 중 하나만 가능 - 미디어 이름(카메라)이 실제 장치 목록과 일치해야 함
- 상태 완료 시간이 타임라인과 일치해야 함
-
- 이러한 과정을 모두 구현한 오픈소스 코드가 공개되어 있으며, 누구나 확인 가능
공개 및 제작 배경
- 제작자는 xyzeva와 Dziurwa, 이전 관련 작업을 한 amplitudes에게 감사 인사를 표함
- Discord가 글로벌 연령 인증을 3월에 전면 시행할 예정이어서, 이에 맞춰 새로운 검증 우회 방법을 탐구했다고 설명됨
Hacker News 의견들
-
진짜 견고한 방법은 실제 웹캠 대신 인공적인 영상 입력을 생성하는 것임
어떤 플랫폼도 이걸 막을 수 없을 거라 생각함
만약 플랫폼이 휴대폰처럼 스푸핑이 어려운 카메라 입력을 요구하더라도, 고해상도 화면 앞에 카메라를 두면 끝임
이런 고양이와 쥐의 게임은 오래가지 않을 것임- 플랫폼이 정말로 이걸 막고 싶어할까 하는 의문이 있음
불완전한 영상 셀피 기반 나이 인증은 오히려 모두에게 이득임
상식적인 사람은 운전면허증이나 여권을 업로드하지 않아도 되고, 플랫폼은 사용자 유지가 쉬워짐
포르노 사이트는 사용자 계정을 만들어 추적과 광고 수익을 늘릴 수 있음
정치인은 “나이 제한 정책을 도입했다”고 발표할 수 있고, 부모는 자녀가 포르노를 안 본다고 안심함
결국 모두가 이기는 구조임 - Windows Hello 카메라처럼 하드웨어 인증 기능이 있는 장치가 이미 존재함
이런 검증 방식도 결국 그 방향으로 갈 것 같음
아마 Google이 Play Store 전용 앱을 밀었던 이유 중 하나도 이런 검증 가능한 소프트웨어 체인을 만들기 위해서였을 것임 - 얼굴 스캔이 불가능하면 ID 확인으로 전환할 수 있음
결국 스위치 하나만 바꾸면 되는 수준의 문제임 - Apple이 차세대 iPhone에 다중 스펙트럼 이미지 센서를 추가할 거라는 소문이 있음
3D 매핑과 함께라면 단순히 화면을 비추는 트릭은 통하지 않음
문제는 Discord 같은 나이 인증 서비스가 진지하게 시도하지 않는 것임 - 이런 게임은 오래가지 않을 거라는 말에 동의하지만, 이유는 다름
나는 그냥 그 게임을 하지 않고 플랫폼 사용을 중단할 것임
- 플랫폼이 정말로 이걸 막고 싶어할까 하는 의문이 있음
-
이 방식에는 세 가지 문제가 있음
- 나이 인증의 불편함을 줄여서 사람들이 폐쇄된 생태계에 머물게 함
- “프라이버시 친화적 방식은 너무 쉽게 우회된다”는 이유로 더 침입적인 인증을 정당화함
- 계정과 연결된 상태에서 임의의 코드를 실행하도록 유도함
- 어떤 것이 가능하다고 증명하는 것과 그걸 권장하는 것은 다름
이건 리버스 엔지니어링의 훌륭한 사례로, 개인정보를 침해하지 않고 검증하는 게 얼마나 어려운지 보여줌
코드가 공개되어 있으니 임의 코드 실행 문제(#3)는 해당되지 않음
만약 기업이 더 침입적인 방법(#2)으로 대응한다면, 사용자는 언제든 다른 플랫폼으로 이동할 수 있음
-
꽤 영리한 아이디어라고 생각함
Discord는 규제 당국에 “아이 보호 조치를 하고 있다”고 말할 수 있을 정도로만 나이 인증을 완화한 듯함
하지만 정부가 진지하게 감시한다면 이런 접근은 오래 못 감
이미 일부 국가는 더 강력한 생체 인증을 요구하고 있고, 일부 서비스는 모바일 앱 기반 인증으로 옮겨가고 있음
단순한 JavaScript 기반 트릭은 점점 통하지 않게 될 것임 -
코드 실행 시 즉시 실행 함수(IIFE)로 감싸는 걸 추천함
macOS Safari에서는 top-level await을 지원하지 않아서 작동하지 않음
관련 정보는 caniuse.com/wf-top-level-await 참고- Safari는 현대 웹 표준을 지원하지 않으려는 태도를 보임
이미 5년은 뒤처져 있음
- Safari는 현대 웹 표준을 지원하지 않으려는 태도를 보임
-
시도해보니 https://age-verifier.kibty.town/webview?url=null 로 리디렉션되며
{"error":"error parsing webview url"}메시지가 뜸
내 Discord 계정이 A/B 테스트 중이라 다른 인증 제공업체 Persona를 쓰는 듯함- Persona는 바(bar) 입장 시 신분증을 보여주는 것처럼 데이터를 수집하고 공유하는 회사로 알려져 있음
검색해보면 더 많은 정보를 볼 수 있음 - 관련 트윗: https://x.com/xyz3va/status/2021734252505604108
- 이 댓글이 상단에 올라가서 보안 담당자들이 확인했으면 좋겠음
- Persona는 바(bar) 입장 시 신분증을 보여주는 것처럼 데이터를 수집하고 공유하는 회사로 알려져 있음
-
실제로 작동함
Discord에서 “성인 그룹으로 분류되었다”는 메시지를 받음
(내레이션) 그리고 그 순간, 계정이 해킹되었음을 깨닫게 됨 ;)- 나도 작동했음
11년 된 계정이 문제 생기지 않길 바라지만, 얼굴이나 ID를 요구한다면 그냥 탈퇴할 생각임 - Half-Life의 g-man 캐릭터로 인증하는 게 더 재밌을 듯함
- 혹시 몰라서 나중에 비밀번호를 변경했음
- 나도 작동했음
-
왜 젊은 세대가 자신들을 적대하는 서비스에 그렇게 매달리는지 이해가 안 됨
싫어하는 플랫폼에 남아 있는 편의성이 대안을 찾는 수고보다 큰 걸까?- “대안을 찾는 건 가벼운 노력”이라는 말은 기술적 기본기를 전제로 함
요즘 젊은 세대는 터미널이나 파일 경로 개념조차 생소함
검색은 할 줄 알지만, 대안을 직접 세팅하는 건 다른 문제임
무엇보다 대안이 존재할 수 있다는 인식 자체가 부족함 - 네트워크 효과 외에도 실질적인 대안 부재가 있음
Matrix 같은 오픈 플랫폼은 아직 기능이 부족하고, Discord가 가장 덜 나쁜 선택지인 상황임 - 결국 이유는 단순함 — 네트워크 효과 때문임
친구들이 거기에 있으니 나도 거기에 있음 - 대부분의 Discord 커뮤니티는 내가 통제하지 않음
플랫폼을 옮길 때마다 멤버가 줄고 공동체가 붕괴됨
“가벼운 노력”이 실제로는 커뮤니티를 죽이는 일임 - 중년층이 여전히 Facebook Marketplace를 쓰는 이유와 같음
다른 플랫폼을 써도 혼자만 남게 되기 때문임
모두가 동시에 옮기게 만드는 건 거의 불가능함
- “대안을 찾는 건 가벼운 노력”이라는 말은 기술적 기본기를 전제로 함
-
Discord에서 캡차를 통과했지만,
{"error":"failed to execute k-id privately action (status=404)"}라는 오류가 뜸
나는 분명 성인인데, 이런 절차는 말도 안 되는 일임
차단당해도 상관없음- 나도 같은 오류를 봤지만, 새로고침하니 작동했음
- 코드에 표시된 다른 단계가 있는 듯함
-
관련 소식 요약
- Discord, 다음 달부터 얼굴 스캔 또는 ID 요구 (2026년 2월, 댓글 1999개)
- Discord 대안 순위 (2026년 2월, 댓글 456개)
- 데이터 유출로 7만 개 ID 노출 후 나이 인증 반발 (2026년 2월, 댓글 21개)
-
디지털 나이 인증의 고양이와 쥐 게임은 엄청난 규제 부담임
이렇게 쉽게 우회된다면 플랫폼은 단지 규제용 체크박스만 채우는 셈이고,
실제 신뢰 기반은 매우 취약함- 모두가 만족할 수 있는 방법도 있음
하지만 기업은 인증된 성인 사용자 데이터를 확보하지 못하니 선호하지 않음
관련 내용은 Google의 Age Assurance Europe 블로그 참고 - 완벽할 수는 없음
이런 시스템의 목적은 완벽한 차단이 아니라, 대중이 쉽게 우회하지 못하도록 마찰을 추가하는 것임
- 모두가 만족할 수 있는 방법도 있음