보안개구리

[게시판 실습] - 정보 누출 (1) 로그인 시도 시 계정 존재 유무 확인 가능 본문

웹 진단/게시판 실습

[게시판 실습] - 정보 누출 (1) 로그인 시도 시 계정 존재 유무 확인 가능

보안개구리 2024. 5. 30. 11:13

[설 명]

 웹 사이트에 중요 정보(개인 정보, 계정 정보, 금융 정보 등)가 노출되거나 에러 발생 시 과도한 정보 (애플리케이션 정보, DB 정보, 웹 서버 구성 정보, 개발 과정의 코멘트 등)가 노출될 경우 공격자들의 2차 공격을 위한 정보로 활용될 수 있어, 웹 사이트에 노출되는 중요 정보는 마스킹을 적용하여야 하며 발생 가능한 에러에 대해 최소한의 정보 또는 사전에 준비된 메시지만 출력하도록 해야 한다

 

[점검 내용]

 웹 서비스 시 불필요한 정보가 노출되는지 여부

 

[점검 기준]

 웹 사이트에 중요정보가 노출되거나, 에러 발생 시 과도한 정보가 노출되는 경우 취약

 

[대응 방법]

 * 사용자가 중요 정보 입력 시 마스킹 처리를 하여 노출 방지

 * 개인정보의 조회, 출력 시 일부 정보에 마스킹을 적용

 * 웹 페이지 운영 시 불필요한 주석은 전부 제거

 * 중요정보를 HTML이 아닌 서버단으로 이동

 * 로그인 실패 시 반환되는 에러메시지는 특정 ID 가입 여부를 식별할 수 없도록 구현

 * 웹에서 발생하는 모든 에러에 대하여 통합 에러페이지로 Redirect 되도록 설정

 

[진단 과정]

 1) 존재하지 않는 아이디 로그인 시도 시 '존재하지 않는 아이디입니다' 라는 메시지를 통해 해당 아이디는 존재하지 않는다는 사실을 확인할 수 있습니다.

존재하지 않는 아이디로 로그인 시 메시지

 

2) 존재하는 아이디로 로그인 시 잘못된 패스워드를 입력하면  '비밀번호가 틀립니다'라는 메시지를 통해 해당 아이디가 존재함을 확인할 수 있습니다.

패스워드 불일치 시 메시지

 

3) 로그인 시 반환되는 응답값(응답메시지)을 통해 계정의 존재 유무가 노출되는 것은 보안상으로 취약합니다. 소스코드 확인 시 아이디가 존재했을 때 메시지와 패스워드가 불일치 시 출력되는 메시지가 각각 존재함을 확인하였습니다. 계정의 존재유무를 알 수 없도록 코드를 수정하겠습니다.

소스코드 확인
소스코드 수정

 

4) 기존 소스코드를 수정하여 로그인 실패시 메시지는 '계정 정보가 일치하지 않습니다'로 통일하였습니다. 1,2번의 과정을 다시 한 결과 두 응답 메시지가 모두 동일함을 확인하였습니다.

패스워드 불일치시 메시지 출력
존재하지 않는 계정으로 로그인 시 메시지 출력