목 차
평가항목ID | WEB-SER-004, MOB-SER-004 | 위험도 | 5 |
통제구분 | 5.8.5 (일반공통) 이용자 인증 | 평가항목 | 이용자 인증정보 재사용 |
상세설명 | o 중간자 공격 등에 의해 탈취된 인증정보가 재사용되는 것을 방지하기 위해 이미 사용된 인증정보(전자서명값 등)에 대해 재사용 가능 여부를 점검 * (평가 예시) - 이용자 인증 수행을 위해 생성된 전자서명 값의 재사용 가능 여부를 점검 - OTP/SMS/계좌 인증에 사용되는 일회성 값의 재사용 가능 여부를 점검 - 비대면 실명인증(신분증 사본 제출) 수행 시, 서버에 전송되는 신분증 사진 및 신분증 정보(주민등록번호, 이름, 발급일자 등)에 대해 재사용 가능 여부를 점검 등 |
이용자 인증정보 재사용
사용자 인증정보가 재사용 가능한 경우 중간자 공격 등에 의해 탈취한 인증정보를 재사용하여 도용할 수 있으므로 인증정보는 사용 완료 후 폐기되어야 합니다.
이용자 인증정보는 세션정보와 1회성 인증정보로 분류할 수 있습니다.
분류 | 대상 | 위험 |
세션정보 | - 세션ID - SSO세션 토큰 |
세션 정보(세션ID, SSO인증토큰)의 재사용이 가능할 경우 악의적인 사용자는 XSS 등의 기법을 이용하여 타 사용자의 세션정보를 탈취한 후 해당 사용자의 권한이나 계정을 도용할 수 있음 |
1회성 인증정보 |
- SMS/ARS 인증번호 - OTP - CSRF 토큰 |
1회성 인증정보의 재사용이 가능할 경우 인증 절차를 변조하여 상품 구매 및 자금이체 등 거래의 중복 요청, 또는 금액변조, 계좌번호 변조 등 거래 정보의 변조가 발생할 수 있음 |
해결방안
기본적으로 WAS에서 발행하는 세션ID는 항상 무작위 문자열로 발급되므로 세선ID가 고정된 값으로 사용될 가능성은 없으며, 1회성 인증정보의 경우 일정시간이 경과하거나 사용을 완료한 경우 폐기하여 재사용될 수 없도록 조치해야 합니다.
또한, 컴퓨터의 난수발생기는 난수 값을 결정하는 시드(Seed) 값이 고정될 경우, 매번 동일한 난수값이 발생합니다. 이를 최대한 피하기 위해 Java에서는 Random()과 Math.random() 사용 시 java.util.Random 클래스에서 기본값으로 현재시간을 기반으로 조합하여 매번 변경되는 시드(Seed) 값을 사용하며, C에서는 rand() 함수 사용 시 매번 변경되는 기본 시드(Seed) 값이 없으므로, srand()로 매번 변경되는 현재시간 기반 등으로 시드(Seed) 값을 설정하여야 합니다.
그러나 세션 ID, 암호화키 등 보안결정을 위한 값을 생성하고 보안결정을 수행하는 경우에는, Java에서 Random()과 Math.random()을 사용하지 말아야 하며, 예측이 거의 불가능하게 암호학적으로 보호된 java.security.SecureRandom 클래스를 사용하는 것이 안전합니다.
반응형
'전자금융기반시설 (웹, 모바일)' 카테고리의 다른 글
고정된 인증정보 이용 (0) | 2023.06.07 |
---|---|
부적절한 이용자 인가 여부 (0) | 2023.05.31 |
악성파일 업로드 (0) | 2023.05.29 |
SQL Injection (0) | 2023.05.29 |
[전자금융] 접근매체 발급 시 실명확인 수행 여부 (0) | 2023.05.27 |