[웹 취약점] 약한 문자열 강도
개요
약한 문자열 강도는 사용자 ID, 비밀번호, 신용카드 정보 등이 반복되는 패턴을 가지고 있거나 추측하기 용이한 문자열로 구성되어 있어 예측, 무차별 대입 공격, 사전 대입 공격 등으로 인해 탈취가 발생하는 취약점이다.
예시
위 사진은 NordPass에서 제공하는 취약한 비밀번호 목록 중 일부이다. user, root, test, password와 같이 사전에 등록되어 있거나 흔히 사용되는 단어, asdf, qwerty, 123456 같이 키보드 상에서 특정 패턴을 가지고 있는 문자열, 111111, 123123 같이 같이 연속적인 숫자 등이 약한 문자열에 해당된다.
진단 방법
약한 문자열 강도 취약점을 진단하기 위한 접근 방식은 크게 두가지로 구분된다.
첫째, 유추하기 쉬운 문자열로 구성된 계정이 존재하는가?
- 화이트박스 테스트의 경우 계정 목록을 확인하여 약한 문자열로 구성된 계정이 존재하는지 점검한다.
- 블랙박스 테스트의 경우 Default Account에 사용되는 문자열을 대입해보고 무차별 대입 공격, 사전 대입 공격 등을 통해서 점검한다.
둘째, 계정 접근에 대한 횟수 제한이 설정되어 있는가?
- 계정 접근에 대한 횟수 제한이 설정되어 있지 않다면 계정을 탈취 당하는 것은 시간 문제이므로, 로그인 실패 횟수 제한 등이 설정되어 있는지 점검한다.
조치 방안
안전한 비밀번호 작성규칙을 적용하여 비밀번호 생성, 변경 시 해당 규칙을 적용하도록 구현해야하며, 일정 횟수 이상 인증 실패 시 계정 잠금 등의 조치를 취하는 등 로그인을 제한하는 로직을 구현 및 적용해야 한다.
별첨
개인정보의 기술적 관리적 보호조치 기준 해설서 中
- 비밀번호는 문자, 숫자의 조합 · 구성에 따라 최소 8자리 또는 10자리 이상의 길이로 구성
- 최소 8자 이상: 두 종류 이상의 문자를 이용하여 구성한 경우 (문자 종류: 알파벳 대문자와 소문자, 특수문자, 숫자)
- 최소 10자 이상: 하나의 문자종류로 구성한 경우 (단, 숫자로만 구성할 경우 취약할 수 있음)
- 비밀번호는 추측하거나 유추하기 어렵도록 설정
동일한 문자 반복(aaabbb, 123123 등), 키보드 상에서 나란히 있는 문자열(qwer 등), 일련번호, 가족이름, 생일, 전화번호 등은 사용하지 않는다. - 비밀번호가 제 3자에게 노출되었을 경우 지체없이 새로운 비밀번호로 변경해야 함