하드코딩된 계정 정보

Use of Hardcoded Credentials

설명

하드코딩된 자격 증명(Use of Hardcoded Credentials)은 애플리케이션에 자격 증명(예: 사용자 이름, 비밀번호, API 키 등)을 소스 코드에 직접 포함하는 취약성입니다. 이는 소스 코드가 유출될 경우 심각한 보안 위험을 초래할 수 있습니다.

잠재적 영향

  • 자격 증명 노출: 하드코딩된 자격 증명이 유출되어 공격자가 시스템에 무단으로 접근할 수 있습니다.

  • 권한 상승: 공격자가 관리자 권한을 획득하여 시스템을 조작하거나 손상시킬 수 있습니다.

  • 데이터 유출: 민감한 데이터가 공격자에게 노출될 수 있습니다.

해결 방법

  • 환경 변수 사용: 자격 증명을 소스 코드에 하드코딩하지 않고 환경 변수로 설정합니다.

  • 보안 저장소 사용: 자격 증명을 안전하게 저장하고 관리할 수 있는 보안 저장소를 사용합니다.

  • 자격 증명 관리: 주기적으로 자격 증명을 변경하고, 사용되지 않는 자격 증명은 폐기합니다.

취약한 코드 및 안전한 코드 예시

Unsafe Django code & Safe Django code

# Unsafe Django code
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

설명:

  • 취약한 코드: 데이터베이스 자격 증명을 소스 코드에 하드코딩하여, 자격 증명이 유출될 위험이 있습니다.

  • 안전한 코드: 환경 변수를 사용하여 자격 증명을 설정하고, 소스 코드에 하드코딩하지 않습니다.

Unsafe Flask code & Safe Flask code

설명:

  • 취약한 코드: 데이터베이스 자격 증명을 소스 코드에 하드코딩하여, 자격 증명이 유출될 위험이 있습니다.

  • 안전한 코드: 환경 변수를 사용하여 자격 증명을 설정하고, 소스 코드에 하드코딩하지 않습니다.

Unsafe FastAPI code & Safe FastAPI code

설명:

  • 취약한 코드: 데이터베이스 자격 증명을 소스 코드에 하드코딩하여, 자격 증명이 유출될 위험이 있습니다.

  • 안전한 코드: 환경 변수를 사용하여 자격 증명을 설정하고, 소스 코드에 하드코딩하지 않습니다.

참조

Last updated