개요
- Pre-Hijack 공격에 대해 조사한다.
- 이 공격이 성립하려면 공격자가 공격대상자(피해자)의 이메일주소를 알고 있고, 이 메일 주소로 로그인을 하지 않더라도 계정을 만들 수 있다는 전제 조건이 있다.
상세
5가지 종류의 공격 패턴이 있다고 한다.
Unexpired Session Attack (실효되지 않은 세션 공격)
- 패스워드 재설정 후에도 로그인 상태(세션)가 유지되는 서비스인 경우 취약하다.
- 공격자는 로그인 상태를 유지하기 위해 정기적으로 액세스를 계속한다.
- 피해자는 ‘이 메일 주소는 이미 등록된 상태’라는 것을 보고 비밀번호를 재설정해 사용을 시작한다.
- 공격자가 이미 로그인한 상태라면 피해자와 동시 로그인된 상태가 된다. 여기서부터 피해가 이루어진다.
- 대책: 비밀번호 재설정시 세션도 재설정
Classic-Federated Merge Attack(클래식 페더레이션 통합 공격)
- 공격 대상 서비스가 메일 주소 및 패스워드를 이용한 로그인과 소셜 로그인(IdP) 양쪽에 대응하고, 계정의 관리 기능이 불충분한 경우에 악용될 수 있다.
- 공격자는 공격 대상자의 이메일 주소로, 공격 대상자는 소셜 로그인으로 각각 계정을 작성하면 양쪽 계정이 통합되어서 같은 계정에 들어갈 수 있는 상태가 된다.
- 대책: 계정을 병합할 때 서비스 이메일 주소와 IdP 이메일 주소가 모두 확인되었는지 확인한다.
Trojan Identifier Attack (트로이 목마 ID 공격)
- 공격자는 피해자의 이메일 주소를 사용하여 계정을 만든다.
- 공격자는 해당 계정과 공격자의 IdP 계정을 연결한다.
- 피해자가 그 서비스를 신규로 사용하려고 하면 “이메일 주소는 이미 등록되어 있습니다”가 표시
- 피해자가 비밀번호 재설정하여 서비스에 로그인하여 사용
- 공격자는 공격자의 IdP 계정으로 서비스에 로그인할 수 있으므로 피해자가 설정한 내용을 훔칠 수 있다(계정도 탈취할 수 있음)
- Classic-Federated Merge Attack은 피해자가 SSO로 로그인, Trojan Identifier Attack은 공격자가 SSO로 로그인의 차이
- 대책: 계정을 병합할 때 서비스 이메일 주소와 IdP 이메일 주소가 모두 확인되었는지 확인한다.
Unexpected Email Change Attack (실효되지 않는 메일 주소 변경 공격)
- 공격자는 피해자의 이메일 주소를 사용하여 계정을 만든다.
- 공격자는 해당 계정으로 공격자의 이메일 주소로 변경 신청을 해둔다 (아직 확정하지 않음).
- 서비스는 이메일 주소 변경 확인 이메일을 공격자의 이메일 주소로 전송한다 (아직 확인하지 않음).
- 피해자가 그 서비스를 신규로 사용하려고 하면 “이메일 주소는 이미 등록되어 있습니다”가 된다.
- 피해자가 비밀번호 재설정하여 서비스에 로그인하여 사용한다.
- 공격자는 3번에서 받은 이메일 주소 변경 확인 이메일에서 이메일 주소를 변경한다.
- 공격자는 공격자의 이메일 주소로 로그인할 수 있으므로 피해자가 설정한 내용을 훔칠 수 있다(계정도 탈취할 수 있음).
- 대책: 비밀번호 재설정 시 이메일 주소 변경을 보류한 상태도 재설정, 이메일 주소 변경 만료일 설정
Non-verifying IdP Attack (비검증형 IdP 공격)
- 공격자는 이메일 주소를 확인하지 않는 IdP에서 피해자의 이메일 주소를 사용하여 계정을 만든다.
- 피해자는 자신의 이메일 주소로 계정을 만들고 사용한다. <– 이게 어떻게 가능한지 모르겠다.🤨
- 공격자는 피해자의 이메일 주소를 사용하여 IdP로 서비스에 로그인하여 계정을 병합한다.
참고
- https://hjtic.snu.ac.kr/node/13053
- https://arxiv.org/abs/2205.10174
- https://gist.github.com/azu/faa7909d32c0ed1ab4fced3ad4ab74d8
- https://msrc.microsoft.com/blog/2022/05/pre-hijacking-attacks/