유형 | 에러처리 |
보안약점 | 부적절한 예외 처리 |
개요 |
프로그램 수행 중에 함수의 결과값에 대한 적절한 처리 또는 예외상황에 대한 조건을 적절하게 검사하지 않을 경우, 예기치 않은 문제를 야기할 수 있다.
|
보안대책 |
값을 반환하는 모든 함수의 결과값을 검사하여, 그 값이 의도했던 값인지 검사하고, 예외 처리를 사용하는 경우에 광범위한 예외 처리 대신 구체적인 예외 처리를 수행한다.
|
진단방법 |
함수 또는 메소드에 대하여 반환값을 검사하고 예외를 발생시키는 경우(①) 구체적인 예외처리를 수행하는지 확인한다.
|
연관된 설계단계 기준 | - |
코드예제
● 안전하지 않은 코드 예 (Java)
try {
...
reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line = reader.readLine();
SimpleDateFormat format = new SimpleDateFormat("MM/DD/YY");
Date date = format.parse(line);
// 예외처리를 세분화 할 수 있음에도 광범위하게 사용하여 예기치 않은 문제가 발생할 수 있다.
} catch (Exception e) {
System.err.println("Exception : " + e.getMessage());
}
● 안전한 코드 예 (Java)
try {
...
reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line = reader.readLine();
SimpleDateFormat format = new SimpleDateFormat("MM/DD/YY");
Date date = format.parse(line);
// 발생할 수 있는 오류의 종류와 순서에 맞춰서 예외 처리 한다.
} catch (MalformedURLException e) {
System.err.println("MalformedURLException : " + e.getMessage());
} catch (IOException e) {
System.err.println("IOException : " + e.getMessage());
} catch (ParseException e) {
System.err.println("ParseException : " + e.getMessage());
}
● 안전하지 않은 코드 예 (C#)
try {
InvokeMtd();
// 예외처리를 세분화 할 수 있음에도 광범위하게 사용하여 예기치 않은 문제가 발생할 수 있다.
} catch (Exception e) {
}
● 안전한 코드 예 (C#)
try {
InvokeMtd();
// 발생할 수 있는 오류의 종류와 순서에 맞춰서 예외 처리 한다.
} catch (IOException e) {
logger.Debug("OException log here");
} catch (SQLException e){
logger.Debug("SQLException log here");
}
진단방법

함수 또는 메소드에 대하여 반환값을 검사하고 예외를 발생시키는 경우(①) 구체적인 예외처리를 수행하는지 확인한다.
● 일반적인 진단의 예
public void readFromFile(String fileName) {
try {
…
File myFile = new File(fileName);
FileReader fr = new FileReader(myFile);
…
} catch(Exception ex){…} ·······················①
}
'소프트웨어(SW) 보안약점 진단원 > 구현단계 보안약점 제거 기준' 카테고리의 다른 글
구현단계 보안약점 기준 - 부적절한 자원 해제 (0) | 2025.06.04 |
---|---|
구현단계 보안약점 기준 - Null Pointer 역참조 (1) | 2025.06.04 |
구현단계 보안약점 기준 - 오류상황 대응 부재 (1) | 2025.06.04 |
구현단계 보안약점 기준 - 오류 메시지 정보노출 (0) | 2025.06.04 |
구현단계 보안약점 기준 - 종료되지 않는 반복문 또는 재귀 함수 (0) | 2025.06.04 |