---
title: "여권 98만 건이 그냥 URL로 열렸다: 대마초 클럽 SaaS의 황당한 보안 사고"
published: 2026-06-28T11:22:49.000Z
canonical: https://jeff.news/article/4446
---
# 여권 98만 건이 그냥 URL로 열렸다: 대마초 클럽 SaaS의 황당한 보안 사고

스페인 대마초 클럽들이 쓰는 소프트웨어에서 여권과 신분증 이미지 약 98만5천 건이 인증 없이 공개 URL로 노출됐어. 보안 연구자는 PuffPal 앱을 분석하다가 평문 Stripe 키, 번호만 바꾸면 열리는 사용자 프로필, 공개 이미지 경로까지 발견했어. 업체는 뒤늦게 취약 API와 PuffPal 시스템을 중단했지만, EU의 72시간 침해 통지 의무도 지키지 못했다고 인정했어.

- 거의 100만 건짜리 신분증 유출인데, 방식이 너무 허술해서 더 충격적이야
  - 여권, 운전면허증, 사진 신분증이 비밀번호도 인증도 없이 공개 URL에 놓여 있었음
  - 링크만 알면 누구나 남의 여권을 볼 수 있는 상태였다는 얘기
  - 보안 연구자 Sammy Azdoufal은 98만5천 건이 넘는 사진 신분증을 확인했다고 말함

- 피해 범위는 스페인 대마초 클럽 방문자들이 중심이야
  - 스페인 대마초 클럽에 간 적이 있다면 여권이나 신분증이 포함됐을 가능성이 있다고 함
  - 전화번호, 주소, 선호하는 대마초 종류, 월간 소비량 같은 정보까지 함께 노출됐을 수 있음
  - 미국 방문자만 약 3만 명이 포함됐고, 유명인도 데이터베이스에 있었다고 함. 이건 단순 개인정보를 넘어 사생활 폭탄임

> [!WARNING]
> 여권 이미지뿐 아니라 대마초 소비 정보, 주소, 연락처까지 묶인 사고라 피해 민감도가 높아. 신원 도용과 협박, 평판 피해가 동시에 가능한 조합임.

- 문제의 중심에는 Cannabis Club Systems, 현재 이름으로는 Nefos Solutions라는 아일랜드 회사가 있어
  - 이 회사는 클럽들이 판매, 회계, 입장 관리에 쓰는 소프트웨어를 제공함
  - 접수 직원이 회원의 신분증과 셀카를 Nefos 클라우드에 올려두고, 다음 방문 때 얼굴 대조에 쓰는 구조였음
  - PuffPal이라는 앱은 QR 코드로 더 빠르게 입장하게 해주는 옵션이었고, 여기서 취약점 실마리가 나옴

- 연구자가 PuffPal 앱을 뜯어보자 기본 보안이 줄줄이 무너져 있었어
  - Stripe 결제 플랫폼의 비밀 키가 앱 안에 평문으로 들어 있었음
  - 회원 프로필은 숫자 하나만 바꾸면 다른 사람 정보로 접근할 수 있었다고 함
  - 프로필에 전화번호, 집주소, 여권, 대마초 취향이 들어 있으면 그것도 같이 볼 수 있는 구조였음

- 여권 이미지 저장 방식은 거의 교과서적인 사고 사례야
  - 이미지 URL은 대략 `ccsnubev2.com/v8/images/{클럽}/ID/{사용자_id}-front.jpg` 같은 형태였음
  - 인증 토큰이나 권한 확인 없이 경로만 맞추면 이미지가 열리는 구조
  - Azdoufal에 따르면 클럽들은 이런 취약한 URL로 하루 약 5천 건의 새 신분증 이미지를 업로드하고 있었음

- 관리자 포털과 앱 메시지도 안전하지 않았어
  - 관리자 포털은 공용 인터넷에서 접근 가능했음
  - 클럽 계정 비밀번호는 최신 GPU로 몇 분 안에 깨질 수 있을 정도로 약했다고 설명됨
  - PuffPal 앱에서 클럽과 회원이 주고받은 비공개 채팅 메시지도 취약했음

- 더 답답한 건 대응 속도야. Nefos는 바로 멈춘 게 아니라 한동안 구멍을 덮었다 열었다 했어
  - 연구자가 먼저 연락했고, The Verge가 취재에 들어간 뒤에도 회사가 답하는 데 5일이 걸림
  - 처음에는 여권 이미지를 잠갔다가, 클럽들이 기존처럼 이미지가 안 보인다고 불평하자 다시 풀어버린 정황이 나옴
  - 공동창업자 Andreas Nilsen은 이미지가 70% 정도의 시간 동안 잠겨 있었다고 말했지만, 실제로는 고객 불편을 보안보다 앞에 둔 셈임

