마침 타이밍이 절묘함. 우리는 최근 연락처 매칭 방식에 대한 RFC를 공개했음. 이 방식은 열거 공격(enumeration attack)에 강하지만, 그만큼 발견 가능성(discovery)이 줄어드는 구조임. 지금 피드백을 받고 있으니 참고 바람 — Contact Import RFC
나도 비슷한 문제를 다루면서 Private Set Intersection을 살펴봤음 (위키 링크). 이는 Zero Knowledge Proofs와 관련이 있고, 전화번호를 평문으로 공유하지 않아 공격을 원천 차단할 수 있음. 다만, 이 접근은 과할 수도 있고 현재 기술로는 확장성에 한계가 있을 수 있음
RFC가 보안은 다루지만 프라이버시는 언급하지 않음. 결국 서버나 인스턴스를 신뢰해야 하는 구조임. 실제 번호 대신 해시를 쓰면 좋겠지만, 그러면 번호 검증이 불가능해져서 스푸핑 방지가 어려워짐. EFF나 Let’s Encrypt 같은 신뢰할 수 있는 제3자가 번호를 검증하고 앱이 해시만 가져오는 방식도 가능할 듯함
좋은 시점에 이 얘기를 꺼내줘서 반가움. 내 앱도 곧 연락처 동기화를 추가할 예정이라 보안성과 프라이버시를 고민 중임. 혹시 이 RFC를 오픈소스로 공개할 계획이 있는지 궁금함
기사에서 인용된 부분이 흥미로움. 2021년 Facebook 데이터 유출 당시 노출된 5억 개의 전화번호 중 절반이 여전히 WhatsApp에서 활성 상태였다고 함. 이는 유출된 번호가 수년간 스팸 전화나 사기에 노출될 수 있음을 보여줌. 전화번호의 ‘** 반감기**’가 약 4~5년이라는 뜻 같음
미국인들이 어릴 때 받은 번호를 성인이 되어서도 그대로 쓰는 걸 보면 놀라움. 나는 예전에 매년 번호를 바꾸곤 했음
이번 취약점은 특정 전화번호가 WhatsApp 계정과 연결되어 있는지 확인할 수 있는 엔드포인트 때문이었음. 거의 모든 번호에 대해 질의가 가능했지만, 큰 취약점으로 보이진 않음
하지만 왜 전화번호로 계정 존재 여부를 확인할 수 있게 하는지 의문임. 이메일 주소로는 이런 확인이 프라이버시 침해로 간주되는데, 전화번호는 왜 예외인지 이해가 안 됨
최근 “WatApp”, “whtas app” 같은 이름으로 오는 피싱 SMS를 많이 받음. 이런 유출로 인해 공격 효율이 높아진 듯함. 번호 없이 발신하는 문자라 차단도 어려움
사실 나 같은 사람에게는 이게 편리한 기능임. 인터넷에서 찾은 배관공 번호를 WhatsApp에 입력해 프로필이 있으면 바로 메시지를 보내고, 없으면 전화나 SMS로 연락함
이건 큰 유출이라기보단, 사용자가 공개 프로필을 만들어둔 상태에서 번호로 검색이 가능했던 것뿐임. 연구자들이 무작위 번호를 조회해 공개된 정보를 수집했을 뿐, 비공개 데이터는 아님. Facebook이 rate limit을 걸지 않아 대규모로 수집이 가능했지만, 어차피 공개된 정보였음. 민감한 정보를 공개 프로필에 올린 건 사용자 선택의 문제임
가장 안타까운 일 중 하나임. 인류는 가장 인기 있는 개인 메신저를 가질 기회가 있었지만, 2014년 190억 달러라는 금액이 Brian Acton의 눈을 멀게 했음. 지금 Signal에서 하는 일로는 수십억 사용자 신뢰를 판 대가를 되돌릴 수 없음
EU가 이 거래를 막았어야 했음. 수익 모델도 없는 회사가 190억 달러의 가치를 가진다는 건 말이 안 됐고, Facebook이 노린 건 사용자 데이터였음. 대신 USB-C 강제 같은 걸로 만족했으니 허탈함
이건 단순히 전화번호 열거(enumeration) 문제임. 코드 결함이 아니라 명시된 기능이라 ‘보안 취약점’이라 부르긴 애매함
하지만 rate limiting이 전혀 없는 민감한 엔드포인트는 결함으로 볼 수 있음
단일 번호라도 계정 존재 여부를 확인할 수 있다면 프라이버시 침해임. 만약 그 서비스가 부적절하거나 민감한 사이트라면, 번호만으로 가입 여부를 알아내는 건 심각한 문제임. 이런 정보를 자동화해 프로파일링까지 가능하다는 점이 위험함
초당 1억 건 수준의 요청이 가능했다니, 그건 정말 말도 안 되는 수준임
오늘 아침 갑자기 WhatsApp에서 로그아웃된 걸 발견했음. 재로그인하려 했지만 인증 SMS가 오지 않았고, 다행히 “전화로 받기”로 복구 코드를 받았음. 하지만 2FA PIN을 설정하지 않아 복구가 막혔고, 이메일 복구도 설정 안 되어 있었음. 지금은 7일 대기 중임. 번호는 여전히 내 소유인데 계정을 복구할 수 없다는 게 이상함. 모든 사용자에게 2FA와 복구 이메일 설정을 강력히 권장함
단순히 전화번호만으로 계정을 복구할 수 있다면 오히려 보안상 위험임. 번호가 재할당되면 새 사용자가 이전 사용자의 대화와 연락처를 물려받게 되기 때문임
이건 2020년에 발표된 WhatsApp, Telegram, Signal의 연락처 검색 논문과 유사함 (링크). 결국 전체 전화번호 집합을 열거하지 못하게 막는 건 서버 측 rate limit뿐임. 각 메신저의 제한이 충분한지 궁금함
예전에 이런 연구에 참여한 적 있음. 국가별 휴대전화 접두사 목록이 매우 유용했음. 다만 참고된 libphonegen 링크는 찾지 못했음
핵심은 메시징 서비스의 중앙화 위험임. 사실 중앙화는 어떤 분야에서도 문제지만, 사용자들은 여전히 편리함과 통합성을 원함. 이를 분산 시스템에서 구현하는 건 정말 어려운 일임
초기에 이메일처럼 개방형으로 출발했더라면 어땠을까 생각함. 90년대에 “이메일 주소가 뭐야?” 대신 “공개키가 뭐야? ”라고 물었다면 지금쯤 디지털 유토피아에 살고 있었을지도 모름
Hacker News 의견