설계단계 보안설계 기준 - 인증 수행 제한
유형 | 보안기능 |
설계항목 | 인증 수행 제한 |
설명 | 반복된 인증 시도를 제한하고 인증 실패한 이력을 추적하도록 설계한다. |
보안대책 | ① 로그인 기능 구현 시, 인증시도 횟수를 제한하고, 초과된 인증시도에 대해 인증제한 정책을 적용해야 한다. ② 실패한 인증시도에 대한 정보를 로깅하여 인증시도 실패가 추적될 수 있게 해야 한다. |
연관된 구현단계 기준 | 반복된 인증시도 제한 기능 부재 |
취약점 개요
로그인 시도에 대한 횟수를 검사하지 않으면 로그인 시도 횟수와 상관없이 지속적으로 로그인 시도가 이루어지는 비밀번호 무차별 대입 공격이 시도되어 계정정보가 노출될 수 있다.
설계 시 고려사항
① 로그인 기능 구현 시, 인증시도 횟수를 제한하고, 초과된 인증시도에 대해 인증제한 정책을 적용해야 한다.
로그인 시도횟수를 3~5번 이내로 제한하고 이를 초과하여 로그인에 실패하는 경우 추가 입력값을 요구하거나 계정 잠금을 수행하도록 설계한다.
사용자 ID별 세션 ID별 로그인 횟수를 추적하기 위해 사용자 DB테이블에 로그인 실패 횟수, 계정 잠금 여부, 마지막 성공/실패한 로그인 시간, 로그아웃한 시간 등을 저장할 수 있도록 설계하고 일정 횟수 이상 연속적으로 로그인 실패 시 사용자 ID와 비밀번호 외의 추가적인 정보를 확인하도록 한다.
계정정보 입력 시 자동입력방지 문자와 같은 장치를 마련하도록 설계한다.
※ CAPTCHA 기능을 제공하는 서비스 및 솔루션
reCAPTCHA (서비스)
BotDetect CAPTCHA (솔루션)
② 실패한 인증시도에 대한 정보를 로깅하여 인증시도 실패가 추적될 수 있게 해야 한다.
반복된 로그인 실패에 대한 로깅 정책을 설정하고 로그 기록으로 허용되지 않은 로그인 시도를 분석할 수 있도록 설계한다.
진단 세부사항
요구사항 ① 로그인 기능 구현 시, 인증시도 횟수를 제한하고 초과된 인증시도에 대해 인증제한 정책을 적용해야 한다.
- 로그인 기능 설계 시 인증시도 횟수가 제한되도록 설계되어 있는지 확인
- 초과된 인증시도에 대한 인증제한 정책이 적용되도록 설계되어 있는지 확인
- 인증시도 횟수 제한을 점검하는 테스트 계획이 수립되어 있는지 확인
. 로그인 실패를 발생시킬 수 있는 입력값 사용
. 실패 시 제한 정책이 적용되는지 확인
. 실패 시 영속성 있는 저장장치에 기록되는지 확인
요구사항 ② 실패한 인증시도에 대한 정보를 로깅하여 인증시도 실패가 추적될 수 있게 해야 한다.
- 초과된 인증시도에 대한 로깅 정책이 적용되어 있는지 확인
- 초과된 인증시도 시 로깅이 정상적으로 실행되는지 점검하기 위한 테스트 계획이 수립되어 있는지 확인