- 6월 9일에는 이미지가 잠긴 뒤에도 프로필 API가 여전히 뚫려 있었어
  - 단순한 curl POST 요청으로 여권번호, 전화번호, 이메일, 집주소 같은 개인정보가 그대로 반환됐다고 함
  - The Verge가 이 문제를 전달한 뒤에야 그 구멍도 닫힘
  - 이 정도면 프론트 앱 문제가 아니라 백엔드 API 권한 설계가 전반적으로 부실했던 거임

- 현재 Nefos는 PuffPal 전체 시스템과 취약 API를 중단했다고 밝혔어
  - 6월 10일 기준 Azdoufal의 재테스트에서는 여권 이미지와 개인정보가 보호되는 것으로 보였다고 함
  - 회사는 현지 당국에 알렸고, 수정 비용과 벌금, 사용자 통지를 책임지겠다고 말함
  - 아일랜드 데이터보호위원회도 Nefos와 연락 중이라는 사실을 확인함

- 법적 후폭풍도 피하기 어려워 보여
  - Nilsen은 EU 법상 침해 사실을 72시간 안에 신고해야 했다는 점을 알고 있었다고 말함
  - 하지만 실제로는 그 의무를 지키지 못했고, 벌금을 받을 것 같다고 인정함
  - 회사는 외주 개발사 9Series가 PuffPal 앱과 취약 API를 만들었다고 설명했지만, 최종 책임은 자신들에게 있다고도 말함

- 비슷한 사고가 이미 반복되고 있다는 점도 찝찝해
  - 기사에서는 지난달 영국 비자 포털도 URL을 추측하면 최소 10만 건의 여권이 노출되는 사고를 냈다고 언급함
  - 결국 패턴은 같아. 민감한 파일을 객체 저장소나 웹 서버에 올려놓고, 권한 확인 없이 URL로 접근하게 만든 것
  - 개발자 입장에서는 ‘파일 URL은 비밀이 아니다’라는 말을 다시 새겨야 하는 사례임

---
## 기술 맥락
- 이 사고의 핵심은 암호화 같은 고급 보안 이전에 접근 제어가 빠져 있었다는 점이에요. 여권 이미지는 저장소에 올라가는 순간부터 사용자별 권한 확인이 붙어야 해요. URL을 안다고 볼 수 있으면 안 되고, 요청한 사람이 그 클럽의 직원인지, 그 회원 정보를 볼 권한이 있는지 서버가 매번 확인해야 하거든요.

- IDOR가 무서운 이유는 공격 난도가 낮기 때문이에요. 복잡한 exploit이 아니라 user_id 같은 숫자를 바꾸는 것만으로 남의 데이터가 나오면 자동화가 너무 쉬워져요. 이번처럼 거의 100만 건 규모의 데이터가 있으면, 공격자는 범위를 돌면서 대량 수집을 할 수 있어요.

- 모바일 앱에 비밀 키를 넣은 것도 전형적인 실수예요. 앱은 사용자의 기기에서 실행되기 때문에 결국 뜯어볼 수 있다고 봐야 해요. Stripe 같은 결제 비밀 키는 서버에만 있어야 하고, 앱은 서버를 통해 제한된 작업만 요청해야 해요.

- API를 잠그는 방식도 단순히 이미지만 토큰으로 막는다고 끝나지 않아요. 기사에서 이미지가 잠긴 뒤에도 프로필 API로 여권번호와 주소가 나왔다는 게 그 증거예요. 개인정보 시스템에서는 파일, 프로필, 메시지, 관리자 포털을 같은 위협 모델 안에서 봐야 해요.

## 핵심 포인트

- 약 98만5천 건의 여권·운전면허증·사진 신분증이 인증 없는 공개 URL에 노출됨
- 스페인 대마초 클럽 방문자 정보가 포함됐고 미국 방문자만 약 3만 명으로 언급됨
- PuffPal 앱에는 Stripe 비밀 키가 평문으로 들어 있었고, 사용자 번호 변경만으로 다른 회원 프로필 접근이 가능했음
- 하루 약 5천 건의 새 신분증 이미지가 취약한 URL 구조로 업로드되고 있었음
- Nefos는 PuffPal과 취약 API를 중단했고 아일랜드 데이터보호위원회와 연락 중이라고 밝힘

## 인사이트

이 사고는 ‘클라우드에 올렸으니 안전하겠지’가 얼마나 위험한 착각인지 보여줘. 신분증 이미지, 취향 정보, 주소, 연락처 같은 민감정보를 다루면서 객체 접근 제어와 API 인증이 무너져 있으면, 그건 해킹이라기보다 인터넷에 개인정보를 전시한 것에 가까워.
