Amazon Cognito에서 사용자 존재 오류 방지 설정을 켜면 어떤 효과가 있습니까?

4분 분량
0

Amazon Cognito의 사용자 존재 오류 방지 설정에 대해 자세히 알아보고 싶습니다.

간략한 설명

사용자 정보 수집은 악의적인 공격자가 무차별 대입 기법을 사용하여 시스템의 유효한 사용자를 추측하거나 확인하는 웹 애플리케이션 취약점입니다. Amazon Cognito는 악의적인 행위자가 Amazon Cognito 사용자 풀 내에서 유효한 사용자를 찾지 못하도록 하는 보안 기능을 제공합니다. 이 보안 기능은 사용자 정보 수집이 발생하는 가장 일반적인 영역에서 사용할 수 있습니다.

  • 사용자 인증
  • RDS 확인
  • 암호 복구
  • 사용자 등록

해결 방법

사용자 인증

존재하지 않는 사용자의 사용자 이름과 암호를 입력하면 Amazon Cognito는 UserNotFoundException이라는 예외를 발생시켜 응답합니다. 이 사용자 존재 오류는 입력한 사용자 이름이 존재하지 않는다는 것을 명시적으로 나타냅니다. 이 오류 응답을 기반으로 악의적인 공격자는 무차별 대입 공격을 수행하여 사용자 풀의 유효한 사용자를 추측할 수 있습니다.

Amazon Cognito 앱 클라이언트가 존재하지 않는 사용자 로그인 요청에 대해 일반 메시지를 반환하도록 사용자 존재 오류 방지 설정을 켭니다. 일반 메시지에는 사용자 이름 또는 암호가 잘못되었다고 나옵니다. 사용자 존재 오류 방지 설정은 오류 메시지로 사용자의 존재가 드러나지 않게 하므로 보안 인증 추측 공격 예방에 도움이 됩니다.

존재하지 않는 사용자 로그인 시도에 대한 샘플 오류 응답

다음은 존재하지 않는 사용자 로그인 시도에 대한 예제 오류 응답입니다.

$ aws cognito-idp initiate-auth --client-id 12ab34cd56ef78gh91ij23kl45m --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME="myuser",PASSWORD="password"

사용자 존재 오류 방지 설정을 끈 상태에서: "InitiateAuth 작업 호출 시 오류가 발생(UserNotFoundException): 사용자가 존재하지 않습니다."

사용자 존재 오류 방지 설정이 켜진 상태에서: "InitiateAuth 작업 호출 시 오류가 발생(NotAuthorizedException): 사용자 이름 또는 암호가 잘못되었습니다."

RDS 확인

사용자 존재 오류 방지 설정이 켜져 있고 사용자가 비활성화됐거나 찾을 수 없는 경우 Amazon Cognito는 CodeDeliveryDetails를 반환합니다. UserNotFoundException이라는 예외를 반환하는 대신 시뮬레이션한 전달 매체를 통해 코드 전달 세부 정보가 사용자에게 반환됩니다. 사용자가 사용자 풀에 있는 경우 Amazon Cognito는 사용자의 기존 이메일 주소 또는 전화번호로 확인 코드를 전송합니다. 시뮬레이션한 전송 매체는 사용자 이름의 입력 형식 및 사용자 풀의 확인 설정에 따라 결정됩니다.

존재하지 않는 사용자에 대한 확인 코드 재전송의 샘플 오류 응답

다음은 사용자 풀에 존재하지 않는 사용자에 대한 확인 코드 재전송의 샘플 오류 응답입니다.

$ aws cognito-idp resend-confirmation-code --client-id 12ab34cd56ef78gh91ij23kl45m --username "myuser"

사용자 존재 오류 방지 설정을 끈 상태에서: "ResendConfirmationCode 작업 호출 시 오류가 발생(UserNotFoundException): 사용자 이름/클라이언트 ID를 찾을 수 없습니다."

사용자 존재 오류 방지 설정을 켜면 이메일 주소는 무작위가 되고 전송 매체가 시뮬레이션합니다.

{
  "CodeDeliveryDetails": {
    "Destination": "n****@g****.com",
    "DeliveryMedium": "Email",
    "AttributeName": "email"
  }
}

암호 복구

