본문 바로가기

💧 부적절한 자원 해제 - 실습 시뮬레이터

CWE-404: Improper Resource Shutdown or Release

KISA 소프트웨어 보안약점 진단가이드(2021) · 코드오류
💡 쉽게 말하면
수도꼭지(파일·연결)를 안 잠그면 물이 새듯 자원이 고갈됩니다. try-with-resources로 자동으로 잠급니다.
✅ 학습 진행도
  • ⬜ 진단 시작
  • ⬜ 자원 누수 식별
  • ⬜ 자동 해제 적용
☕ Java 코드 에디터 취약한 코드
FileReader.java 💡 try-with-resources 또는 finally로 자원을 반드시 해제하세요.
// [취약] 예외 발생 시 close가 호출되지 않아 자원 누수
FileInputStream in = new FileInputStream(path);
byte[] data = in.readAllBytes();
process(data);
in.close();
💡 수정 가이드 (KISA 기준)
1. 자동 해제

try-with-resources 사용.

try (FileInputStream in = new FileInputStream(path)) { byte[] data = in.readAllBytes(); process(data); } // 블록 종료 시 자동 close
📊 분석 결과 및 설명
🎯 목표

예외 발생 여부와 무관하게 자원을 반드시 해제해야 합니다.

⚠️ 현재 취약점

Resource Leak

해제 누락으로 핸들/메모리 누수가 누적됩니다.

✅ 학습 진행도
  • ⬜ 진단 시작
  • ⬜ 자원 누수 식별
  • ⬜ with 적용
🐍 Python 코드 에디터 취약한 코드
file_reader.py 💡 with 문으로 파일을 자동 해제하세요.
# [취약] 예외 시 close 누락 → 파일 핸들 누수
f = open(path, "rb")
data = f.read()
process(data)
f.close()
💡 수정 가이드 (KISA 기준)
1. with 문

컨텍스트 매니저로 자동 해제.

with open(path, "rb") as f: data = f.read() process(data) # 블록 종료 시 자동 close
📊 분석 결과 및 설명
🎯 목표

파일/소켓 등 자원을 컨텍스트 매니저로 안전하게 해제합니다.

⚠️ 현재 취약점

Resource Leak

해제 누락으로 핸들이 누수됩니다.

📰 실제 사고사례 & 표준 매핑
자원(메모리·핸들·커넥션) 미해제가 누적돼 서비스가 고갈·다운되는 가용성 사고가 발생했습니다.
🏷️ CWE-772
※ 공개적으로 알려진 사례 기반 교육용 요약 · CWE/OWASP는 공개 표준 분류