본문 바로가기

🆕 초기화되지 않은 변수 사용 - 실습 시뮬레이터

CWE-457: Use of Uninitialized Variable

KISA 소프트웨어 보안약점 진단가이드(2021) · 코드오류
💡 쉽게 말하면
값을 안 채운 빈칸을 그대로 쓰면 예측 불가한 결과가 나옵니다. 선언할 때 기본값을 넣어둡니다.
✅ 학습 진행도
  • ⬜ 진단 시작
  • ⬜ 미초기화 식별
  • ⬜ 기본값 초기화
☕ Java 코드 에디터 취약한 코드
Score.java 💡 변수를 선언 시 초기화하거나 else로 모든 경로를 처리하세요.
// [취약] 분기에 따라 초기화되지 않은 채 사용될 수 있음
int result;
if (cond) { result = compute(); }
log(result);   // cond=false면 미초기화
💡 수정 가이드 (KISA 기준)
1. 기본값 초기화

선언과 동시에 안전한 기본값 부여.

int result = 0; // 기본값 초기화 if (cond) { result = compute(); } log(result);
📊 분석 결과 및 설명
🎯 목표

변수를 사용 전에 항상 초기화되도록 보장합니다.

⚠️ 현재 취약점

Uninitialized Variable

미초기화 변수 사용으로 비결정적 동작이 발생합니다.

✅ 학습 진행도
  • ⬜ 진단 시작
  • ⬜ 미정의 식별
  • ⬜ 사전 정의
🐍 Python 코드 에디터 취약한 코드
score.py 💡 변수를 if 이전에 정의하거나 else를 추가하세요.
# [취약] 조건에 따라 정의되지 않을 수 있는 변수 사용
if cond:
    total = compute()
print(total)   # cond=False면 NameError
💡 수정 가이드 (KISA 기준)
1. 사전 정의

조건문 이전에 기본값 설정.

total = 0 # 사전 정의 if cond: total = compute() print(total)
📊 분석 결과 및 설명
🎯 목표

변수가 모든 실행 경로에서 정의되도록 합니다.

⚠️ 현재 취약점

Undefined Variable

미정의 변수 참조로 NameError가 발생합니다.

📰 실제 사고사례 & 표준 매핑
초기화되지 않은 변수의 잔류 메모리 값이 사용돼 정보 노출·예측불가 동작이 발생할 수 있습니다.
🏷️ CWE-457
※ 공개적으로 알려진 사례 기반 교육용 요약 · CWE/OWASP는 공개 표준 분류