1P by GN⁺ 6시간전 | ★ favorite | 댓글 1개
  • 19억 5,747만 개의 고유 이메일 주소13억 개의 비밀번호가 포함된 대규모 데이터 세트가 공개되어, Have I Been Pwned(HIBP)에 새로 추가됨
  • 이 중 6억 2,500만 개 비밀번호는 이전에 한 번도 발견되지 않은 것으로, HIBP가 처리한 데이터 중 가장 방대한 규모
  • 데이터는 Synthient의 위협 인텔리전스 플랫폼에서 수집된 자격 증명 채우기(credential stuffing) 자료로, 여러 침해 사고에서 유출된 이메일·비밀번호 조합이 포함됨
  • HIBP는 데이터의 진위를 검증하기 위해 구독자들에게 직접 확인을 요청했으며, 일부는 여전히 실제 사용 중인 비밀번호가 포함되어 있었음
  • 이번 색인은 Gmail 유출이 아닌 악성코드 감염 피해자의 자격 증명 수집 결과이며, 사용자들은 HIBP나 Pwned Passwords를 통해 노출 여부를 확인 가능

데이터 개요

  • 데이터 세트에는 19억 5,747만 6,021개의 고유 이메일 주소13억 개의 비밀번호가 포함됨
    • 그중 6억 2,500만 개 비밀번호는 HIBP에서 처음 발견된 항목
    • HIBP가 지금까지 처리한 데이터 중 가장 큰 규모로, 이전 최대 유출보다 약 3배 큼
  • 데이터는 Synthient가 수집한 위협 인텔리전스 자료의 일부로, 자격 증명 채우기 목록을 포함
    • 자격 증명 채우기 데이터는 여러 침해 사고에서 유출된 이메일·비밀번호 조합이 재활용되어 생성됨
    • 동일한 비밀번호를 여러 사이트에서 사용하는 관행으로 인해, 한 번의 유출이 다른 서비스 계정 침해로 이어질 수 있음

데이터 검증 과정

  • 검증은 작성자의 개인 이메일 주소로 시작되었으며, 일부 오래된 비밀번호가 실제로 일치함
    • 다른 비밀번호들은 익숙하지 않았고, 일부는 IP 주소 형태 등 비정상적인 값이 포함됨
  • HIBP 구독자들에게도 검증을 요청하여 여러 사례를 수집함
    • 한 사용자는 오래된 비밀번호와 최근 비밀번호가 모두 포함되어 있었으며, 즉시 변경 조치를 취함
    • 또 다른 사용자는 10~20년 전 사용한 비밀번호가 포함되어 있었음
    • 일부 응답자는 여전히 활성 계정에서 사용 중인 비밀번호가 노출되어 있었음
  • 검증 결과, 데이터에는 오래된 정보와 실제 사용 중인 비밀번호가 혼재되어 있음
    • 일부 항목은 자동 생성된 비밀번호이거나 오래되어 기억나지 않는 경우도 있었음

Pwned Passwords 검색 기능

  • HIBP의 Pwned Passwords 서비스는 이메일 주소와 비밀번호를 분리하여 저장함
    • 이는 보안 및 개인정보 보호를 위한 조치로, 이메일-비밀번호 쌍이 노출될 위험을 방지함
  • 사용자는 다음 방법으로 비밀번호 노출 여부를 확인 가능
    1. Pwned Passwords 검색 페이지 이용
    2. k-anonymity API를 통한 코드 기반 검색
    3. 1Password Watchtower 기능을 통한 자동 점검
  • 모든 4자리 PIN 조합이 이미 유출된 상태이며, HIBP 데이터 기반의 PIN 사용 패턴 시각화 자료도 존재함

Gmail 유출 아님

  • 이번 사건은 Gmail 보안 취약점과 무관하며, 악성코드 감염으로 수집된 피해자 자격 증명 데이터임
  • 전체 데이터에는 3,200만 개의 이메일 도메인이 포함되어 있으며, 그중 gmail.com은 3억 9,400만 개
    • Gmail 주소는 전체의 약 20%에 불과하며, 나머지 80%는 다른 도메인 소속
    • Google의 보안 결함과는 관련 없음

기술적 처리 과정

  • 이번 데이터는 이전 최대 유출보다 약 3배 큰 규모로, 처리 과정이 매우 복잡함
    • HIBP는 Azure SQL Hyperscale(80코어) 환경에서 약 2주간 데이터 처리 수행
    • 이메일 주소의 SHA1 해시 생성 과정에서 대량 업데이트가 실패하여, 1백만 건 단위 배치 처리로 전환
  • 5.9백만 명의 구독자 중 2.9백만 명이 이번 데이터에 포함되어 있음
    • 대량 이메일 발송 시 스팸 필터링 및 서버 제한을 피하기 위해 점진적 발송 전략을 채택
    • 시간당 1.015배씩 증가하는 속도로 발송량을 조절, 하루 약 45%씩 증가
    • DKIM, DMARC, SPF 설정 및 전용 IP 사용으로 신뢰도 유지
  • Pwned Passwords API 응답 크기는 평균 26KB에서 40KB로 증가
    • 이는 해시 범위 크기가 약 50% 커졌기 때문이며, brotli 압축을 통해 효율 유지

