목 차
평가항목ID | WEB-SER-005, MOB-SER-005 | 위험도 | 5 |
통제구분 | 5.8.5 (일반공통) 이용자 인증 | 평가항목 | 고정된 인증정보 이용 |
상세설명 | o SMS 등 이용자 인증을 위해 생성되는 값에 대해 인증정보 탈취 방지를 위해 가변적인 데이터 사용 여부를 점검 * (평가 예시) - SMS, ARS 등 이용자 인증 시 매번 동일한 인증코드 생성 여부 점검 등 |
고정된 인증정보 이용
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 |