사용자 존재 오류 방지 설정이 켜져 있고 사용자가 비활성화됐거나, 찾을 수 없거나, 또는 암호를 복구할 수 없는 경우 Amazon Cognito는 CodeDeliveryDetails를 반환합니다. UserNotFoundException이라는 예외를 반환하는 대신 시뮬레이션한 전달 매체를 통해 코드 전달 세부 정보를 사용자에게 제공합니다. 시뮬레이션한 전송 매체는 사용자 이름의 입력 형식 및 사용자 풀의 복구 설정에 따라 결정됩니다.

코드 복구 세부 정보를 통해 복구 코드가 임의의 시뮬레이션 이메일 주소 또는 전화번호로 전송되는 것을 확인할 수 있습니다. 이 시뮬레이션한 전달 매체는 공격자가 유효한 사용자와 유효하지 않은 사용자를 구별하기 어렵게 만듭니다.

Amazon Cognito는 암호 재설정 흐름에서 시뮬레이션한 전송 매체와 함께 CodeDeliveryDetails를 반환합니다. 그러나 암호 재설정 코드는 실제로는 시뮬레이션한 전송 매체로 전송되지 않습니다. 이는 확인되지 않은 이메일 주소와 전화번호에 스팸이 전송되는 것을 방지하기 위한 보안 조치입니다.

존재하지 않는 사용자 암호 복구에 대한 샘플 오류 응답

다음은 사용자 풀에 존재하지 않는 사용자의 암호 복구에 대한 샘플 오류 응답입니다.

$ aws cognito-idp forgot-password --client-id 12ab34cd56ef78gh91ij23kl45m --username "myuser"

사용자 존재 오류 방지 설정을 끈 상태에서: "ForgotPassword 작업 호출 시 오류가 발생(UserNotFoundException): 사용자 이름/클라이언트 ID를 찾을 수 없습니다."

사용자 존재 오류 방지 설정을 켜면 전화 번호는 무작위가 되고 전송 매체가 시뮬레이션합니다.

{
  "CodeDeliveryDetails": {
    "Destination": "+*******0874",
    "DeliveryMedium": "SMS",
    "AttributeName": "phone_number"
  }
}

사용자 등록

SignUp 작업은 사용자 이름이 이미 사용 중인 경우 UsernameExistsException을 반환합니다. 가입 시 이메일 주소 또는 전화번호에 대한 UsernameExistsException 오류를 예방하기 위해 인증 기반 별칭을 사용합니다.

이미 사용 중인 다른 계정에서 이메일 주소 또는 전화번호를 별칭으로 입력하면 등록이 완료됩니다. 사용자가 이 이메일 주소 또는 전화번호와 유효한 확인 코드를 사용하여 계정을 확인하려고 하면 AliasExistsException 오류가 반환됩니다. 이 오류는 사용자에게 이 이메일 주소 또는 전화번호를 사용하는 계정이 존재함을 나타냅니다.

사용자 존재 오류는 유효한 코드를 입력한 후에만 나타나므로 이 프로세스를 통해 악의적인 행위자가 유효한 사용자를 식별할 수 있는 잠재적인 위험을 없앱니다. 확인 기반 별칭에 대해 자세히 알아보려면 사용자 풀 특성을 참조하고 로그인 특성 사용자 지정 탭을 선택합니다.

Amazon Cognito의 사용자 존재 오류 방지 설정을 수정하려면 어떻게 해야합니까?

다음 단계에 따라 사용자 존재 오류 방지 설정을 수정합니다.

  1. Amazon Cognito 콘솔에 로그인합니다.
  2. 목록에서 기존 사용자 풀을 선택합니다.
  3. 앱 통합 섹션을 선택합니다.
  4. 앱 클라이언트에서 목록의 앱 클라이언트를 선택합니다.
  5. 앱 클라이언트 정보 섹션에서 편집 버튼을 선택합니다.
  6. 아래로 스크롤하여 사용자 존재 오류 방지 설정고급 보안 구성에서 찾습니다. 이 옵션을 선택하거나 선택 취소합니다.
  7. 변경 내용을 저장합니다.

오류 응답에 대한 자세한 내용은 오류 응답 관리를 참조하십시오.


AWS 공식
AWS 공식업데이트됨 일 년 전