결론 및 권장 조치

  • 이번 데이터는 HIBP에서 “Synthient Credential Stuffing Threat Data” 로 검색 가능
    • 이전 Synthient 데이터와는 별개의 데이터 세트이며, 일부 중복 존재
  • HIBP는 데이터의 무결성을 검증하고, 개인정보 보호 중심의 검색 기능을 제공
  • 사용자에게 권장되는 보안 조치
    • 비밀번호 관리자 사용
    • 강력하고 고유한 비밀번호 생성
    • 패스키(passkey) 사용 및 다중 인증(MFA) 활성화
  • HIBP는 이번 작업이 매우 시간·비용이 많이 든 프로젝트였음을 언급하며,
    사용자들이 데이터 접근 요청 대신 보안 습관 개선에 집중할 것을 당부함
Hacker News 의견
  • 이제까지 너무 많은 데이터 유출이 있었음. 내 주소, SSN, 전화번호, 이메일 등 모든 정보가 여러 번 노출된 것 같음
    대학, 구직 사이트, 소셜미디어 등에서 유출 통보를 받았고, 그 외에도 합법적인 빅데이터 분석으로 내 정보가 돌아다니고 있을 것임
    지금은 Bitwarden에 강력한 비밀번호를 저장해 관리하고 있지만, 예전에 쓰던 오래된 계정들이 여전히 위험할 것 같음
    솔직히 이제 와서 뭘 할 수 있을지 모르겠음. 내 정보가 이미 밖에 있다는 게 아쉬움

    • 각 계정마다 다른 이메일 별칭과 비밀번호 관리자를 사용함
      여가 시간에 오래된 계정들을 정리 중임. 덕분에 스팸이나 유출 출처를 이메일 주소로 바로 파악할 수 있음
      Sieve 필터링을 이용하면 훨씬 정교하게 분류 가능함. ‘envelope to’와 ‘header to’를 함께 쓰면 BCC나 별칭 메일도 정확히 걸러낼 수 있음
      관련 문서: RFC5228 Sieve Filtering
      예전엔 내 오래된 비밀번호가 포함된 스팸 메일 덕분에 잊고 있던 계정을 복구한 적도 있음
    • Bitwarden 정말 최고임. 개인적으로 주변에 추천 중인데, 반응은 미미함
      아내는 이미 온라인 정보 보호는 끝난 싸움이라고 함. 어쩌면 맞는 말일지도 모름
    • 주소는 대부분 공공기록임. fastpeoplesearch.com 같은 사이트에서 검색하면 바로 나옴
      전화번호도 예전엔 전화번호부에 다 있었음. 여전히 공개 정보처럼 느껴짐
    • 나도 비슷한 상황임. 미국의 3대 신용평가사에 신용동결을 걸어두는 게 중요함
      예전에 누군가 내 정보로 케이블 TV를 개통해서 신용기록에서 지우느라 고생했음
    • 군 복무 중이었는데, 중국이 내 DNA 프로필까지 훔쳐감. 이제는 그냥 체념했음
  • Troy가 이제 DB 공간을 많이 절약할 수 있을 듯함
    그냥

    def email_compromised(email):
        return True
    

    이렇게 해도 될 정도로 모든 이메일이 털린 기분임

    • 꼭 그렇진 않음. 내 주요 이메일 두 개는 아직도 깨끗하게 나옴
      대신 잡다한 용도의 이메일은 9번이나 유출 기록이 있음
  • 이번 데이터에는 Spotify의 미공개 유출 정보가 포함된 것 같음
    2020년 초에 약한 비밀번호로 된 내 Spotify 계정이 미국 IP에서 로그인된 적이 있었음
    몇 시간 후 Spotify가 자동으로 비밀번호 재설정을 보냈지만, 공식적인 유출 통보는 없었음
    이제야 그 이메일이 HIBP에 나타남

    • Spotify 같은 대형 회사라면 이런 유출을 공식 보고했어야 함
  • Troy Hunt의 작업은 존경하지만, Have I Been Pwned에서 내 이메일을 검색해도 실질적인 조치 방법이 없음
    사이트는 “위험하니 비밀번호를 잘 관리하라”는 메시지뿐임
    500개 넘는 비밀번호를 전부 바꾸는 건 현실적으로 불가능함. 결국 Bitwarden, 1Password, Chrome 등 비밀번호 관리자에 의존해야 함

    • 각 사이트마다 랜덤한 고유 비밀번호를 써야 함
      나도 예전엔 같은 비밀번호를 재사용했다가 모든 계정이 털린 적이 있음
      지금은 비밀번호 관리자의 마스터 비밀번호, Gmail, 디스크 암호화용 비밀번호만 외우고 나머지는 전부 관리자가 생성함
      가능한 곳엔 2FA(U2F/WebAuthn) 도 활성화함
    • 맞음. 결국 비밀번호 관리자가 핵심임
    • HIBP Passwords 페이지에서 비밀번호를 직접 입력해 유출 여부를 안전하게 확인할 수 있음
      1Password도 같은 방식으로 작동하며, 계정명은 저장하지 않아 새로운 유출 위험이 없음
    • 이번 데이터셋은 여러 유출을 통합한 집합 데이터라 출처를 알 수 없음
    • 예전에 HIBP 알림을 받고 사용자 비밀번호를 즉시 초기화한 적이 있음
      하지만 대부분은 이미 예전 유출에서 나온 비밀번호라, 불필요한 조치를 피하려고 함
  • 여러 커스텀 이메일 주소를 쓰다 보니 HIBP에서 확인하려면 유료 구독이 필요함
    수백 개의 이메일을 운영 중이라 불편함. 그래도 각 사이트별로 고유 주소를 쓰는 건 여전히 가치 있음

    • 예전엔 도메인 검색 기능이 무료였음. 2017년에 등록했는데 2020년, 2022년에 유출 알림을 받았음
    • 사실 별칭 이메일을 쓰면 유출 시점에 바로 알 수 있음. 이메일만으론 신분 도용은 어렵다는 점도 있음
    • 나도 같은 상황임. 비밀번호 관리자에서 모든 이메일을 추적하지만, HIBP에 하나씩 확인하는 건 번거로움
    • 그냥 모든 이메일이 이미 노출됐다고 가정하는 게 현실적임. 이메일은 비밀이 아님
    • 결국 비밀번호가 진짜 비밀임. 강력한 비밀번호만 유지하면 괜찮음
  • 예전에 Facebook 유출로 내 오래된 이메일이 털렸는데, 그 도메인을 다른 사람이 재등록해서 계정 탈취 시도를 했음
    다행히 2FA와 Facebook의 보안 경고 덕분에 막을 수 있었음
    사용하지 않는 이메일 주소는 반드시 계정에서 삭제해야 함

    • 개인 도메인을 이메일로 쓰면 평생 유지비가 듦. 도메인을 놓치면 다른 사람이 사서 계정 복구를 시도할 수 있음
      iCloud나 Gmail에서 커스텀 도메인을 쉽게 연결할 수 있게 되면서 이런 위험이 커졌음
    • 한 계정을 노리기 위해 그렇게까지 하는 게 놀라움
    • 그 사람이 굳이 돈을 내고 도메인을 사서 시도했다는 게 신기함. 유명인도 아닌데 말임
  • Azure SQL Hyperscale을 80코어로 2주간 돌렸다는 부분이 흥미로움
    이메일과 비밀번호만 관리하는데 SQL은 과도한 선택처럼 보임.
    150억 건이라 해도 600GB 정도면 일반 서버로도 처리 가능할 것 같음

    • 실제로는 19억 개의 SHA1 해시 업데이트가 문제였다고 함
      인플레이스 업데이트가 느려서 별도 테이블을 만들었고, 이메일 알림을 보낼 때는 메일 제공자 제한에도 걸렸다고 함
    • 나도 같은 생각임. Troy가 Microsoft와의 관계 덕분에 Azure를 쓴 듯함
      “Microsoft Regional Director and MVP”라는 타이틀이 혼란스러움
    • Azure SQL은 확실히 잘못된 선택임. 단순히 해시 검색이라면 이진 파일 기반 구조가 훨씬 효율적임
      SHA1 해시를 정렬한 20GB짜리 파일을 만들고, 바이너리 서치나 해시 분포 기반 인덱스로 1회 I/O 조회가 가능함
      65,536개 청크로 나눠 정렬하면 메모리 문제도 해결됨
      이런 구조는 Blob Storage에서 Azure SQL보다 약 50배 저렴하게 운영 가능함
  • HIBP 데이터에는 만료 시점이 있는 듯함. 예전엔 Dropbox 유출에 내 이메일이 포함됐는데 지금은 기록이 사라졌음
    Dropbox 유출 페이지

  • Bitwarden / 1Password / Proton Pass 중 어떤 게 좋은지 궁금함
    Proton Pass는 아직 신뢰하기엔 이르고, “모든 걸 한 바구니에 담지 말라”는 말도 떠오름
    오픈소스인 Bitwarden을 선택했는데, 무료 사용자 기반이 커서 문제점이 빨리 드러나고 해결될 거라 기대함

    • 1Password를 사용 중인데 UI와 기업 관리 기능이 훨씬 편함
      비즈니스 계정을 쓰면 가족용 계정이 무료로 제공되는 것도 장점임
      다만 Bitwarden의 오픈소스 철학도 충분히 고려할 만함
  • 이번 글의 제목은 “13억 개의 비밀번호가 유출됨”이 더 정확했을 것 같음
    숫자는 조금 작지만 의미는 훨씬 큼

    • 실제 비밀번호 수는 아마 더 적을 것 같음 😉