보안 공부/소스코드 보안약점 진단

소스코드 보안약점 진단 - 부적절한 예외 처리

H.J.World 2022. 1. 28. 10:10
728x90
반응형

소스코드 보안약점 진단 // 소프트웨어 보안약점 진단 // SW 보안약점 진단과 같이 다양한 이름으로 불리는 진단 과업 중 하나이다.

SW개발보안은 해킹 등 사이버공격의 원인인 보안약점을 SW개발단계에서 사전에 제거하고 SW 개발 생명주기의 각 단계별로 수행하는 일련의 보안활동을 통하여 안전한 SW를 개발·운영하기 위한 목적으로 적용하는 개발체계이다.

해당 내용은 KISA에서 발간하는 취약점 진단 가이드 항목을 기준으로 작성한다.

 

제 4절 에러처리

에러를 처리하지 않거나, 불충분하게 처리하여 에러 정보에 중요정보(시스템 내부정보 등)가 포함될 때, 발생할 수 있는 취약점으로 에러를 부적절하게 처리하여 발생하는 보안약점이다.


1. 적절한 인증 없는 중요기능 허용

가. 개요

프로그램 수행 중에 함수의 결과값에 대한 적절한 처리 또는 예외상황에 대한 조건을 적절하게 검사 하지 않을 경우, 예기치 않은 문제를 야기할 수 있다.

나. 보안대책

값을 반환하는 모든 함수의 결과값을 검사하여, 그 값이 의도했던 값인지 검사하고, 예외 처리를 사용 하는 경우에 광범위한 예외 처리 대신 구체적인 예외 처리를 수행한다.

다. 코드예제

다음 예제는 try 블록에서 다양한 예외가 발생할 수 있음에도 불구하고 예외를 세분화하지 않고 광범위한 예외 클래스인 Exception을 사용하여 예외를 처리하고 있다.

- 안전하지 않은 코드의 예 JAVA -

1: try {
2: ...
3: reader = new BufferedReader(new InputStreamReader(url.openStream()));
4: String line = reader.readLine();
5: SimpleDateFormat format = new SimpleDateFormat("MM/DD/YY");
6: Date date = format.parse(line);
//예외처리를 세분화 할 수 있음에도 광범위하게 사용하여 예기치 않은 문제가 발생 할 수
있다.
7: } catch (Exception e) {
8: System.err.println("Exception : " + e.getMessage());
9: }

 

- 안전한 코드의 예 JAVA -

발생 가능한 예외를 세분화하고 발생 가능한 순서에 따라 예외를 처리하고 있다.

1: try {
2: ...
3: reader = new BufferedReader(new InputStreamReader(url.openStream()));
4: String line = reader.readLine();
5: SimpleDateFormat format = new SimpleDateFormat("MM/DD/YY");
6: Date date = format.parse(line);
// 발생할 수 있는 오류의 종류와 순서에 맞춰서 예외 처리 한다.
7: } catch (MalformedURLException e) {
8: System.err.println("MalformedURLException : " + e.getMessage());
9: } catch (IOException e) {
10: System.err.println("IOException : " + e.getMessage());
11: } catch (ParseException e) {
12: System.err.println("ParseException : " + e.getMessage());
13: }

 

라. 진단방법

함수 또는 메소드에 대하여 반환값을 검사하고 예외를 발생시키는 경우(①) 구체적인 예외처리를 수행하는지 확인한다.

1: public void readFromFile(String fileName) {
2: try {
3: …
4: File myFile = new File(fileName);
5: FileReader fr = new FileReader(myFile);
6: …
7: } catch(Exception ex){…}-----------------------------------①
8: }

 

728x90
반응형