이 영역을 누르면 첫 페이지로 이동
우당탕탕 보안이야기 블로그의 첫 페이지로 이동

우당탕탕 보안이야기

페이지 맨 위로 올라가기

우당탕탕 보안이야기

- 모의 해킹 - 취약점 분석/진단 - AWS

[1] 소스코드 분석-Try-Catch 예외처리

  • 2025.01.07 09:23
  • Develope/Source Code 분석
반응형

- 2025.01.07 -

 

} catch (Exception e) {
	System.err.print(e.getMessage());
    }

안전하지 않는 예외처리 디버그 코드

 

예외 발생 시 getMessage()를 이용한 오류 메세지를 통해 오류와 관련된 시스템 정보 등 민감한 정보가 유출될 수 있다.

이때, 사용하는 호출코드에 따라 세부내역의 정도가 다른데

getMessage < toString < printStackTrace

순서 이며 각각의 설명은 아래와 같다.

1. e.getMessage()

 

  • 역할
    예외 객체에 설정된 메시지(상세 메시지, detail message)를 String 형태로 반환합니다.
  • 출력 예시
    try {
        // 어떤 예외가 발생
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
     
  •  출력
    "Index out of bounds" 와 같이 예외가 담고 있는 메시지 문자열만 나타남(구체적인 예외 유형, 스택 정보 등은 제외).
     
  • 장점 및 특징
    • 예외의 “내용”만 간단히 알고 싶을 때 사용.
    • 가장 적은 정보를 출력.

 

 

2. toString()

  • 역할
    예외 클래스의 이름(fully-qualified name)과 예외 메시지를 합쳐 문자열로 반환합니다. (주로 클래스명: 상세메시지 형태)
  • 출력 예시
try {
    // 어떤 예외가 발생
} catch (Exception e) {
    System.out.println(e.toString());
}

 

  • 출력 "java.lang.IndexOutOfBoundsException: Index out of bounds" 식의 형태.
  • 장점 및 특징
    • getMessage()보다 조금 더 구체적 정보(예외 클래스명 포함).
    • 예외 발생 원인(메시지)과 예외 유형(클래스)이 모두 필요할 때 유용.

 

3. printStackTrace()

  • 역할
    예외의 스택 트레이스(Stack Trace)를 표준 오류 스트림(기본적으로 콘솔)에 출력합니다.
    예외가 발생하게 된 메서드(호출 스택)들을 추적할 수 있어, 디버깅에 가장 많이 활용됩니다.
  • 출력 예시
try {
    // 어떤 예외가 발생
} catch (Exception e) {
    e.printStackTrace();
}

 

    • 출력(예시):
      java.lang.IndexOutOfBoundsException: Index out of bounds
          at com.example.MyClass.myMethod(MyClass.java:10)
          at com.example.Main.main(Main.java:5)
    • 예외의 발생 지점, 호출 스택, 클래스·메서드 정보 등이 포함.
  • 장점 및 특징
    • 가장 자세한 예외 정보를 얻을 수 있어, 문제 해결 시 핵심적.
    • 에러 메시지와 클래스명 뿐 아니라 발생 지점(라인 번호 등)까지 알 수 있어 디버깅에 필수적.

 

 

  • getMessage()
    • 예외 메시지 문자열만을 반환.
  • toString()
    • 예외 클래스의 이름 + 예외 메시지를 합쳐 문자열로 반환.
  • printStackTrace()
    • 예외 클래스명, 메시지, 호출 스택 정보(어느 라인에서, 어떤 메서드에서 발생했는지)까지 모두 출력.

 

 

대응 방안

catch (IOException e)
{
	//오류와 관련된 최소한의 정보만을 제공하도록 조치
    logger.error("IOException Occured");
}

 

try-catch를 이용해 예외처리가 필요하다면 최소한의 정보만 로그에 기록 및 출력하도록 하여 공격자가 이를 통해 다른 정보를 확보할 수 없도록 조치가 필요합니다.

 

 

반응형
저작자표시 비영리 동일조건 (새창열림)

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

다른 글 더 둘러보기

정보

우당탕탕 보안이야기 블로그의 첫 페이지로 이동

우당탕탕 보안이야기

  • 우당탕탕 보안이야기의 첫 페이지로 이동

검색

메뉴

  • 홈

카테고리

  • 분류 전체보기 (66)
    • Whoami (1)
    • Malicious Code (9)
      • Analysis (5)
      • Review (4)
      • Recent Trend (0)
    • Digital Forensic (1)
    • Red Team (28)
      • Penetration Testing & CTF (13)
      • Tools (6)
      • 정보보안 (5)
      • Script (0)
      • AOS (4)
      • IOS (0)
    • Data Base (0)
    • Cloud System (3)
      • AWS (3)
    • OS (9)
      • Linux X (3)
      • Windows X (6)
    • Develope (14)
      • Dev Tools (3)
      • HTML (5)
      • CSS (4)
      • Python (1)
      • Source Code 분석 (1)
    • Synology (1)
      • NAS 서버 운영 (0)
      • NAS 서버 구축 (1)

정보

Wolfcall의 우당탕탕 보안이야기

우당탕탕 보안이야기

Wolfcall

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © Wolfcall. Designed by Fraccino.

티스토리툴바