데이터베이스 비밀번호 미설정 (Empty Database Password)
Missing Authentication for Critical Function (Database)
설명
애플리케이션이 데이터베이스에 연결할 때 비밀번호 없이 인증을 수행하면, 누구나 해당 데이터베이스에 접근할 수 있는 보안 취약점이 발생할 수 있습니다. 특히, 비밀번호가 없는 경우 공격자가 데이터베이스에 무단으로 접근하여 중요한 데이터를 조회, 수정, 삭제할 가능성이 높습니다.
잠재적 영향
데이터 유출: 누구나 인증 없이 데이터베이스에 접속하여 민감한 정보를 조회할 수 있음.
데이터 조작: 공격자가 데이터베이스에 연결하여 데이터 삽입, 수정, 삭제가 가능함.
권한 상승: 권한이 없는 사용자가 데이터베이스의 설정을 변경할 가능성이 있음.
해결 방법
데이터베이스 비밀번호 설정 필수화
데이터베이스 사용자 계정에 강력한 비밀번호를 설정합니다.
비밀번호를 코드 내에 하드코딩하지 않기
환경 변수 또는 보안 저장소(KMS, HashiCorp Vault 등)를 활용하여 비밀번호를 안전하게 관리합니다.
최소 권한 원칙 적용
데이터베이스 사용자에게 필요한 최소한의 권한만 부여합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드:
비밀번호를 빈 문자열(
"")로 설정하여 누구나 인증 없이 데이터베이스에 접근 가능.
안전한 코드:
System.getenv("DB_USER")및System.getenv("DB_PASSWORD")을 사용하여 환경 변수에서 비밀번호를 안전하게 로드.비밀번호가 설정되지 않은 경우 예외를 발생시켜 보안 강화.
참조
Last updated