티스토리 뷰

반응형

 

 

 

가. 원인

  - 실행환경 / 사용자 등과 관련된 민감정보를 포함한 오류 메시지를 생성 및 외부에 출력 시

  - Exception 발생 시 Exception 정보를 출력 시

 

 

나. 영향

  - 공격자는 오류 메시지를 통해 공격에 활용될 수 있는 상세 오류 정보를 확인

  - 공격자가 프로그램 내부구조를 쉽게 파악

 

 

다. 보안대책

  - printStackTrace() 메서드를 사용하지 않도록 로직구현

  - 오류 메시지를 유용한 최소한의 정보만 포함하여 사용

  - Exception 발생 시 내부적으로 처리하고, 민감정보를 포함한 오류는 출력하지 않도록 미리 정의한 메시지를 제공

 

 

라. 안전한 코드

1. 최소정보 로깅

 

  try {

     rd = new BufferedReader( new FileReader( new File( fileName ) ) );

  } catch ( IOException e ) {

     // e.printStackTrace() <= 취약코드

     logger.error( "ERR-01: file open error" );

  } finally {

     try {

        if( rd != null ) {

           rd.close();

        }

     } catch ( Exception e ) {

        // e.printStackTrace() <= 취약코드

        logger.error( "ERR-02: file close error" );

     }

  }

 

 

 

마. 진단방법

<오류메시지 확인>

  1. 오류 메시지를 출력하는지 확인

  2. 오류메시지에 시스템 환경 / 유저정보 / 데이터 등의 민감정보가 포함되어 있는지 확인

 

 

바. 정/오탐 케이스

<정탐 케이스>

  1. 오류메시지를 통해 환경, 사용자, 관련 데이터 등의 내부정보가 유출될 경우 ( e.printStackTrace() )

 

<오탐 케이스>

  1. Exception의 관련 데이터 등의 내부정보를 로그로 기록할 경우

 

 

사. 기타

  - 4-1 오류메시지를 통한 정보 노출

    => printStackTrace( ) 를 통해 콘솔에 민감정보가 노출되는 것

 

  - 6-3 시스템 데이터 정보 노출

    => Exception 메시지를 사용자에게 전달하여 민감정보가 노출되는 것

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday