
- Source: arXiv cs.CR 2601.09232 / ACM CCS 2026
- Original: https://arxiv.org/abs/2601.09232
- Tags: SMS, Bearer URL, PII, Authentication, Enumeration
본 글은 원 논문의 주요 기술적 내용을 이해하기 쉽게 요약·정리한 글입니다.
자세한 내용은 상단의 원문 링크를 참고하세요.
한눈에 보기
이 연구는 SMS로 전달되는 "한 번 클릭하면 주문·예약·계정 화면이 열리는
비공개 URL"이 사실상 소지 자체로 인증되는 자격 증명(Bearer
Credential) 역할을 하면서, SMS 링크 하나의 노출이 개인정보(PII)
조회·수정, 계정 접근, 다른 사용자 정보 열거(Enumeration)로까지
연쇄적으로 확대될 수 있음을 대규모로 측정했다.
연구진은 공개 SMS 게이트웨이에서 수집한 3,300만 건 이상의 메시지로부터
322,949개의 고유 URL을 추출했으며, 최종적으로 177개 서비스의 701개 URL
엔드포인트에서 개인정보 노출을 확인했다.
연구 배경
여러 서비스는 사용자 편의를 위해 SMS 링크를 클릭하는 것만으로 주문 조회,
예약 관리, 배송 확인, 계정 관련 기능 등에 접근할 수 있게 한다. 문제는
이러한 설계가 사실상 "SMS 링크를 가지고 있는 사람 = 정상 사용자"라는
인증 가정을 만든다는 점이다.
하지만 SMS는 공개 SMS 게이트웨이, SIM 스와핑, 악성 SMS 읽기 앱, 통신망
취약점, 데이터 유출 등 다양한 경로를 통해 노출될 수 있다. 이때 URL이
장기간 유효한 인증 토큰처럼 사용되고 추가 인증이 없거나 약하다면, 링크
하나의 노출이 단순 정보 조회를 넘어 계정 수준의 접근으로 이어질 수 있다.
또한 URL에 포함된 토큰의 무작위성이 충분하지 않거나 규칙성이 존재한다면,
이미 확보한 정상 URL을 기준으로 값을 일부 변경해 다른 사용자의 URL을
찾아내는 공격으로 확대될 수 있다.
공격 모델 / 전제 조건
연구의 공격자는 서비스 내부 권한이나 피해자의 계정 자격 증명, 백엔드
또는 데이터베이스 접근 권한을 가지고 있지 않은 외부 공격자다.
연구진은 공격 능력을 크게 세 단계로 구분한다.
- A1: 노출된 SMS URL을 일반 브라우저로 열어 리디렉션, 화면 내용,
클라이언트에서 확인 가능한 HTTP 통신 등을 관찰한다. - A2: ZIP 코드, 생년월일(DOB), 성(last name)과 같은 사용자 속성을
추가로 요구하는 경우 제한된 범위에서 값을 추측한다. - A3: 정상 URL의 토큰이나 식별자에 예측 가능한 규칙 또는 낮은
엔트로피가 존재할 경우, 제한적인 값 변경을 통해 다른 사용자에게
영향이 미치는지 확인한다.
피싱, 악성코드 설치, 이동통신사 자체 침해, 서비스 거부(DoS) 공격은 연구
범위에서 제외했다.
핵심 Root Cause
핵심 원인은 URL을 보유하고 있다는 사실을 사용자의 신원 확인과 동일하게
취급하는 인증 설계에 있다.
SMS는 그 자체로 완전한 기밀 전송 경계가 아니다. 그런데 서비스가 SMS로
전달한 링크를 별도의 인증 절차 없이 독립적인 인증 수단으로 사용하면,
URL을 획득한 제3자 역시 정상 사용자와 동일한 권한을 얻을 수 있다.
여기에 다음과 같은 설계 문제가 결합하면 단순한 URL 유출이 연쇄적인
개인정보 노출로 확대된다.
- 지나치게 긴 URL 유효 기간
- 예측 가능하거나 엔트로피가 낮은 토큰
- 요청 횟수 제한이 없는 지식 기반 추가 인증
- 화면에 필요한 범위를 넘어선 API 응답
- 클라이언트 측에 과도하게 전달되는 개인정보
- 인증 세션이나 특정 기기와 연결되지 않은 독립형 링크
즉, 문제의 본질은 "SMS가 유출될 수 있다"는 사실 자체가 아니라, 유출
가능한 전달 수단에 포함된 URL을 장기간 유효한 독립형 인증 자격 증명으로
신뢰하는 구조다.
핵심 공격 원리
공격자는 이미 외부에 노출된 정상 SMS URL을 출발점으로 삼는다.
먼저 링크를 열어 화면에 직접 표시되는 개인정보뿐 아니라 HAR, API 응답,
WebSocket 메시지, HTML 내부 JSON 데이터와 추가 화면 이동 과정까지
조사한다. 이 과정에서 사용자가 화면에서 보는 것보다 훨씬 많은 개인정보가
백엔드 응답에 포함되어 있을 수 있다.
URL 토큰의 엔트로피가 낮거나 일정한 규칙을 가진다면 무작위 인터넷 스캔을
수행하는 것이 아니라, 실제 서비스와 정상 토큰 형식을 이미 알고 있는
상태에서 제한적으로 토큰 값을 변경해 다른 사용자 데이터에 접근할 수
있는지 확인한다.
또한 생년월일, ZIP 코드, 성과 같이 비교적 추측하거나 외부에서 알아내기
쉬운 정보를 추가 인증 요소로 사용하는 경우, URL 소지와 이러한 정보를
결합해 더 높은 계정 권한으로 접근할 가능성도 확인한다.
공격 흐름
- 공개 SMS 게이트웨이 등의 경로를 통해 비공개 URL이 외부에 노출된다.
- 해당 URL을 일반 브라우저로 방문해 리디렉션, 화면, HAR, HTML 등을
수집한다. - OCR과 JSON 분석을 통해 개인정보 후보를 찾고, 연구자가 실제 사용자별
개인정보인지 검증한다. - URL 토큰의 엔트로피와 유효 기간, 추가 인증 절차를 분석한다.
- 제한적인 토큰 값 변경을 통해 다른 사용자 정보 열거 가능성을
확인한다. - UI, API, WebSocket 등 여러 경로에서 얻은 정보를 결합해 하나의 사용자
프로필로 재구성한다. - 이를 바탕으로 피싱, 신원 도용 등 후속 악용 가능성을 평가한다.
성공 조건 / 실패 조건
공격이 성립하려면 URL 자체가 독립적인 인증 자격 증명으로 동작하면서
충분히 오래 유효하거나, 추가 인증 절차가 약해야 한다.
다른 사용자 정보 열거는 토큰 공간이 작고 예측 가능하며 요청 횟수 제한이
부족할수록 가능성이 높아진다.
반대로 다음과 같은 보호 조치가 적용되어 있다면 공격 가능성을 크게 줄일
수 있다.
- 짧은 URL 유효 기간
- 일회성 토큰
- 최소 64비트 이상의 CSPRNG 기반 토큰
- 인증된 세션에 대한 링크 바인딩
- 적절한 요청 횟수 제한
- 최소한의 개인정보만 반환하는 API 설계
연구진의 실험 환경
연구진은 공개 SMS 메시지 3,300만 건 이상에서 URL을 추출해
322,949개의 고유 URL과 10,903개 도메인을 확보했다.
Playwright 기반 자동 방문에서는 요청 사이에 2초의 지연을 두었으며,networkidle 조건과 20초 타임아웃을 사용했다. 특히 링크가 장기간 살아
있는 문제를 확인하기 위해 SMS가 수집된 시점으로부터 최소 1년이 지난 뒤
URL에 접근했다.
중복 제거 후에는 87,080개의 고유 UI와 3,958개 도메인을 분석했다.
개인정보가 외부 서비스로 전달되는 것을 막기 위해 다국어 OCR과 LLM 분석은
로컬 환경에서 수행했다.
JSON 데이터는 14,544개 URL에서 추출했다. 개인정보 노출 후보는 두 명의
검토자가 독립적으로 확인했으며, 판단이 다른 경우 합의를 통해 최종
분류했다.
주요 실험 결과
UI 분석에서는 1,916개의 후보를 검토해 553개의 실제 개인정보 노출 URL과
121개 서비스를 확인했다.
JSON 분석에서는 1,958개 후보 가운데 148개가 실제 개인정보 노출
사례로 확인됐다.
두 결과를 합치면 총 701개 URL 엔드포인트, 177개 서비스에서 개인정보
노출이 검증됐다.
177개 서비스 가운데 172개(97.18%)는 API, 서버 렌더링 또는
WebSocket을 통해 개인정보가 노출됐으며, 나머지 5개 서비스는 URL 자체에
개인정보가 포함되어 있었다.
701개 URL 가운데 약 54.35%는 1~2년, 약 45.65%는 최소 2년 이상
유효했다. 2019년까지 거슬러 올라가는 사례도 확인됐다.
또한 125개 서비스에서 낮은 엔트로피 때문에 다른 사용자 URL을 열거할
가능성이 있는 토큰이 발견됐으며, 연구진이 제한적으로 검증한 결과 13개
서비스에서 실제 열거가 가능함을 확인했다.
이 밖에도 다음과 같은 결과가 확인됐다.
- 20개 서비스: 정보 수정이나 계정 수준 접근 등 높은 권한의 기능
제공 - 84개 서비스: 최초 화면보다 추가적인 개인정보 노출
- 206개 사용자 프로필: SMS 게이트웨이에서 노출된 링크만으로 여러
정보를 결합해 재구성 가능
실제 발견된 취약점 / 사례
논문 부록에는 EverQuote, DimOrder, Sticker Mule, iHire 등 실제
서비스에서 발견되어 공개 절차 이후 수정된 사례가 포함되어 있다.
연구진은 총 150건의 취약점을 서비스 제공자에게 알렸으며, 이 가운데
18건에 대해 응답을 받았고 실제 수정으로 이어진 사례는 7건이었다.
이메일에 응답하지 않은 일부 서비스에는 전화로 추가 연락을 진행했다.
4곳과 연락이 닿았고 그중 3곳이 문제를 인정했다.
연구진은 수정이 이루어진 서비스 가운데 공개된 활성 사용자 수를 확인할 수
있는 서비스를 기준으로, 조치가 최소 1억 2천만 명의 사용자에 대한
잠재적 노출 위험을 줄였을 것으로 추정했다.
다만 이 수치는 실제로 개인정보가 유출된 사용자 수를 측정한 값이 아니다.
해당 서비스를 사용하는 공개 활성 사용자 수를 기반으로 계산한 위험 감소
추정치다.
저자 주장 vs 실제 증명 범위
701개 URL / 177개 서비스라는 결과는 공개 SMS 게이트웨이라는 특정
관측 범위에서 수집된 데이터이며, 특히 장기간 유효한 링크를 중심으로
측정한 결과다. 따라서 모든 SMS 링크가 취약하다는 의미는 아니다.
다른 사용자 정보를 열거할 가능성이 있다고 판단된 서비스는 125개였지만,
연구진이 제한적인 테스트를 통해 실제로 열거 가능성을 확인한 서비스는
13개다.
또한 1억 2천만 명이라는 수치는 실제 피해자나 유출 사용자 수가 아니다.
취약점이 수정된 서비스의 공개 활성 사용자 수를 이용해 계산한 위험 감소
추정치다.
공개 SMS 게이트웨이 역시 공격자가 SMS 링크를 확보할 수 있는 유일한
경로라고 주장하는 것이 아니라, 실제 노출 사례를 대규모로 관측하기 위해
사용한 데이터 소스다.
기존 공격 / 기존 점검 방식과의 차이
기존 SMS 보안 연구가 스미싱, OTP 악용, SS7과 같은 이동통신망 공격에 주로
초점을 맞췄다면, 이 연구는 정상 서비스가 직접 발송한 비공개 URL 자체가
어떤 인증 의미를 갖는지에 초점을 맞춘다.
낮은 엔트로피의 URL을 이용한 정보 열거 자체를 새로운 공격 기법으로
제시하는 것도 아니다. 공개 SMS 게이트웨이를 통해 실제 서비스와 정상 토큰
형식을 식별한 뒤, URL 노출이 개인정보 유출과 계정 접근으로 얼마나
연쇄적으로 확대될 수 있는지를 실증적으로 측정한 것이 핵심 차별점이다.
연구의 한계와 주의해서 볼 부분
공개 SMS 게이트웨이 사용자는 전체 SMS 사용자 집단을 대표하지 않을 수
있다.
또한 연구진은 SMS가 수집된 시점으로부터 최소 1년이 지난 뒤 URL에
접근했기 때문에, 짧은 시간 동안만 유효하지만 그동안에는 취약한 링크는
오히려 연구 대상에서 제외됐을 가능성이 있다.
윤리적 이유로 원본 SMS, 실제 취약 URL, 개인정보, 가리지 않은 스크린샷은
공개하지 않았다. 다른 사용자 정보 열거와 인증 관련 테스트 역시 제한된
범위에서만 수행했으므로 가능한 최대 공격 규모를 측정한 연구는 아니다.
일부 서비스 분류와 링크 수명 측정 결과 역시 연구 당시 서비스에 실제로
접근할 수 있었는지에 영향을 받는다.
공개 PoC / Exploit / Tool / Artifact 분석
논문은 cs-maestro/cost_of_convenience GitHub 저장소를 통해 URL 데이터
처리, 전처리·필터링, 개인정보 탐지, 검증 및 분석에 사용한 비민감
스크립트와 연구 산출물을 공개한다고 설명한다.
반면 실제 악용에 사용될 수 있는 공개 SMS 게이트웨이 수집 스크립트, 원본
SMS, 취약 URL, 가리지 않은 스크린샷, 추출된 개인정보는 제공하지 않는다.
따라서 공개 산출물의 성격은 실제 피해자를 대상으로 한 공격 도구가 아니라
논문의 측정·분석 파이프라인을 이해하고 일부 과정을 재현하기 위한
연구용 자료에 가깝다.
브리핑 시점에는 논문에서 저장소 공개 사실은 확인했지만, 저장소의 전체
코드 구조를 직접 확인해 각 기능의 구현 상태까지 독립적으로 검증하지는
못했다. 따라서 이를 즉시 사용 가능한 공개 PoC나 실제 공격용 Exploit으로
표현하는 것은 적절하지 않다.
레드팀 / 모의해킹에서 어떻게 활용할까
SMS·이메일 Magic Link, 배송 조회, 예약 관리, 견적 확인, 보험·채용 포털
등을 점검할 때 링크를 단순 URL이 아니라 인증 자격 증명으로 취급하는
관점이 유용하다.
링크가 로그, 분석 도구, Referrer, SMS 제공업체 등에서 외부로 노출됐다고
가정한 뒤 다음 요소가 연쇄적으로 어떤 영향을 만드는지 확인할 수 있다.
링크 유효 기간 → 일회성 여부 → 세션 바인딩 → 토큰 엔트로피 → 요청 횟수
제한 → 추가 인증 → API 과다 노출 → 사용자 프로필 재구성
기존에 단순 IDOR 여부만 확인했다면, 이 논문을 바탕으로 URL 자체의 인증
의미와 수명, 추가 인증 구조, 백엔드 응답까지 하나의 공격 경로로 연결해
점검할 수 있다.
실제 점검 시 추가할 체크리스트
- URL만으로 개인정보 또는 계정 상태에 접근할 수 있는가?
- 토큰이 CSPRNG 기반이며 최소 64비트 이상의 충분한 엔트로피를 갖는가?
- 제한적인 토큰 값 변경 테스트에서도 다른 객체가 반환되는가?
- URL 만료와 일회성 사용이 서버 측에서 강제되는가?
- ZIP 코드, 생년월일, 성 등을 이용한 추가 인증에 요청 횟수 제한이나
잠금 정책이 적용되는가? - HAR, API, WebSocket, HTML 초기 데이터에 화면보다 많은 개인정보가
포함되는가? - URL의 Query/Path 값이 분석 도구, Referrer 또는 로그를 통해 외부로
유출될 수 있는가? - 링크를 인증된 브라우저 세션이나 특정 기기에 연결할 수 있는가?
실무 가치 평가
웹·인증 모의해킹 업무와 직접 연결되는 연구다.
특히 Magic Link 형태의 기능을 단순히 IDOR 관점에서만 확인하는 대신,
인증 토큰의 유효 기간 → 엔트로피 → 추가 인증 → API 과다 노출 → 사용자
정보 재구성까지 하나의 공격 경로로 점검하도록 관점을 확장할 수 있다는
점에서 실무 가치가 높다.
결론
SMS 링크는 단순한 편의 기능이 아니라 경우에 따라 인증 토큰 자체가 될
수 있다.
따라서 SMS 전달 과정에서 링크가 노출될 가능성을 전제로 설계해야 한다.
링크를 가지고 있다는 사실만으로 사용자의 신원을 인정해서는 안 되며, 짧은
유효 기간, 충분한 토큰 엔트로피, 서버 측 세션 바인딩, 일회성 사용, 요청
횟수 제한, 최소한의 개인정보 제공을 함께 적용해야 한다.
'Hack > Mobile' 카테고리의 다른 글
| When Agents See Differently: Exposing UI Desynchronization Threats in Mobile Agents (0) | 2026.09.20 |
|---|---|
| One Click to Leak: Characterizing the Real-World Usage and Threat Impact of MNO-based Single Sign-On Websites (0) | 2026.09.15 |
| [Mobile] MITM (Man In the Middle) (0) | 2025.05.26 |
| [Android] java.net.URL Parsing 취약점 (0) | 2022.12.16 |
| Android Anti-Repacking Bypass (0) | 2022.11.02 |
댓글