OTG-AUTHN-003 (취약한 잠금 매카니즘 테스트)


개요

계정 잠금 메카니즘은 패스워드 추측 무작위 공격에 대한 보안으로 사용됩니다. 계정은 일반적으로 3번에서 5번 로그인 시도가 성공하지 못하면 잠기고 일정 시간 후에 자체 해제 메카니즘 또는 관리자 개입을 통해 풀릴 수 있습니다. 계정 잠금 메카니즘은 비인가 접근 사용자와 거부된 인가 접근 사용자 사이에 균형이 필요합니다.

테스트할 때 잠금 메카니즘은 인증의 모든 측면을 포함하고 있어야 합니다. 예, 사용자가 패스워드를 잃어버렸을 때 보안 질문으로 복구하는 메카니즘 (취약한 보안 질의응답 테스트 (OTG-AUTHN-008)).

어플리케이션은 강력한 잠금 메카니즘이 없이는 무작위 공격에 대해 취약할 수 있습니다. 무작위 공격이 성공하게 되면 악의적인 사용자는 접근이 가능하게 됩니다.

  • 기밀 정보 또는 데이터: 웹 애플리케이션의 비공개 섹션은 기밀 문서, 사용자 프로필 데이터, 금융 정보, 은행 정보, 사용자 관계 등을 공개 할 수 있습니다.
  • 관리자 페이지: 이 섹션은 웹 마스터가 웹 응용 프로그램 컨텐츠를 관리 (수정, 삭제, 추가)하고 사용자 프로비저닝을 관리하며 사용자에게 다른 권한을 할당하는 데 사용됩니다.
  • 추가 공격 기회: 웹 응용 프로그램의 인증 섹션에는 웹 응용 프로그램의 공개 섹션에없는 취약점이 포함될 수 있으며 공용 사용자가 사용할 수없는 고급 기능을 포함 할 수 있습니다.

테스트 목적

  • 브루트 포스 패스워드 게싱을 방어하기 위한 계정 잠금 메커니즘 평가
  • 인증되지 않은 계정 잠금 해제로 해제 메커니즘 방어 평가

테스트 방법

일반적으로, 잠금 메카니즘의 강도를 테스트하는 것은 잠겨도 상관없는 계정에 대한 접근이 필요합니다. 만약 웹 어플리케이션으로 로그온 한 계정 뿐이라면, 잠긴 계정 때문에 테스트를 계속할 수 없는 것을 피하기 위해 테스트 마지막에 수행하도록 합니다.

잠금 메카니즘 능력 평가를 위해서는 잘못된 패스워드를 여러 번 사용하여 잘못된 로그인 시도를 해야합니다. 예를 들어 아래 테스트와 같습니다.

  1. 잘못된 패스워드로 3번 로그인 시도

2. 올바른 패스워드로 성공적으로 로그인 이에 따라 3번 잘못된 인증 시도 이 후 잠금 메커니즘이 실행되지 않음을 보여줍니다. 3. 잘못된 패스워드로 4번 로그인 시도 4. 올바른 패스워드로 성공적으로 로그인 이에 따라 4번 잘못된 인증 시도 이 후 잠금 메커니즘이 실행되지 않음을 보여줍니다. 5. 잘못된 패스워드로 5번 로그인 시도 6. 올바른 패스워드로 성공적으로 로그인 어플리케이션은 "Your account is locked out."을 리턴, 이에 따라 계정은 5회 잘못된 인증 시도 잠금되는 걸 확인 7. 5분 후 올바른 패스워드로 로그인 시도 어플리케이션은 "Your account is locked out."을 리턴, 이에 따라 잠금 메카니즘은 5분 후 자동으로 해제되지 않는 것을 확인 8. 10분 후 올바른 패스워드로 로그인 시도 어플리케이션은 "Your account is locked out."을 리턴, 이에 따라 잠금 메카니즘은 10분 후 자동으로 해제되지 않는 것을 확인 9. 15분 후에 올바른 패스워드로 로그인 성공, 이에 따라 잠금 메카니즘은 10분에서 15분 사이에 자동으로 해제되는 것을 확인

보안 문자 (CAPTCHA)는 무차별 대입 공격을 저해 할 수 있지만 자체적인 약점이 있을 수 있으므로(CAPTCHA 테스트 참조) 잠금 메커니즘을 대체해서는 안됩니다.

잠금 해제 메커니즘의 무단 계정 잠금 해제에 대한 저항력을 평가하려면 잠금 해제 메커니즘을 시작하고 약점을 찾으십시오. 일반적인 잠금 해제 메커니즘에는 비밀 질문 또는 전자 메일 잠금 해제 링크가 포함될 수 있습니다. 잠금 해제 링크는 공격자가 링크를 추측하거나 재생하지 못하게하고 일괄 적으로 무차별 공격을 수행하는 고유 한 일회성 링크 여야합니다. 비밀 질문 및 답변은 ​​강해야합니다(약한 보안 질문 / 답변 테스트 참조).

잠금 해제 메커니즘은 계정 잠금 해제에만 사용해야합니다. 이것은 암호 복구 메커니즘과 동일하지 않습니다. 계정 잠금 메커니즘을 구현할 때 고려해야 할 요소는 다음과 같습니다.

  1. 응용 프로그램에 대한 무차별 암호 추측의 위험은 무엇입니까?

  2. 보안 문자는 이 위험을 완화하기에 충분합니까?

  3. 잠금 전의 실패한 로그인 시도 횟수. 잠금 임계 값이 낮 으면 유효한 사용자가 너무 자주 잠길 수 있습니다.

  4. 잠금 임계 값이 높으면 공격자가 잠금을 해제하기 전에 더 많은 시도를 할 수 있습니다. 응용 프로그램의 목적에 따라 5 회에서 10 회까지 시도가 실패하면 일반적인 잠금 임계 값이됩니다.

  5. 계정은 어떻게 잠금 해제됩니까?

    • 관리자가 수동으로 수행하는 작업: 가장 안전한 잠금 방법이지만 사용자에게 불편을 초래할 수 있으며 관리자의 "중요한" 시간을 차지할 수 있습니다.
      • 관리자가 자신의 계정이 잠길 경우를 대비하여 복구 방법도 있어야합니다.
      • 이 잠금 해제 메커니즘은 공격자의 목표가 웹 응용 프로그램의 모든 사용자 계정을 잠그는 것이면 서비스 거부 공격을 유발할 수 있습니다.
    • 일정 기간 후: 잠금 기간은 얼마입니까? 보호되는 응용 프로그램에 충분합니까? 예 : 5 ~ 30 분의 잠금 기간은 무차별 공격을 완화하고 유효한 사용자를 불편하게하는 것 사이에 좋은 절충안이 될 수 있습니다.
    • 셀프 서비스 메커니즘을 통해: 앞에서 설명한 것처럼이 셀프 서비스 메커니즘은 공격자가 계정을 스스로 잠금 해제 할 수 없도록 충분히 안전해야합니다.

참고 문헌

무작위 공격에 대한 OWASP 자료 확인


권고 사항

위험 수준에 따라 계정 잠금 해제 메커니즘을 적용합니다.

  • 시간 기반 잠금과 잠금 해제
  • 셀프 서비스 잠금 해제 (등록된 이메일 주소로 잠금 해제 메일 전송).
  • 관리자가 수동으로 잠금 해제
  • 관리자가 수동으로 정상 사용자 식별하여 잠금 해제