티스토리 뷰

반응형

 

 

 

가. 원인

  - 원격으로 소스코드나 실행파일을 다운로드 후 무결성 검사없이 사용할 경우

 

 

나. 영향

  - 호스트 파일을 변조하여 DNS 스푸핑

  - 악성코드가 삽입된 소스코드를 실행

  - 변조된 데이터를 사용하여 의도하지 않은 결과를 유발

 

 

다. 보안대책

  - 안전한 암호화 기법을 적용 후 전송 및 사용 시 복호화

  - 최소한의 권한으로 다운로드한 코드를 실행

 

 

라. 안전한 코드

1. 안전한 암호화 적용

 

  1. 파일생성

  String jarFile = "./download/util.jar";

  byte[] loadFile = FileManager.getBytes( jarFile );

  // 개인키로 파일을 암호화

  loadFile = encrypt( loadFile, Encrypt.PRIVATE_KEY );

  FileManager.createFile( loadFile, encryptJarFile );

 

  2. 파일사용

  URL classURL = new URL( "http://filesave.com/download/encrypted_util.jar" );

  ... 

  byte[] loadFile = getFileData( classURL );

  // 공개키로 파일을 복호화 후 사용

  loadFile = decrypt( loadFile, Encrypt.PUBLIC_KEY );

  FileManager.createFile( loadFile, jarFile );

  ...

 

 

 

마. 진단방법

<무결성 검증>

  1. 클래스를 로드하는 코드를 확인

  2. 클래스 로드 전 체크섬을 실행 확인

  3. 코드 변조를 검증하는지 확인

 

 

바. 정/오탐 케이스

<정탐 케이스>

  1. 로드하려는 클래스의 체크섬을 비교하지 않을 경우 ( URLClassLoader )

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