🔢 Integer Overflow 실습 시뮬레이터

정수형 오버플로우 취약점 실습 & 금융권 시스템 공격 체험

✅ 학습 진행도
  • 취약점 진단 완료
  • try-catch 예외처리 추가
  • 음수 검증 (< 0)
  • 최대값 검증
  • 검증 통과
✏️ 코드 에디터 취약한 코드
MessageService.java 💡 try-catch와 범위 검증 추가
💡 수정 가이드
Step 1: try-catch 블록 추가
try { int param_ct = Integer.parseInt(tmp); // ... 배열 생성 코드 } catch(Exception e) { msg_str = "잘못된 입력(접근) 입니다."; }
Step 2: 음수 검증 추가
int param_ct = Integer.parseInt(tmp); if (param_ct < 0) { throw new Exception(); }
Step 3: 최대값 검증 추가 (선택)
if (param_ct > 1000) { throw new Exception("크기 제한 초과"); }
완성 예시:
try { int param_ct = Integer.parseInt(tmp); if (param_ct < 0) { throw new Exception(); } String[] strArr = new String[param_ct]; } catch(Exception e) { msg_str = "잘못된 입력(접근) 입니다."; }
📊 실시간 피드백
🎯 목표

외부 입력값을 배열 크기로 사용할 때 안전하게 검증하세요.

  • try-catch 예외 처리
  • 음수 값 검증 (< 0)
  • 범위 초과 검증
  • 에러 메시지 처리
⚠️ 취약점

현재 코드는 Integer Overflow에 취약합니다!

공격자가 -1이나 999999999를 입력하면 시스템이 다운될 수 있습니다.

📖 Integer Overflow란?

정수형 오버플로우는 외부 입력값을 정수형으로 변환할 때 값의 범위를 검증하지 않아 발생하는 보안 취약점입니다.

  • 음수 공격: 음수 값으로 배열 생성 시 NegativeArraySizeException
  • 과도한 값: 매우 큰 값으로 OutOfMemoryError 유발
  • DoS 공격: 시스템 리소스 고갈로 서비스 거부
0
조회 시도
0
공격 성공
0
공격 차단
한국금융은행
거래 내역 조회 시스템
일반 조회 모드
최근 거래 내역을 조회할 건수를 입력하세요 (1-100)
📊 공격 분석
💡 사용 방법

1단계: 일반 조회 시도 (예: 10)

2단계: "공격 모드" 활성화

3단계: Integer Overflow 공격 실행

🎯 공격 유형
  • 음수 공격: -1, -100
  • 메모리 공격: 999999999
  • Integer.MAX_VALUE: 2147483647
🎯 금융권 Integer Overflow 공격 시나리오
  • 거래 조회 시스템: 배열 크기로 사용되는 입력값 조작
  • DoS 공격: 과도한 메모리 할당으로 시스템 다운
  • 서비스 거부: OutOfMemoryError로 전체 서비스 중단
  • 시스템 불안정: 음수 입력으로 예외 발생
🛡️ 금융권 방어 대책
  • 입력값 범위 검증 (1 ~ 100)
  • 음수 값 차단
  • try-catch 예외 처리
  • 최대 허용 크기 제한
  • 에러 로깅 및 모니터링