소스코드 진단

소스코드 진단

웹애플리케이션 취약점 진단은 크게 동적진단과 정적진단(소스코드진단)으로 나뉩니다. 두 진단의 가장 큰 차이는 "소스코드(정답지) 보고 진단하느냐?" 입니다.

 

동적진단

장점: 상대적으로 진단 소요기간이 적다.(1 url 2~3day | 1주~2주)
단점: 누락의 가능성이 상대적으로 높다. 

 

정적진단

장점: 보다 깊이 있고 상세한 진단이 가능하다.
단점: 시간이 오래 걸린다.(1서비스 1url 최소 2주~수개월)
         진단자 역량에 따라 결과 산출물의 품질이 달라진다.(편차가 상대적으로 크다)


소스코드 진단 목적

소스코드를 활용하여 애플리케이션 내 모든 입/출력 값에 대한 Data Tracing을 통해 취약점 누락 최소화 및 상세 취약점 점검을 수행하여 보안 수준을 향상시키는데 목적을 둡니다.

 

소스코드 진단 특징

  • 기존 동적 진단 대비 깊이 있는 진단 수행 및 다양한 케이스 도출이 가능합니다.
  • 소스코드 자동화도구(AppScan, Fortify 등) 대비 과/오탐 비율이 적습니다.
  • 개발 언어에 관계없이 모든 분석이 가능합니다. (입/출력 Data Tracing)
  • 취약점 다포인트 리스트 업 방식을 통한 누락률 최소화
  • 입/출력 분석을 통한 상세 서비스 분석이 가능
  • 진단자 역량에 따라 산출물 품질이 결정됨

 

소스코드 진단 방식

자동화 솔루션

- app scan/fortify 등 사용

- 결과 보고서 자동으로 산출됩니다.

- 장점 : 간편하고, 시간소요가 적습니다.

- 단점 : 과/오탐 비율이 크고, 솔루션을 잘 이해하고 있는 엔지니어(진단자)가 필요합니다.

 

수동진단

- 사람이 직접하는 방식

- 장점 : 도출한 취약점에 대한 결과가 명확합니다.

- 단점 : 시간이 오래 걸리고, 진단자에 대한 결과물 품질의 편차가 큽니다.

 

소스코드 진단 과정

소스코드 진단과정

입/출력 Tracing을 하는 이유는 진단자가 코드가 어떻게 작동되는지를 알아야 여러가지 공격을 수행해 보고 어느 부분에서 필터링을 해야하는지 알 수 있기 때문입니다. 또한 개발유형을 파악하고, 서비스가 어떻게 돌아가는지를 확인하기 위함입니다.

 

환경분석

서버유무, IP, OS, WEB, WAS, DBMS, Open Port, Default Page, Framework, Editor, 개발언어, Open Source...

 

RawData 

개요 및 목적

  • 전달받은 모든 소스를 확인하여 분석할 경우 시간이 오래 걸리기 때문에 빠른 시간 내 전체 입/출력 Data를 식별/분석하기 위함
  • 개발 유형 파악을 통해 개발자가 의도한 입/출력 및 환경 구성을 빠르게 파악하기 위해 고안된 방법
  • 애플리케이션이 가진 모든 입/출력을 파악하기 위함

 

Data 및 키워드 정의

  • 개발자 코딩 유형 분석 : GET(입력-가져오기), SET(초기화, 변수세팅, 출력), IN(입력), OUT(출력) 등
  • SQL DB 공통 정의 : SELECT / INSERT / UPDATE / DELETE
  • 웹 프레임워크 : MVC 구조 파악(Model, View, Controller, request, response)

 

키워드 추출 시 고려사항

  • 개발 유형 분석 단계에서 함수나 변수의 정형화된 키워드 검색은 지양 넓은 범위의 키워드 선택
  • 키워드 길이에 따라 Data 검색 결과가 상이

 

소스코드 분석방법

입력 > 입력 처리 > DB 처리 > 출력 처리 > 출력

  • 개발자 별 각기 다른 스타일로 개발이 구현되어 있기 때문에 진단자가 서비스 기능에 목적을 두고 분석할 경우, 소스코드를 파악하기 어렵기 때문에 애플리케이션에서 Data Tracing(흐름)을 추적하여 서비스를 분석해야합니다.
  • 입출력 RawData 작성을 통해 파악된 유형을 추적해야하며, 소스코드만 가지고 분석이 어려울 경우, 실제 서비스에 접근하여 동적(proxy)으로 추가 정보를 수집해야합니다.(동적 분석과 정적 분석을 통해 상호보완이 필요)
  • 입/출력 Tracing 및 개발자 유형 파악이 완료된 이후에는 좁은 범위의 키워드 검색이 필요합니다.