🎲 적절하지 않은 난수 값 사용

CWE-330: Use of Insufficiently Random Values

  • ⬜ 진단 시작
  • ⬜ Random 클래스 제거
  • ⬜ SecureRandom 적용
✏️ Java 코드 에디터 취약한 코드
import java.util.Random;

public class TokenGenerator {
    public String createToken() {
        // [취약점] java.util.Random은 예측 가능한 난수를 생성함
        // 보안 토큰이나 세션 ID 생성에 적합하지 않음
        Random random = new Random();
        
        byte[] bytes = new byte[16];
        random.nextBytes(bytes);
        return bytes.toString();
    }
}
💡 가이드

보안이 중요한 기능에는 java.security.SecureRandom을 사용해야 예측 불가능한 난수를 얻을 수 있습니다.

  • ⬜ 진단 시작
  • ⬜ random 모듈 제거
  • ⬜ secrets 모듈 사용
🐍 Python 코드 에디터 취약한 코드
import random

def generate_token():
    # [취약점] random 모듈은 메르센 트위스터 알고리즘을 사용하며 예측 가능함
    return random.randint(100000, 999999)
💡 가이드

Python 3.6+에서는 암호학적으로 강력한 secrets 모듈을 사용하는 것이 표준입니다. secrets.randbelow() 등을 사용하세요.