하드코딩된 비밀번호 사용 (Hardcoded Password)
Use of Hard-Coded Password
설명
코드 내에 하드코딩된 비밀번호를 포함하면 보안 사고 발생 시 쉽게 유출될 위험이 있습니다. 하드코딩된 비밀번호는 소스 코드 저장소(GitHub, GitLab 등)에 노출될 가능성이 크며, 공격자가 이를 활용하여 시스템에 불법적으로 접근할 수 있습니다.
비밀번호는 코드가 아닌 보안 저장소(예: 환경 변수, 키 관리 시스템)에서 안전하게 로드해야 합니다.
잠재적 영향
비밀번호 노출: 코드가 유출되거나 버전 관리 시스템(Git 등)에 포함되면 비밀번호가 노출될 가능성이 있음.
자동화 공격: 공격자가 코드에서 비밀번호를 추출하여 자동화된 로그인 공격을 수행할 수 있음.
비밀번호 변경 어려움: 코드 내에 하드코딩된 비밀번호를 수정하려면 소스 코드를 변경하고 다시 배포해야 함.
해결 방법
비밀번호를 코드에 직접 포함하지 않기
대신 환경 변수 또는 키 관리 시스템(KMS)을 사용하여 로드합니다.
키 관리 시스템(KMS) 사용
AWS KMS, Google Cloud KMS, HashiCorp Vault 등 보안 저장소를 활용하여 비밀번호를 관리합니다.
환경 변수 또는 구성 파일 활용
.env파일이나 OS 환경 변수를 통해 비밀번호를 로드하고, 소스 코드에서는 이를 참조합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드:
keyStore.load(null, "hardcoded_password".toCharArray());와 같이 코드 내에 비밀번호를 하드코딩하여 보안 위험을 초래.
안전한 코드:
System.getenv("KEYSTORE_PASSWORD")을 사용하여 환경 변수에서 비밀번호를 안전하게 로드.
참조
Last updated