소스코드 보안약점 진단 // 소프트웨어 보안약점 진단 // SW 보안약점 진단과 같이 다양한 이름으로 불리는 진단 과업 중 하나이다.
SW개발보안은 해킹 등 사이버공격의 원인인 보안약점을 SW개발단계에서 사전에 제거하고 SW 개발 생명주기의 각 단계별로 수행하는 일련의 보안활동을 통하여 안전한 SW를 개발·운영하기 위한 목적으로 적용하는 개발체계이다.
해당 내용은 KISA에서 발간하는 취약점 진단 가이드 항목을 기준으로 작성한다.
제 6절 캡슐화
중요한 데이터 또는 기능성을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생하는 보안약점으로 정보노출, 권한문제 등이 발생할 수 있다.
3. 시스템 데이터 정보노출
가. 개요
시스템, 관리자, DB정보 등 시스템의 내부 데이터가 공개되면, 공격자에게 또 다른 공격의 빌미를 제공하게 된다.
나. 보안대책
일부 개발자의 경우 예외상황이 발생할 경우 시스템 메시지 등의 정보를 화면에 출력하도록 하는 경우가 많다. 예외상황이 발생할 때 시스템의 내부 정보가 화면에 출력되지 않도록 개발한다.
다. 코드예제
예외 발생시 getMessage()를 이용한 오류메시지를 통해 오류와 관련된 시스템 정보 등 민감한 정보 가 유출될 수 있다.
- 안전하지 않은 코드의 예 JAVA -
1: catch (IOException e) {
2: //오류 발생시 화면에 출력된 시스템 정보를 통해 다른 공격의 빌미를 제공 한다.
3: System.err.print(e.getMessage());
4: }
- 안전한 코드의 예 JAVA -
가급적이면 공격의 빌미가 될 수 있는 오류와 관련된 상세한 정보는 사용자에게 노출되지 않도록 최소한의 정보만을 제공한다.
1: catch (IOException e) {
2: //오류와 관련된 최소한의 정보만을 제공하도록한다.
3: logger.error("IOException Occured");
4: }
라. 진단방법
시스템 정보 출력 코드가 존재하는지 확인한다.
1: …
2: public void f() {
3: try {
4: g();
5: } catch (IOException e) {
6: // 예외 발생시 printf(e.getMessage())를 통해 오류 메시지 정보가 유출된다.
7: System.err.printf(e.getMessage());
8: }
9: }
10: private void g() throws IOException { … }
11: …
- 정탐코드의 예 -
다음의 예제와 같이 예외 정보에 대해 printStackTrace()등의 함수를 이용해 시스템 내부 데이터나 디버깅 정보를 공개하면 취약한 것으로 판단한다.
1: package com.product.dictionary.action;
2: import java.util.Date;
3: import javax.servlet.http.HttpServletRequest;
4: ….
5: public class GetAction extends BaseAction {
6: private TnFatCmTobeListDao tnFatCmTobeListDao;
7: public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServ- letRequest request, HttpServletResponse response) throws Exception
{
8: ActionForward forward = null;
9: try {
10: UserVO userVo = getUserInfo(request);
11: ………..
12: WikinmspaceGetNameManager nameSpaceMgr = new WikinmspaceGetNameMa13: nager();
nameSpaceMgr.setWikiNmspceId(mgr.getWikidocVO().getWikiNameSpaceId(
));
14: nameSpaceMgr.execute();
15: } catch(Exception e) {
16: e.printStackTrace();
17: throw new sysException(“iKEP.Message.Error.Common.general”, e);
18: }
'보안 공부 > 소스코드 보안약점 진단' 카테고리의 다른 글
소스코드 보안약점 진단 - Private 배열에 Public 데이터 할당 (0) | 2022.02.14 |
---|---|
소스코드 보안약점 진단 - Public 메서드로부터 반환된 Private 배열 (0) | 2022.02.09 |
소스코드 보안약점 진단 - 제거되지 않고 남은 디버그 코드 (0) | 2022.02.07 |
소스코드 보안약점 진단 - 잘못된 세션에 의한 데이터 정보노출 (1) | 2022.02.04 |
소스코드 보안약점 진단 - 소스코드 보안약점 진단 - 해제된 자원 사용 (0) | 2022.02.03 |