안녕하세요? 허니입니다. 패스워드 정책 유무 및 반영 여부에 대해서 알아보고 대응 방법에 대해 알아보도록 하겠습니다. 사이버 해킹에 대해 공부하시는 학생이나 연구원 분이 계시면 도움이 될 것이라 생각합니다.
사용자는 웹 어플리케이션의 가장 큰 구성 요소이며, 보안 측면에서도 중요한 부분을 갖고 있습니다. 실제로 웹 어플리케이션 보안의 대부분이 사용자를 보호하고 프라이버시 정보를 지키는데 있다고 해도 과언이 아니다. 대부분의 웹 어플리케이션이 이러한 위협에 노출되어 있으며, 정책이 필요합니다.
대응방법
1. 사용자 인증 구현: 강력한 패스워드 사용 권장
- 패스워드 필드에 입력 값은 다양한 변수로 구성되어야 하고, 입력 값에 대한 확인이 필요
- 패스워드의 복잡성을 요구하도록 구성하고 정규 함수로 구현
2. 공격자라 사용자에 대한 많은 정보를 갖고 있다면, 패스워드를 추측하여 계정에 대한 인증을 받을 수 있습니다. 그 후에는 패스워드와 개인정보를 변경하여 사용자로 가정할 수 있습니다.
3. 간단한 사용자 인증을 구현하지 않음
4. 임시 패스워드는 최대한 짧은 기간 동안 사용하게 하며, 사용자가 패스워드를 변경하게 유도합니다.
5. 대부분의 웹 해킹 기법은 취약한 패스워드 구조를 통해 이루어진다. 패스워드 추측 도구를 포함하여 웹과 관련된 공격 도구는 각종 사이트에 많이 노출되어 있는 실정입니다.
6. 인증 정보 수집
- URL의 쿼리 문자열에 사용자 이름이 지정되지 않게 합니다.
- 사용자 디렉터리를 생성해서는 안되며, 다른 방법을 통해 사용자 이름을 획득할 수 없어야 합니다.
- 사용자 이름이나 계정 ID를 추측할 수 있게 허용해서는 안 된다. 예를 들어 Email 계정 자체를 사용한다던가 평범한 단어를 사용하는 것입니다
- 어떤 사용자가 인터넷뱅킹을 이용하기 위해 다음의 사이트에 로그인을 했다고 가정하면, http://xxx.com/userid=1010&account=test
- 이 계정에서 볼 수 있듯이 몇 개의 변수는 그 의미를 추측하기 충분합니다. 그러므로 다음과 같이 변경해 보기로 합니다.
http://www.xxx.com/userid=2000&account=test
http://www.xxx.com/userid=1&account=test
- 이 결과 다른 사람의 정보를 볼 수 있게 됩니다. 이러한 간단한 가정이 응용된다면, 더욱 큰 사건을 유추하기 충분할 것입니다.
7. 강력한 패스워드
- 패스워드 및 인증과 관련된 생체 정보는 복호되지 않도록 일방향 암호화하여 저장합니다.
- 모든 암호화 코드를 중앙으로 집중시켜 알고리즘이나 키를 쉽게 변경 시킬 수 있게 합니다
8. 패스워드 수명과 패스워드 이력
9. 사용자 인증 후에 패스워드의 수명을 항상 점검하고 관리합니다.
- 오랫동안 사용하지 않은 계정은 정보 유출 및 해커의 표적이 될 수 있습니다. 따라서, 웹 개발자는 다음과 같은 형태로 오랫동안 서비스를 이용하지 않은 사용자 계정을 중지시키는 프로세스를 갖고 있어야 합니다.
10. 패스워드 변경
- 패스워드 변경은 사용자 페이지에서만 동작하고 한 단계씩 변경하도록 합니다.
- 사용자가 자신의 패스워드를 변경한 후에는 즉시 모든 세션이 닫히고 새로운 인증을 받아야 합니다. 충분한 시간만 있다면 패스워드 추측 공격이나 시스템의 취약성을 이용한 공격 코드를 통해 공격자는 패스워드를 발견할 수 있습니다. 그러므로, 우리가 할 수 있는 가장 최선의 방법은 주기적으로 패스워드를 변경하는 것입니다.
11. 잊어버린 패스워드 재설정
- 패스워드 재설정: 잊어버린 패스워드를 찾는 과정에 대한 이벤트는 클라이언트 IP주소와 함께 자세하게 기록되어야 합니다.
- Email을 통한 정보 전송: 중요한 정보를 Email을 통해서 전송해서는 안 된다. 가능하면, PGP나 S/MIME과 같은 디지털 서명이나 암호화 통신을 사용하게끔 합니다. 많은 웹 사이트에서 패스워드를 잊어버린 사용자를 위해 Email을 통해 그들의 패스워드를 전송합니다. 그러나 이러한 기능이 제대로 구현되지 않았다면, 위험한 상황에 빠질 수 있다.
- 임시 패스워드 할당: 임시 패스워드를 생성해야 한다면, 강력한 랜덤 알고리즘을 사용해야 합니다. 임시 패스워드에 의존하지 않게 시스템을 구현해야 합니다. 그렇지 않으면, 강력한 패스워드를 갖고 있거나 임시 패스워드를 받는 즉시 변경하게끔 해야 합니다. 대부분의 시스템에서 이에 대한 기간이 느긋한 편입니다. 따라서 패스워드에 대한 재설정을 로그인 즉시 수행토록 하는 것이 중요합니다.
- 비밀 질문 사용: 사용자 자신만의 질문을 통해 패스워드 추측을 시도하지 못하도록 합니다. 또한, 많은 사람들이 공통으로 대답할 만한 질문을 사용하지 않는다. 비밀 질문을 사용하여 패스워드를 찾는 과정을 효과적으로 구현하기 위해 가장 중요한 사항은 사용자의 개인적인 프라이버시 입력 없이 패스워드 재설정을 실행하지 않는 것입니다. 더욱 효과적인 방법은 다양하게 몇 단계로 비밀 질문을 추가하는 것입니다. 대부분의 사용자는 안전하지 않은 질문을 선택하기 때문에 사용자에게 비밀 질문을 선택하는 것을 피해야 합니다. 예를 들어, “태어난 곳은?”, “당신의 전화번호는?”, “당신의 생일은?”과 같은 질문입니다..
'Past Material' 카테고리의 다른 글
디렉터리 목록 노출 취약점 그리고 대응방법은? (0) | 2017.08.02 |
---|---|
Command Injection 취약점 그리고 대응방법은? (0) | 2017.08.01 |
취약한 계정 및 Default 계정 사용 취약점 그리고 대응방법은? (0) | 2017.07.30 |
인증 정보 취약한 코딩 그리고 대응방법은? (0) | 2017.07.29 |
사용자 브라우저 인증 취약점 그리고 대응방법은? (0) | 2017.07.28 |