📦 무결성 검사 없는 코드 다운로드 - 실습 시뮬레이터

CWE-494: Download of Code Without Integrity Check

✅ 학습 진행도
  • 진단 시작
  • 무결성 검사 로직 추가
✏️ Java 코드 에디터 취약한 코드
Updater.java
public void updateSoftware(String url, String expectedHash) {
    File file = download(url);
    
    // [취약점] 파일의 무결성(해시값) 검증 없이 바로 실행
    // 중간에 파일이 변조되었을 경우(MITM 등) 악성코드가 실행될 수 있음
    execute(file);
}
💡 수정 가이드
1. 해시 비교 로직 추가

다운로드한 파일의 해시를 계산하고 예상된 해시값과 비교하세요.

if (!calculateHash(file).equals(expectedHash)) { throw ... }
📊 분석 결과
🎯 목표

외부에서 파일을 다운로드할 때는 반드시 원본 파일이 변조되지 않았는지(무결성) 검증해야 합니다. 해시값 비교 로직을 추가하세요.

✅ 학습 진행도
  • 진단 시작
  • 실행 전 검증 추가
🐍 Python 코드 에디터 취약한 코드
download_script.py
import requests
import hashlib

def run_remote_script(url, expected_hash):
    # 코드를 다운로드
    code = requests.get(url).content
    
    # [취약점] 무결성 검사 없이 바로 실행 (매우 위험)
    exec(code)
💡 수정 가이드
1. 해시 검증

다운로드된 코드의 SHA-256 해시를 계산하여 비교합니다.

if hashlib.sha256(code).hexdigest() == expected_hash: exec(code)
📊 분석 결과
🎯 목표

원격 코드를 실행하는 것은 매우 위험합니다. 실행 전 반드시 암호화 해시 함수를 사용하여 코드의 무결성을 검증하세요.