✏️ Java 코드 에디터
취약한 코드
public void fetchImage(String userUrl) throws IOException {
// [취약한 코드] 입력값을 그대로 URL 객체로 생성하여 요청
// 공격자가 "http://localhost:8080/admin" 입력 시 내부망 접근 가능
URL url = new URL(userUrl);
InputStream in = url.openStream();
// ... 이미지 처리 ...
}
💡 수정 가이드 (KISA 가이드)
1. 호스트 Whitelist 검증
URL 객체의 getHost() 메소드를 사용하여 허용된 도메인인지 확인합니다.
URL url = new URL(userUrl);
if (!"trusted.com".equals(url.getHost())) {
throw new SecurityException("Not allowed host");
}
InputStream in = url.openStream();
📊 분석 결과 및 설명
🎯 목표
서버가 외부 리소스를 가져올 때, 내부 IP나 허용되지 않은 도메인으로의 요청을 차단하여 내부망 스캔 및 정보 유출을 방지해야 합니다.
⚠️ 현재 취약점
SSRF
공격자가 서버를 경유하여 내부 시스템에 접근하거나 클라우드 메타데이터를 탈취할 수 있습니다.