본문 바로가기

카테고리 없음

DIVA 5단계

#1 문제 분석

가. 목적

민감정보가 어디에서 어떻게 저장되고 취약한 코드가 어디있는지 알기

나. 활용

소스코드, adb

 

#2 취약점 정보

가. 취약점

어떤 디렉토리의 어떤 파일에 저장하는지 공개한 점

나. 취약점인 이유

경로 조작 공격(Path Traversal Attack) 또는 디렉토리 탐색 공격(Directory Traversal Attack)에 유용

 

 #3 코드 분석(3과 다른 부분)

1. 

import java.io.File;

java.io.File :  자바에서 파일이나 디렉토리를 다루기 위한 클래스, 파일과 디렉토리를 생성삭제하고 파일속성을 읽고 수정할 수 있다.

 

2. 

import java.io.FileWriter;

 

java.io.FileWriter: 파일에 문자데이터를 작성하기 위한 클래스, 파일에 문자 데이터 쓰는 메서드 제공 

 

 

3. 

File ddir = new File(getApplicationInfo().dataDir);

 

현재 애플리케이션의 데이터 디렉토리를 나타내는 File 객체를 생성

getApplicationInfo().dataDir은 현재 애플리케이션의 데이터 디렉토리의 경로를 문자열로 반환

File 클래스의 생성자 'ddir'로 전달하여 현재 애플리케이션의 데이터 디렉토리를 나타내게 함

 

4.

File uinfo = File.createTempFile("uinfo", "tmp", ddir);

 

 

uinfo로 시작하고 tmp로 끝나는 임시 파일을 ddir은 파일이 생성될 디렉토리를 나타내는 File 객체 uinfo

생성된 임시 파일은 일시적으로 데이터를 저장할 때 유용하며, 프로그램이 종료되면 자동으로 삭제된다.

임시파일을 생성하는 이유는 데이터 저장하거나 작업을 수행하는 동안 보안,성능을 유지하기 위해서

(그냥 있는 파일이나 디렉터리에 바로 생성해서 넣으면 그 프로그램의 프로세스를 방해하게 되니까..?)

 

5.

uinfo.setReadable(true);
uinfo.setWritable(true);

디렉토리 객체 uinfo를 읽고 쓸 수 있도록 설정

 

 

6.

FileWriter fw = new FileWriter(uinfo);

uinfo라는 File객체를 사용하여 파일에 문자 데이터를 쓰기 위한 FileWriter 객체 fw를 생성하는 것

 

 

#4 취약점 예방

1. 사용자 입력을 신뢰할 수 있는 형태로 검증

2. 파일 시스템 경로를 동적으로 구성할 때 안전한 방식을 사용

   상위디렉터리 이동을 필터링, 혹은 절대 경로를 사용하여 조작 공격 방지