거의 백만 장의 여권과 사진 신분증이 공개 인터넷에 무방비 상태로 남겨졌다.
Source: The Verge
몇 글자와 숫자를 웹 브라우저에 입력했을 뿐인데, 나는 완전한 낯선 사람들의 신분증을 바라보며 입을 벌리고 있었다. 독일 출신 젊은 여성의 여권. 안경을 머리 위에 얹은 스페인 남성의 여권. 또 다른 남성의 운전면허증 앞면과 뒷면, 얼굴에 전형적인 어리둥절한 표정이 있었다.
그들은 모두 비밀번호나 접근 제어 없이 공개 URL에 무방비 상태로 놓여 있었다. 내가 링크를 보내면, 누군가의 여권을 바로 볼 수 있었다.
“사람들이 이 데이터를 찾아서 재판매할 것이고, 큰 피해가 발생할 겁니다. 가능한 한 빨리 조치를 취해야 합니다.”라고 Sammy Azdoufal은 5월에 말했다.
Azdoufal은 Claude Code를 사용해 모든 DJI Romo 로봇 청소기와 백만 대의 베이비 모니터 및 보안 카메라가 놀라울 정도로 쉽게 해킹될 수 있음을 발견한 보안 연구원이다. 이번에는 그가 985,000개가 넘는 사진 신분증이 공개 인터넷에 놓여 있어 어느 정도 실력 있는 해커가 쉽게 탈취할 수 있음을 밝혀냈다.
스페인에 있는 대마 클럽을 방문한 적이 있다면, Azdoufal에 따르면 당신의 사진 신분증도 그 중에 포함됐을 가능성이 높다—아마도 전화번호, 주소, 좋아하는 대마 품종, 그리고 매달 소비량까지도 포함됐을 것이다. Azdoufal은 유명인들도 데이터베이스에 들어있으며, 전 세계에서 온 방문객들, 미국에서 온 30,000명도 포함돼 있다고 전한다. “유명인도 있어요,”라고 Azdoufal이 말한다. “대마를 피우는 걸 모두에게 알리고 싶지 않은 사람들 말이죠.”
아래는 Azdoufal의 자동화 도구가 확인할 수 있었던 사용자 기반의 대략적인 요약과 몇몇 클럽 이름이다:
이미지: Sammy Azdoufal
문제는 클럽이 신분증을 보호하지 않았다는 것이 아니다. 아일랜드 기업인 Cannabis Club Systems(줄여서 CCS, 이전 명칭 Nefos Solutions)는 이 클럽들이 판매, 회계, 입장을 관리하기 위해 사용하는 소프트웨어를 개발·제공한다. 여기에는 접수 담당자가 신분증과 셀카를 Nefos 클라우드에 업로드하는 검증 시스템도 포함돼 있다.
전통적으로 클럽에 들어가려면 매번 사진 신분증을 제시해야 했다. 하지만 검증 시스템을 도입하면서, 접수 담당자는 저장된 신분증을 꺼내 얼굴이 일치하는지 확인할 수 있게 되었다. 또한 QR 코드를 스캔해 빠르게 입장할 수 있게 해주는 PuffPal이라는 선택적 앱도 있다.
그런데 Azdoufal이 PuffPal 앱을 디컴파일하면서, 그는 Nefos가 전혀 의미 있는 보안 수준을 갖추지 못했음을 보고서에 설명한다. 그는 앱 내부에 Stripe 결제 플랫폼용 비밀 키가 평문으로 포함돼 있음을 발견했고, 번호 하나만 바꾸면 어느 회원의 프로필이든 조회할 수 있음을 알게 되었다. 만약 그 프로필에 전화번호, 집 주소, 여권, 대마 선호도 등이 포함돼 있다면, 그는 이제 그 정보에도 접근할 수 있게 된 것이다.
그리고 나서 그는 여권, 운전면허증, 사진 신분증이 다음과 같은 단순한 공개 URL에 저장돼 있음을 발견했다: https://ccsnubev2.com/v8/images/_{club}/ID/{user_id}-front.jpg
그 클럽들은 매일 5,000개의 새로운 사진 신분증을 이런 보안이 전혀 없는 URL로 업로드하고 있었다고 Azdoufal은 전한다.
그는 또한 공개 인터넷을 통해 접근 가능한 관리자 포털을 찾았으며, 클럽 자체 계정의 보안 수준이 매우 낮아 현대 GPU로 몇 분 안에 크래킹될 수 있는 비밀번호를 사용하고 있음을 확인했다. PuffPal 앱을 통한 클럽과 회원 간의 개인 채팅도 취약했다.
좋은 소식: 우리가 Nefos에 연락한 지 약 한 달 정도 지나서, 회사는 의미 있는 조치를 취하기 시작한 듯 보인다. 회사는 전체 PuffPal 시스템과 취약한 API를 모두 차단하고 수정이 완료될 때까지 운영을 중단한다고 밝혔다—Azdoufal이 6월 10일에 진행한 최신 테스트에서는 여권 이미지와 개인 데이터가 안전하게 보호되고 있었다. Nefos는 또한 현지 당국에 통보했으며, 수정 작업, 벌금 지급, 사용자에게 발생한 일을 알리는 책임을 지겠다고 말했다.
전화 인터뷰에서 Nefos 공동 설립자 Andreas Nilsen은 The Verge에 데이터 유출에 대해 아일랜드 데이터 보호 당국(DPC)과 협의 중이라고 전했으며, 이는 DPC 대변인 Evan O’Leary가 이메일로 확인한 사실이다. “잠재적으로 노출된 모든 사람에게 소통해야 합니다,”라고 Nilsen은 말하며 DPC가 올바른 절차를 알려주길 바란다고 덧붙였다. 현재까지 Azdoufal 외에 외부인이 데이터를 접근했다는 증거는 없다고 주장한다.
하지만 Nefos가 위협을 심각하게 받아들이는 데는 너무 오래 걸렸다. Azdoufal이 먼저 연락한 뒤 5일이 지나고, 이야기가 나오기 전까지도 회사는 답변을 하지 않았다. 그 후 Nefos는 비즈니스를 위험에 빠뜨리기보다는 구멍을 임시로 메우는 식으로 대응했다.
나는 6월 초에 이 이야기를 쓰기로 준비하고 있었다. Azdoufal이 Nefos가 결국 여권 이미지를 잠궈 놓았다고 알려줬을 때였다. 그런데 6월 4일, 나는 Azdoufal에게 그의 여권이 다시 온라인에 노출돼 있다는 사실을 보여주며 놀라게 했다.
그 이유는 Nefos가 아직 클럽들이 PuffPal 앱을 사용하는 것을 중단하지 않았고, 클럽들이 잠긴 이미지가 이전처럼 보이지 않는다며 불만을 제기했기 때문이다—그래서 Nefos는 이미지를 다시 열어 주었다. Nilsen은 Azdoufal과 내가 연락한 이후 “이미지가 70% 정도는 잠겨 있다”고 주장하지만, Nefos가 고객을 위협보다 우선시하는 결정을 내렸음은 명백하다.
6월 9일, Azdoufal은 Nefos가 토큰으로 여권 이미지와 사진 신분증을 잠궈 놓았음에도 불구하고 다른 모든 사용자 프로필 정보—여권 번호, 전화번호, 이메일 주소, 집 주소 등—가 여전히 쉽게 접근 가능하다는 것을 발견했다.
해커가 해야 할 일은 단 한 줄의 명령뿐이다:
curl -X POST https://ccsnubev2.com/v8/api/userProfile.php -d "user_id=[NUMBER]&[CLUB NAME]=test&language=en"
이 명령을 실행하면 서버가 개인 정보를 한꺼번에 내놓는다. 우리가 이 문제를 Nefos에 알린 뒤, 그 구멍도 폐쇄되었다.
그럼에도 불구하고 회사가 이렇게 부주의할 수 있었던 이유는? “결국 책임은 우리에게 있다”고 Nilsen은 말한다. 하지만 그는 PuffPal 앱과 취약한 API를 개발한 외주 업체인 9Series를 지목한다. (출판 시점에는 9Series의 답변이 없었다.)
이제 PuffPal이 중단되면서, Nefos는 모든 클럽에 회원들이 QR 코드를 사용해 입장할 수 없게 되었음을 알리는 이메일을 보내고 있다—하지만 회원의 RFID 카드를 스캔하거나 전화번호를 입력하면 여전히 Nefos 서버에서 신분증을 조회할 수 있다 등 여러 방법이 남아 있다.
Nilsen은 클럽이 요구한다 해도 보안이 취약한 PuffPal을 다시 출시하지 않을 것이라고 주장한다. “우리는 그들에게 불가능하다고 말할 겁니다,”라고 그는 말한다. “이번 사태 이후에는 독립 보안 연구원이 검증하고 100% 안전하
