KR101696694B1 - 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 - Google Patents

역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 Download PDF

Info

Publication number
KR101696694B1
KR101696694B1 KR1020150115245A KR20150115245A KR101696694B1 KR 101696694 B1 KR101696694 B1 KR 101696694B1 KR 1020150115245 A KR1020150115245 A KR 1020150115245A KR 20150115245 A KR20150115245 A KR 20150115245A KR 101696694 B1 KR101696694 B1 KR 101696694B1
Authority
KR
South Korea
Prior art keywords
syntax tree
source code
abstract syntax
vulnerability
code
Prior art date
Application number
KR1020150115245A
Other languages
English (en)
Inventor
김진수
Original Assignee
(주)트리니티소프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)트리니티소프트 filed Critical (주)트리니티소프트
Priority to KR1020150115245A priority Critical patent/KR101696694B1/ko
Application granted granted Critical
Publication of KR101696694B1 publication Critical patent/KR101696694B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

역추적을 이용한 소스 코드 취약점 분석 방법 및 장치를 개시한다.
디스크 저장 장치(예컨대, HDD 또는 SSD)에 소스 코드를 저장하다가 필요한 부분만을 캐싱하는 방식으로 소스 코드를 역추적하여 취약점을 찾아내어, 개발단계(SDLC)에서부터 소스 코드의 허점, 오류, 에러가 없는 소프트웨어를 구현하는데 시큐어 코딩 솔루션을 제공할 수 있는 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치를 제공한다.

Description

역추적을 이용한 소스 코드 취약점 분석 방법 및 장치{Method And Apparatus For Analysing Source Code Vulnerability By Using TraceBack}
본 실시예는 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치에 관한 것이다.
이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.
최근 프로그램 개발에 대한 수요가 늘어나면서 많은 인력과 비용이 프로그램 개발에 투입되고 있다. 하지만, 하나의 프로젝트를 위한 프로그램 개발자가 다수이거나 프로그램 개발 능숙도가 유사하지 않은 경우, 하나의 프로그램이라고 할지라도 에러나 보안 취약점이 서로 다르게 나타날 수 있다. 하나의 프로그램이 완성되는 경우, 보안 취약점을 소스 코드를 분석하여 수작업으로 찾아내야 하는데, 대규모의 프로젝트가 진행되는 경우 보안 취약점을 놓치는 경우가 발생한다.
보안 취약점을 검색하는 종래의 기술로는 자료 구조를 기반으로 소스 코드를 분석하는 방법이 존재한다. 소스 코드를 기 정의된 문법에 따라 어휘 및 구문 분석하여 트리화하고, 트리화한 데이터에서 의미 분석하여 테이블을 구축하며, 구축된 테이블 및 트리 구조 기반으로 검사하여 위반된 코드 결함을 수정한다.
하지만, 종래의 보안 취약점 검색 기술은 트리 자료 구조를 구축하고, 테이블 자료를 구축해야 하므로, 그 연산 과정에서 컴퓨팅 자원 및 네트워킹 자원이 손실될 수 있으며, 소스 코드의 실행이 요구되므로 보안 취약점 룰(Rule)을 찾기 위해 경우의 수만큼의 작업을 반복해야 하는 문제가 있다. 또한, 종래 기술에서는 소스 코드 분석을 위한 작업을 위한 동작을 모두 메모리에 올려서 작업을 한다. 다시 말해, 프로그램 하나 당 용량이 크게 할당되기 때문에 메모리에 해당하는 16 기가 또는 32 기가를 모두 할당해야 하는 문제가 있다.
본 실시예는 디스크 저장 장치(예컨대, HDD(Hard Disk Drive) 또는 SSD(Solid State Drive))에 소스 코드를 저장하다가 필요한 부분만을 캐싱하는 방식으로 소스 코드를 역추적하여 보안 취약점을 찾아내어, 개발단계(SDLC)에서부터 소스 코드의 허점, 오류, 에러가 없는 소프트웨어를 구현하는 시큐어 코딩 솔루션을 제공할 수 있는 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치를 제공하는 데 목적이 있다.
본 실시예의 일 측면에 의하면, 소스 코드 분석 프로그램이 동작하는 방법에 있어서, 웹 사이트(Web Site)에 대한 프로젝트 전체의 소스 코드(Source Code)를 입력받는 코드 입력 과정; 상기 소스 코드 전체를 파싱(Parsing)하여 하나의 추상 구문 트리(AST: Abstract Syntax Tree)를 생성하는 추상 구문 트리 생성 과정; 상기 추상 구문 트리 상의 함수 간의 호출 방향을 분석하여 그래프로 표시한 호출 그래프(Call Graph)를 생성하는 호출 그래프 생성 과정; 상기 추상 구문 트리 상에 기 설정된 보안에 취약한 구문을 코드 블럭(Code Block)을 생성하는 코드 블럭 생성 과정; 및 상기 추상 구문 트리, 상기 호출 그래프 및 상기 코드 블럭을 기반으로 분석을 수행하여 취약점 정보를 추출하는 분석 과정을 포함하는 것을 특징으로 하는 소스 코드 취약점 분석 방법을 제공한다.
본 실시에의 다른 측면에 의하면, 하드웨어와 결합되어 웹 사이트(Web Site)에 대한 프로젝트 전체의 소스 코드(Source Code)를 입력받는 코드 입력 과정; 상기 소스 코드 전체를 파싱(Parsing)하여 하나의 추상 구문 트리(AST: Abstract Syntax Tree)를 생성하는 추상 구문 트리 생성 과정; 상기 추상 구문 트리 상의 함수 간의 호출 방향을 분석하여 그래프로 표시한 호출 그래프(Call Graph)를 생성하는 호출 그래프 생성 과정; 상기 추상 구문 트리 상에 기 설정된 보안에 취약한 구문을 코드 블럭(Code Block)을 생성하는 코드 블럭 생성 과정; 및 상기 추상 구문 트리, 상기 호출 그래프 및 상기 코드 블럭을 기반으로 분석을 수행하여 취약점 정보를 추출하는 분석 과정을 실행시키기 위하여 기록매체에 저장된 컴퓨터프로그램을 제공한다.
본 실시에의 다른 측면에 의하면, 웹 사이트에 대한 프로젝트 전체의 소스 코드를 입력받는 코드 입력부; 상기 소스 코드 전체를 파싱하여 하나의 추상 구문 트리(AST)를 생성하는 추상 구문 트리 생성부; 상기 추상 구문 트리 상의 함수 간의 호출 방향을 분석하여 그래프로 표시한 호출 그래프를 생성하는 호출 그래프 생성부; 상기 추상 구문 트리 상에 기 설정된 보안에 취약한 구문을 코드 블럭을 생성하는 코드 블럭 생성부; 및 상기 추상 구문 트리, 상기 호출 그래프 및 상기 코드 블럭을 기반으로 분석을 수행하여 취약점 정보를 추출하는 분석부를 포함하는 것을 특징으로 하는 소스 코드 취약점 분석 장치를 제공한다.
이상에서 설명한 바와 같이 본 실시예에 의하면, 디스크 저장 장치(예컨대, HDD 또는 SSD)에 소스 코드를 저장하다가 필요한 부분만을 캐싱하는 방식으로 소스 코드를 역추적하여 보안 취약점을 찾아내어, 개발단계(SDLC: Systems Development Life Cycle)에서부터 소스 코드의 허점, 오류, 에러가 없는 소프트웨어를 구현하는 시큐어 코딩 솔루션을 제공할 수 있는 효과가 있다.
본 실시예에 의하면, 소프트웨어 분석/설계, 개발 구현, 테스트, 운영 등 각 단계에서 발생할 수 있는 보안 취약점을 관리하기 위해 단계별로 소스 코드 통합 관리가 가능한 효과가 있다. 본 실시예에 의하면, 소스 코드 배포 관리, 리비전 관리, 소스 코드 백업/복구, 소스 코드 취약점 분석, 소스 코드 변조 탐지/복구, 개발자 업무 통제, 형상 관리가 가능한 효과가 있다.
본 실시예에 의하면, 소스 코드의 취약점을 분석하기 위해 추상 구문 트리(AST)를 메모리에 할당하는 것이 아니라, 디스크 저장 장치(예컨대, HDD 또는 SSD)에 저장하고 있다가 필요한 부분만을 캐싱하여 메모리 부하를 감소시키는 효과가 있다. 다시 말해, 종래기술은 소스 코드 분석을 위한 작업이 메모리 상에만 상주하기 때문에 하드디스크 성능과 관계가 없었으나 본 실시예에서는 디스크 저장 장치인 HDD 또는 SSD에 특화된 구조로 소스 코드를 분석하는 효과를 갖는다.
본 실시예에 의하면, 추상 구문 트리(AST)를 생성한 다음 각각의 호출 관계를 전부 분석하여 하나의 호출 그래프를 생성한 후 함수 간의 호출 방향을 이용하여 역추적을 수행하여 입력 부분의 보안 취약점 발생 부분 검색보다 역으로 추적하여 분석을 위한 추적의 경우의 수를 줄이는 효과가 있다.
본 실시예에 의하면, 빌드 과정, 개발환경 구축없이 소스 코드만으로 보안 취약점 분석이 가능하며, 가상 컴파일 과정을 이용하여 높은 탐지 정확도를 제공하는 효과가 있다.
도 1은 본 실시예에 따른 소스 코드 분석 시스템을 개략적으로 나타낸 블럭 구성도이다.
도 2는 본 실시예에 따른 소스 코드 분석 프로그램을 개략적으로 나타낸 블럭 구성도이다.
도 3은 본 실시예에 따른 소스 코드 분석 프로그램의 동작 방법을 설명하기 위한 순서도를 나타낸 도면이다.
도 4는 본 실시예에 따른 소스 코드 취약점 분석 과정을 구체적으로 설명하기 위한 순서도를 나타낸 도면이다.
도 5a, 5b, 5c, 5d는 본 실시예에 따른 소스 코드, 추상 구문 트리, 호출 그래프의 예시를 나타낸 도면이다.
도 6a, 6b는 본 실시예에 따른 소스 코드 분석 프로그램이 기업, 금융기관, 공공기관에 적용된 예시를 나타낸 도면이다.
이하, 본 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 실시예에 따른 소스 코드 분석 시스템을 개략적으로 나타낸 블럭 구성도이다.
본 실시예에 따른 소스 코드 분석 시스템은 소스 코드 분석 프로그램(100), 개발자 단말기, 소스 코드 분석 에이전트, 소스 코드 분석 매니저, 소스 코드 분석 퍼플리셔를 포함한다. 소스 코드 분석 시스템에 포함된 구성요소는 반드시 이에 한정되는 것은 아니다.
개발자 단말기는 프로그램 또는 프로토콜을 저장하기 위한 메모리, 해당 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비한다. 개발자 단말기는 (ⅰ) 각종 기기 또는 유무선 네트워크와 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, (ⅱ) 각종 프로그램과 데이터를 저장하기 위한 메모리, (ⅲ) 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치이다. 적어도 일 실시예에 따르면, 메모리는 램(Random Access Memory: RAM), 롬(Read Only Memory: ROM), 플래시 메모리, 광 디스크, 자기 디스크, 솔리드 스테이트 디스크(Solid State Disk: SSD) 등의 컴퓨터로 판독 가능한 기록/저장매체일 수 있다. 적어도 일 실시예에 따르면, 마이크로프로세서는 명세서상에 기재된 동작과 기능을 하나 이상 선택적으로 수행하도록 프로그램될 수 있다. 적어도 일 실시예에 따르면, 마이크로프로세서는 전체 또는 부분적으로 특정한 구성의 주문형반도체(Application Specific Integrated Circuit: ASIC) 등의 하드웨어로써 구현될 수 있다.
개발자 단말기는 소스 코드 분석 프로그램(100)을 탑재하여 소스 코드를 분석하고 보안 취약점을 추출한다. 소스 코드 분석 프로그램(100)은 개발자 단말기의 디스크 저장 장치(예컨대, HDD 또는 SSD)에 설치되어, 소스 코드를 분석하여 역방향으로 취약점 정보를 추출하는 프로그램을 의미한다.
소스 코드 분석 프로그램(100)은 개발자 단말기에 설치되어 IDE(Integrated Drive Electronics) 방식으로 동작한다. IDE 방식은 컴퓨터 마더보드의 데이터 버스와 컴퓨터의 디스크 저장 장치 간에 사용되는 표준 전자 인터페이스를 의미한다.
본 실시예에 따른 소스 코드 분석 프로그램(100)의 전반적인 동작에 대해 설명한다. 소스 코드 분석 프로그램(100)은 웹 사이트(Web Site)에 대한 프로젝트 전체의 소스 코드(Source Code)를 입력받는다. 소스 코드 분석 프로그램(100)은 소스 코드 전체를 파싱(Parsing)하여 하나의 추상 구문 트리(AST: Abstract Syntax Tree)를 생성한다. 소스 코드 분석 프로그램(100)은 추상 구문 트리 상의 함수 간의 호출 방향을 분석하여 그래프로 표시한 호출 그래프(Call Graph)를 생성한다. 소스 코드 분석 프로그램(100)은 추상 구문 트리 상에 기 설정된 보안에 취약한 구문을 코드 블럭(Code Block)을 생성한다. 소스 코드 분석 프로그램(100)은 추상 구문 트리, 상기 호출 그래프 및 코드 블럭을 기반으로 분석을 수행하여 취약점 정보를 추출한다.
소스 코드 분석 프로그램(100)은 소스 코드에 대한 ‘트리 구조화’, ‘심볼화’, ‘코드 블럭 정의’ 및 ‘디텍터 정의’등을 수행하여 소스 코드 취약점을 분석하는 소프트웨어 모듈을 의미한다. 소스 코드 분석 프로그램(100)을 이용하는 경우 빌드 환경 구축이 불필요(빌드과정 없음)하며, 단위/통합 테스트 가능하며 점검 속도가 빠르다.
본 실시예에 따른 소스 코드 분석 프로그램(100)은 소프트웨어 분석/설계, 개발 구현, 테스트, 운영 등 각 단계에서 발생할 수 있는 보안 취약점을 관리하기 위해 단계별로 소스 코드를 통합한 관리가 가능하다. 소스 코드 분석 프로그램(100)은 소스 코드 배포 관리, 리비전 관리, 소스 코드 백업/복구, 소스 코드 취약점 분석, 소스 코드 변조탐지/복구, 개발자 업무 통제, 형상 관리가 가능하다. 소스 코드 분석 프로그램(100)은 빌드 과정, 개발환경 구축없이 소스 코드만으로 보안 취약점 분석이 가능하며, 가상 컴파일 과정으로 높은 정확도로 보안 취약점을 탐지한다. 일반적인 소스 코드 분석 프로그램은 소스 코드 분석을 위한 동작을 메모리 상에만 상주하기 때문에 디스크 저장 장치(예컨대, HDD)의 성능과 관계가 없었으나 본 실시예에 따른 소스 코드 분석 프로그램(100)은 디스크 저장 장치(예컨대, HDD 또는 SSD)에 특화된 구조로 소스 코드를 분석한다. 다시 말해, 본 실시예에 의한 소스 코드 분석 프로그램(100)은 소스 코드의 보안 취약점을 분석하기 위해 추상 구문 트리를 메모리에 할당하는 것이 아니라, 디스크 저장 장치(예컨대, HDD 또는 SSD)에 저장하고 있다가 필요한 부분만을 캐싱하여 메모리 부하를 감소시킨다. 일반적인 소스 코드 분석 프로그램은 파일 하나(소스 코드 하나)에 대해 분석을 하기 때문에 서로 연관되어 있는 보안 취약점을 분석하지 못하는 경우가 많았다. 다시 말해, 송신측에서 수신측으로 파일을 전송한 경우 보안 취약점을 발견하지 못하는 경우가 많았다. 종래의 경우 복수의 파일을 다 검색해서 작업을 해야 하는 번거로움이 있었다.
본 실시예에 따른 소스 코드 분석 프로그램(100)은 일반적으로 프로그램이 함수에서 다른 함수를 호출하는 구조를 갖고 있으므로, 추상 구문 트리(AST)를 생성한 다음에 각각의 함수 간의 호출을 전부 분석하여 하나의 거대한 호출 그래프를 생성한다. 소스 코드 분석 프로그램(100)은 추상 구문 트리(AST) 함수 간의 호출 방향을 이용하여 역추적을 수행하여 입력 부분의 취약점 발생 부분 검색보다 역으로 추적하여 분석을 위한 추적의 경우의 수를 줄이는 방식으로 보안 취약점을 검출한다.
도 1에 도시된 ‘소스 코드 분석 에이전트’는 관리자의 보안 관리 업무 모니터링, 보안 취약점 분석을 지원한다. ‘소스 코드 분석 퍼블리셔’는 운영하는 웹 서버에 설치되어 소스 코드에 대한 위변조 탐지/복구 역할을 제공한다. ‘소스 코드 분석 매니저’는 소스 코드 저장소, 배포 관리, 버전관리 등 모든 보안 관련 업무를 지원한다.
도 2는 본 실시예에 따른 소스 코드 분석 프로그램을 개략적으로 나타낸 블럭 구성도이다.
본 실시예에 따른 소스 코드 분석 프로그램(100)은 코드 입력부(110), 추상 구문 트리 생성부(120), 호출 그래프 생성부(130), 코드 블럭 생성부(140) 및 분석부(150)를 포함한다. 소스 코드 분석 프로그램(100)에 포함된 구성요소는 반드시 이에 한정되는 것은 아니다.
소스 코드 분석 프로그램(100)에 포함된 각 구성요소는 장치 내부의 소프트웨어적인 모듈 또는 하드웨어적인 모듈을 연결하는 통신 경로에 연결되어 상호 간에 유기적으로 동작할 수 있다. 이러한 구성요소는 하나 이상의 통신 버스 또는 신호선을 이용하여 통신한다.
도 2에 도시된 소스 코드 분석 프로그램(100)의 각 구성요소는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 소프트웨어적인 모듈, 하드웨어적인 모듈 또는 소프트웨어와 하드웨어의 결합으로 구현될 수 있다.
코드 입력부(110)는 웹 사이트에 대한 프로젝트 전체의 소스 코드를 입력받는다. 코드 입력부(110) 5a에 도시된 바와 같은 소스 코드를 입력받는다.
추상 구문 트리 생성부(120)는 소스 코드 전체를 파싱하여 하나의 추상 구문 트리(AST)를 생성한다. 추상 구문 트리 생성부(120)는 5a에 도시된 바와 같은 소스 코드 전체를 파생하여 도 5b, 5c에 도시된 바와 같은 추상 구문 트리를 생성한다. 추상 구문 트리 생성부(120)는 소스 코드를 기반으로 추상 구문 트리(AST)로 구조화하는 동시에 변수를 심볼화한다.
추상 구문 트리 생성부(120)는 입력된 소스 코드 전체를 추상 구문 트리(AST)로 생성하기 때문에, 역으로 추상 구문 트리(AST)를 이용하여 소스 코드를 생성할 수 있다. 추상 구문 트리 생성부(120)는 추상 구문 트리(AST)를 생성(트리화)한 후 심볼을 생성(심볼화)한다. 예컨대, 심볼은 프로그램을 만들 때 클래스, 메소드, 변수 등을 생성한 후 소스 코드에서 가장 대표적인 그룹에서 심볼을 찾게 되면 ‘A’(변수)라는 심볼이 추출된다. 추상 구문 트리 생성부(120)는 추상 구문 트리(AST)를 생성하는 과정에서 구문상의 ‘클래스’, ‘메소드’, ‘변수’ 등을 추출하여 트리 구조화한다. 추상 구문 트리 생성부(120)는 추상 구문 트리(AST)를 생성하는 과정에서 구문상의 ‘클래스’, ‘메소드’, ‘변수’ 등을 추출하여 심볼화한다. 결과적으로 추상 구문 트리 생성부(120)에 의해 생성된 추상 구문 트리(AST)는 ‘클래스’, ‘메소드’, ‘변수’ 등을 추출하여 트리 구조화뿐만 아니라 심볼화까지 수행한다.
호출 그래프 생성부(130)는 ‘추상 구문 트리’를 기반으로 ‘호출 그래프’를 생성한다. 호출 그래프 생성부(130)는 도 5d에 도시된 바와 같이, 함수 간의 입출력 방향을 호출 그래프로 생성한다.
호출 그래프 생성부(130)는 추상 구문 트리 상의 함수 간의 호출 방향을 분석하여 그래프로 표시한 호출 그래프를 생성한다. ‘호출 그래프’는 추상 구문 트리 상에 호출을 모두 분석하여 각 트리 각각의 연결 관계(호출)를 별도의 그래프로 표현한다. 일반적으로 프로그램이 함수에서 다른 함수를 호출하는 구조를 갖고 있다. 호출 그래프 생성부(130)는 추상 구문 트리 생성부(120)에 의해 생성된 추상 구문 트리에서 각각의 호출을 모두 분석하여 하나의 거대한 호출 그래프를 생성한다. 다시 말해, 호출 그래프 생성부(130)는 검색해야하는 부분을 별도로 구분해 놓는다.
코드 블럭 생성부(140)는 ‘추상 구문 트리’를 기반으로 ‘코드 블럭’을 생성한다. 다시 말해, 코드 블럭 생성부(140)는 추상 구문 트리 상에 기 설정된 보안에 취약한 구문을 코드 블럭을 생성한다. 보안에 취약한 구문은 XSS(Cross Site Script) 발생(취약점 발생)이 예상되는 입력 구문, 출력 구문 및 데이터베이스 연결 구문 중 적어도 하나 이상의 구문을 포함한다.
‘코드 블럭’은 취약한 부분(입력, 출력, 데이터베이스 연결부 등)을 정의한다. ‘코드 블럭’은 ‘추상 구문 트리’에서 보안에 취약한 부분(입력, 출력, 데이터베이스 연결부 등)을 기 정의한 블럭으로서, 검색 과정을 줄이기 위해 검색할 구문을 미리 선별하여 지정된 블럭을 의미한다. ‘코드 블럭’은 복수 개가 존재하는 데, 다양한 종류로 구분된다. ‘코드 블럭’은 종류마다 복수의 노드를 포함한다. 예컨대, ‘Insert’라는 ‘코드 블럭’이 복수 개 있는 경우, ‘Insert’라는 코드 블럭의 역할에 따라 다양한 종류로 구분된다.
예컨대, 『http://www.naver.com/?q=
ⓐ = get_param[`q']
print(ⓐ);』
라는 구문이 존재하는 경우, ⓐ가 사용 변수가 된다. ‘사용자 입력 부분’과 ‘출력 부분’으로 구분되는데, ‘사용자 입력 부분’에서 보안 취약점이 발생한다.
분석부(150)는 ‘추상 구문 트리’, ‘호출 그래프’, ‘코드 블럭’을 기반으로 분석을 수행하여 취약점 정보를 추출한다. 분석부(150)는 추상 구문 트리, 호출 그래프 및 코드 블럭을 기반으로 분석을 수행하여 취약점 정보를 추출한다. 분석부(150)는 파인더(Finder)를 실행하여 추상 구문 트리에서 코드 블럭에 해당하는 부분을 선별한다.
분석부(150)는 호출 그래프의 호출 방향을 이용하여 코드 블럭에 해당하는 부분 중 취약점 발생 부분(Sink Point)으로부터 최초 취약점 입력 부분(Input Point)까지 역추적을 수행하여 다수의 입력 부분의 취약점 발생 부분 검색보다 역으로 추적하여 분석을 위한 추적의 경우의 수를 줄이도록 한다. 분석부(150)는 추상 구문 트리 상에서 코드 블럭에 해당하는 부분을 보안 취약점으로 판단하여 DB에 등록하고 디스플레이한다. 분석부(150)는 호출 그래프를 이용하여 역방향으로 검사를 수행한다. 분석부(150)는 코드 블럭에 해당하는 부분 중 방어 부분(Escape Point)에 해당하는 부분은 방어 코드로 인지하여 보안 취약점이 아닌 것으로 판단하고 넘어간다.
분석부(150)는 ‘코드 블럭’ 간의 연결을 확인하여, 결과물(취약점 ID, 연관라인, 결과라인)을 출력한다.
① 분석부(150)는 ‘코드 블럭’ 대상을 선별한다.
② 분석부(150)는 선별된 ‘코드 블럭’을 이용하여 역추적을 수행한다.
③ 분석부(150)는 역추적 필요한 부분에서, ‘추상 구문 트리’ 및 ‘호출 그래프’를 이용하여 취약점 정보 추출한다.
④ 분석부(150)는 관련 파일간의 흐름을 추적하는 화면을 구성한다.
분석부(150)는 자바 스크립트(Java Script)로 구현될 수 있다. 분석부(150)에서 동작하는 핵심 기능은 역추적 기능이다. 분석부(150)는 역추적 기능을 동작하기 위해 파인더(Finder)를 제공한다. 예컨대, 분석부(150)는 파인더를 실행한 후 역추적 기능을 이용하여 추상 구문 트리(AST) 중 ‘코드 블럭’으로 지정된 부분을 선별하고, ‘코드 블럭’으로 지정된 부분 중 예컨대, ‘Print’ → ‘Get Param’까지를 다 확인한다. 이후, 분석부(150)는 보안 취약점에 해당하는 부분이 ‘Get Param’임을 확인한다. 분석부(150)는 추상 구문 트리(AST) 중 룰(Rule) 개발자가 지정한 ‘코드 블럭’에 해당하는 부분을 보안 취약점으로 확인한다.
보안 취약점에 해당하는 ‘코드 블럭’은 룰 개발자가 기 설정한다. 예컨대, 룰 개발자는 XSS와 같이 사이트 개발자가 의도하지 않은 동작을 일으키는 부분을 ‘코드 블럭’으로 지정한다. 사용자 입력에 의해 개발자가 만들어 놓지 않은 기능을 실행하는 경우, SQL(Structured Query Language) 인젝션(Injection)과 유사하게 SQL 쿼리와 관련하여 크로스 사이트 스크립팅(Cross Site Scripting)이 발생한다. 다시 말해, 사용자가 게시판에 글을 쓸 때 <Script> 라는 태그를 입력하는 경우, SQL 테이블을 조회하는 쿼리가 사용된다. SQL 테이블을 조회하는 쿼리로 인해 게시판에 글과 목록이 모두 출력된다. <Script SQL>라고 글을 입력하는 경우, 서버의 글 목록이 출력되는데, 전술한 동작은 사용자가 의도하는 경우도 있지만, 사용자 의도와 무관하게 발생할 수 있다. 전술한 방식과 같이 XSS가 발생하는 것을 방지하기 위해서 해당 부분을 ‘코드 블럭’으로 지정할 수 있다. 룰 개발자는 XSS가 발생하는 것을 방지하기 위해 사용자 입력 A = ‘Get Param’이 입력되어 DB에 인써트(Insert) 되도록 한다. 룰 개발자는 데이터를 DB에 넣기 전에 ‘방어 코드’를 삽입할 수 있다. ‘방어 코드’로 인해 SQL 구문을 다 찾아내서 지워버리거나 DB에 등록되는 걸 거부하도록 할 수 있다.
분석부(150)는 데이터베이스에 삽입되는 부분과 사용자로부터 데이터를 입력받는 부분 사이에 방어 코드가 존재하는지의 여부도 확인한다. 예컨대, 분석부(150)는 ‘A = 방어 코드 SQL 삭제’인 경우, 추상 구문 트리(AST) 상에 ‘A’가 존재하는 지의 여부를 확인한다. 실제로 자바스크립트로 룰을 만들 때 첫 번째로 소스 코드를 분석하여 추상 구문 트리(AST)를 생성한다. 이때, 추상 구문 트리(AST)를 생성하는 로드만 약 20 ~ 30 개가 생성된다. 기본적인 파일이 존재하고 파일 밑에 한 줄씩 로드가 추가된다. 예컨대, 『File Exp Assign A
Get Param.....
Exp Method/all-Insert Param A』와 같은 구문이 생성된다.
룰 개발자가 ‘Get param’ 과 ‘Insert’를 ‘코드 블럭’으로 지정할 수 있다. 룰 개발자는 ① 보안 취약점 리스트를 생성하고, ② 보안 취약점을 잡기 위한 코드 블럭 리스트를 생성하고, ③ 점검 과정에서의 스크립트(Script)를 생성한다. 예컨대, 룰 개발자는 추상 구문 트리(AST) 중 ‘Get Param’, SQL을 넣는 ‘Insert’를 보안 취약점으로 추출하겠다고, 자바 스크립트로 프로그램을 설계할 수 있다. 분석부(150)는 추상 구문 트리(AST)를 검색해서 ‘Get Param’, ‘Insert’을 찾아내면 코드 블럭 리스트에 등록한다.
분석부(150)는 보안 취약점 확인이 완료된 후 파인더를 실행한다. 파인더 실행은 내부적으로 엔진에서 구현해 놓은 기능들을 가져다가 분석을 하는 과정을 의미한다. 분석부(150)는 코드 블럭 리스트에 등록된 ‘Insert’부터 시작해서 역으로 올라가는 방식으로 검색을 시작한다. 분석부(150)가 검색을 수행할 때 입력측부터 출력측(목적지)으로 정방향으로 내려오지 않는 이유는 경우의 수(Number Of Cases)가 너무 많아지기 때문이다. 예컨대, 함수가 서로 간에 호출 관계를 가질 때 정방향으로 위에서부터 내려 오게되면 함수간 도달을 위해 모든 경우의 수에 해당하는 방향을 모두 검사해야 한다. 하지만, 분석부(150)가 역방향으로 검색하는 경우 목적지로부터 입력측으로 역방향으로 올라가게 되므로 트리구조에서 경우의 수가 줄어들게 된다.
분석부(150)는 추상 구문 트리(AST) 상에서 보안 취약점을 찾기 위해 코드 블럭으로 지정된 ‘Get Param’과 ‘Insert’에 해당하는 부분을 찾는다. 분석부(150)는‘Get Param’과 ‘Insert’에 해당하는 부분을 보안 취약점으로 판단하여 엔진(소스 코드 분석 매니저)으로 보내준다. 엔진(소스 코드 분석 매니저)은 보안 취약점 DB에 등록을 하고, 사용자한테 보여준다. 분석부(150)가 역추적을 위해 역추적 대상을 선별(시작 위치, 끝 위치, 방어 코드 위치)를 확인한다. 분석부(150)는 역추적을 위해 어디서 시작해서 어디서 끝나며, 시작과 끝 사이에 어떠한 코드가 있는지 확인(시작과 끝 사이를 검색)한다. 따라서, 분석부(150)는 역추적 대상에 해당하는 역추적을 시작할 코드 블럭을 선별하고 어디에 도달해야 한다는 목적지에 해당하는 ‘코드 블럭’을 선별한다. 예컨대, ‘Insert’에서 역추적을 시작해서 ‘Get Param’에 도달을 해야 한다.
‘코드 블럭’에 해당하는 부분 중 취약점 발생 부분(Sink Point), 최초 취약점 입력 부분(Input Point), 방어 코드 부분(Escape Point)으로 구분된다. 취약점 발생 부분(Sink Point)은 취약점이 발생한 부분을 의미한다. 최초 취약점 입력 부분(Input Point)은 최초로 보안 취약점이 입력된 부분을 의미한다. 방어 코드 부분(Escape Point)은 방어 코드로 인지하여 보안 취약점이 아닌 것으로 판단하고 넘어가는 부분을 의미한다.
도 3은 본 실시예에 따른 소스 코드 분석 프로그램의 동작 방법을 설명하기 위한 순서도를 나타낸 도면이다.
소스 코드 분석 프로그램(100)은 웹 사이트에 대한 프로젝트 전체의 소스 코드를 입력받는다(S310). 소스 코드 분석 프로그램(100)은 소스 코드 전체를 파싱하여 하나의 추상 구문 트리(AST)를 생성한다(S320). 단계 S320에서 소스 코드 분석 프로그램(100)은 추상 구문 트리 생성부(120)는 소스 코드를 기반으로 추상 구문 트리(AST)로 구조화하는 동시에 변수를 심볼화한다.
소스 코드 분석 프로그램(100)은 추상 구문 트리 상의 함수 간의 호출 방향을 분석하여 그래프로 표시한 호출 그래프를 생성한다(S330). 소스 코드 분석 프로그램(100)은 추상 구문 트리 상에 기 설정된 보안에 취약한 구문을 코드 블럭을 생성한다(S340). 단계 S340에서 보안에 취약한 구문은 XSS 발생이 예상되는 입력 구문, 출력 구문 및 데이터베이스 연결 구문 중 적어도 하나 이상의 구문을 포함한다.
소스 코드 분석 프로그램(100)은 추상 구문 트리, 호출 그래프 및 코드 블럭을 기반으로 분석을 수행하여 취약점 정보를 추출한다(S350).
도 3에서는 단계 S310 내지 단계 S350을 순차적으로 실행하는 것으로 기재하고 있으나, 반드시 이에 한정되는 것은 아니다. 다시 말해, 도 3에 기재된 단계를 변경하여 실행하거나 하나 이상의 단계를 병렬적으로 실행하는 것으로 적용 가능할 것이므로, 도 3은 시계열적인 순서로 한정되는 것은 아니다.
전술한 바와 같이 도 3에 기재된 본 실시예에 따른 소스 코드 분석 프로그램의 동작 방법은 프로그램으로 구현되고 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다. 본 실시예에 따른 소스 코드 분석 프로그램의 동작 방법을 구현하기 위한 프로그램이 기록되고 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
도 4는 본 실시예에 따른 소스 코드 취약점 분석 과정을 구체적으로 설명하기 위한 순서도를 나타낸 도면이다.
소스 코드 분석 프로그램(100)은 파인더(Finder)를 실행하여 추상 구문 트리(AST)에서 코드 블럭에 해당하는 부분을 선별한다(S410).
소스 코드 분석 프로그램(100)은 호출 그래프의 호출 방향을 이용하여 코드 블럭에 해당하는 부분 중 취약점 발생 부분(Sink Point)으로부터 최초 취약점 입력 부분(Input Point)까지 역추적을 수행하여 다수의 입력 부분의 취약점 발생 부분 검색보다 역으로 추적하여 분석을 위한 추적의 경우의 수를 줄이도록 하는 역추적을 수행한다(S420).
소스 코드 분석 프로그램(100)은 추상 구문 트리 상에서 코드 블럭에 해당하는 부분을 취약점으로 판단하여 DB에 등록하고 디스플레이한다(S430).
도 4에서는 단계 S410 내지 단계 S430을 순차적으로 실행하는 것으로 기재하고 있으나, 반드시 이에 한정되는 것은 아니다. 다시 말해, 도 4에 기재된 단계를 변경하여 실행하거나 하나 이상의 단계를 병렬적으로 실행하는 것으로 적용 가능할 것이므로, 도 4는 시계열적인 순서로 한정되는 것은 아니다.
전술한 바와 같이 도 4에 기재된 본 실시예에 따른 소스 코드 취약점 분석 과정은 프로그램으로 구현되고 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다. 본 실시예에 따른 소스 코드 취약점 분석 과정을 구현하기 위한 프로그램이 기록되고 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
도 6a, 6b는 본 실시예에 따른 소스 코드 분석 프로그램이 기업, 금융기관, 공공기관에 적용된 예시를 나타낸 도면이다.
도 6a는 소스 코드 분석 프로그램이 기업, 금융기관에 적용된 예시를 나타낸 도면이다. 개발자 단말기에 탑재된 소스 코드 분석 프로그램은 ‘개발 서버’에 체크인 하여 ‘개발 서버’상의 보안 취약점을 일차적으로 분석한다. 이후, ‘관리 서버’의 ‘소스 코드 분석 매니저’를 이용하여 이차적으로 보안 취약점을 분석한다. ‘소스 코드 분석 매니저’는 소스 코드 저장소, 배포 관리, 버전관리 등 모든 보안 관련 업무를 지원한다. ‘개발 서버’에서 보안 취약점이 일차적으로 분석하고 ‘관리 서버’에서 보안 취약점을 이차적으로 분석하는 보안 담당자가 이관 통제를 수행하여 최종적으로 운영 서버에 적용된다. 다시 발해, 운영중인 ‘관리 서버’와 연동하여 변경되는 소스 코드에 대하 실시간으로 보안 취약점을 분석하는 방식이 적용된다.
도 6b는 소스 코드 분석 프로그램이 공공 기관에 적용된 예시를 나타낸 도면이다. 개발자별로 보안 취약점을 분석한 내용을 ‘소스 코드 분석 매니저’로 전송하여 보안 담당자가 보안 취약점 이력을 모니터링하는 방식이 적용된다. 다시 말해, 복수의 개발자 단말기에 ‘소스 코드 분석 프로그램’, ‘소스 코드 분석 에이전트’가 각각 탑재되어, 제 1 개발자가 보안 취약점을 분석한 결과인 ‘제 1 보안 취약점 정보’를 제 2 개발자 단말기에 탑재된 ‘소스 코드 분석 에이전트’로 전송한다. 이후, 제 2 개발자가 ‘제 1 보안 취약점 정보’를 기반으로 새롭게 보안 취약점을 분석한 결과인 ‘제 2 보안 취약점 정보’를 제 3 개발자 단말기에 탑재된 ‘소스 코드 분석 에이전트’로 전송하는 방식으로 제 N 개발자 단말기에 탑재된 ‘소스 코드 분석 에이전트’까지 전송한다. 제 N 개발자 단말기에 탑재된 ‘소스 코드 분석 에이전트’는 최종적으로 ‘소스 코드 분석 매니저’로 각 개발자 단말기로부터 수신한 ‘보안 취약점 정보’를 전송한다. 보안 담당자는 ‘소스 코드 분석 매니저’를 이용하여 전체 개발자의 보안 취약점 이력을 검토(모니터링)한다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 소스 코드 분석 프로그램
110: 코드 입력부 120: 추상 구문 트리 생성부
130: 호출 그래프 생성부 140: 코드 블럭 생성부
150: 분석부

Claims (8)

  1. 소스 코드 분석 프로그램이 동작하는 방법에 있어서,
    웹 사이트(Web Site)에 대한 프로젝트 전체의 소스 코드(Source Code)를 입력받는 코드 입력 과정;
    상기 소스 코드 전체를 파싱(Parsing)하여 하나의 추상 구문 트리(AST: Abstract Syntax Tree)를 생성하는 추상 구문 트리 생성 과정;
    상기 추상 구문 트리 상의 함수 간의 호출 방향을 분석하여 그래프로 표시한 호출 그래프(Call Graph)를 생성하는 호출 그래프 생성 과정;
    상기 추상 구문 트리 상에 기 설정된 보안에 취약한 구문을 코드 블럭(Code Block)을 생성하는 코드 블럭 생성 과정;
    파인더(Finder)를 실행하여 상기 추상 구문 트리에서 상기 코드 블럭에 해당하는 부분을 선별하는 과정;
    상기 호출 그래프의 호출 방향을 이용하여 상기 코드 블럭에 해당하는 부분 중 취약점 발생 부분(Sink Point)으로부터 최초 취약점 입력 부분(Input Point)까지 역추적을 수행하여 다수의 입력 부분의 취약점 발생 부분 검색보다 역으로 추적하여 분석을 위한 추적의 경우의 수를 줄이도록 하는 역추적 과정; 및
    상기 추상 구문 트리 상에서 상기 코드 블럭에 해당하는 부분을 취약점으로 판단하여 DB에 등록하고 디스플레이하는 과정
    을 포함하는 것을 특징으로 하는 소스 코드 취약점 분석 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 역추적 과정은,
    상기 호출 그래프를 이용하여 역방향으로 검사를 수행하는 것을 특징으로 하는 소스 코드 취약점 분석 방법.
  4. 제 1 항에 있어서,
    상기 역추적 과정에서,
    상기 코드 블럭에 해당하는 부분 중 방어 부분(Escape Point)에 해당하는 부분은 방어 코드로 인지하여 취약점이 아닌 것으로 판단하고 넘어가는 것을 특징으로 하는 소스 코드 취약점 분석 방법.
  5. 제 1 항에 있어서,
    상기 보안에 취약한 구문은 취약점 발생이 예상되는 입력 구문, 출력 구문 및 데이터베이스 연결 구문 중 적어도 하나 이상의 구문을 포함하는 것을 특징으로 하는 소스 코드 취약점 분석 방법.
  6. 제 1 항에 있어서,
    상기 추상 구문 트리 생성 과정은,
    상기 소스 코드를 기반으로 추상 구문 트리(AST)로 구조화하는 동시에 변수를 심볼화(Symbol)화하는 것을 특징으로 하는 소스 코드 취약점 분석 방법.
  7. 하드웨어와 결합되어
    웹 사이트에 대한 프로젝트 전체의 소스 코드를 입력받는 코드 입력 과정;
    상기 소스 코드 전체를 파싱하여 하나의 추상 구문 트리(AST)를 생성하는 추상 구문 트리 생성 과정;
    상기 추상 구문 트리 상의 함수 간의 호출 방향을 분석하여 그래프로 표시한 호출 그래프를 생성하는 호출 그래프 생성 과정;
    상기 추상 구문 트리 상에 기 설정된 보안에 취약한 구문을 코드 블럭을 생성하는 코드 블럭 생성 과정;
    파인더를 실행하여 상기 추상 구문 트리에서 상기 코드 블럭에 해당하는 부분을 선별하는 과정;
    상기 호출 그래프의 호출 방향을 이용하여 상기 코드 블럭에 해당하는 부분 중 취약점 발생 부분으로부터 최초 취약점 입력 부분까지 역추적을 수행하여 다수의 입력 부분의 취약점 발생 부분 검색보다 역으로 추적하여 분석을 위한 추적의 경우의 수를 줄이도록 하는 역추적 과정; 및
    상기 추상 구문 트리 상에서 상기 코드 블럭에 해당하는 부분을 취약점으로 판단하여 DB에 등록하고 디스플레이하는 과정
    을 실행시키기 위하여 기록매체에 저장된 컴퓨터프로그램.
  8. 웹 사이트에 대한 프로젝트 전체의 소스 코드를 입력받는 코드 입력부;
    상기 소스 코드 전체를 파싱하여 하나의 추상 구문 트리(AST)를 생성하는 추상 구문 트리 생성부;
    상기 추상 구문 트리 상의 함수 간의 호출 방향을 분석하여 그래프로 표시한 호출 그래프를 생성하는 호출 그래프 생성부;
    상기 추상 구문 트리 상에 기 설정된 보안에 취약한 구문을 코드 블럭을 생성하는 코드 블럭 생성부; 및
    파인더를 실행하여 상기 추상 구문 트리에서 상기 코드 블럭에 해당하는 부분을 선별하며, 상기 호출 그래프의 호출 방향을 이용하여 상기 코드 블럭에 해당하는 부분 중 취약점 발생 부분으로부터 최초 취약점 입력 부분까지 역추적을 수행하여 다수의 입력 부분의 취약점 발생 부분 검색보다 역으로 추적하여 분석을 위한 추적의 경우의 수를 줄이도록 하는 역추적하며, 상기 추상 구문 트리 상에서 상기 코드 블럭에 해당하는 부분을 취약점으로 판단하여 DB에 등록하고 디스플레이하는 분석부
    를 포함하는 것을 특징으로 하는 소스 코드 취약점 분석 장치.
KR1020150115245A 2015-08-17 2015-08-17 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치 KR101696694B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150115245A KR101696694B1 (ko) 2015-08-17 2015-08-17 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150115245A KR101696694B1 (ko) 2015-08-17 2015-08-17 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101696694B1 true KR101696694B1 (ko) 2017-01-18

Family

ID=57992011

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150115245A KR101696694B1 (ko) 2015-08-17 2015-08-17 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101696694B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190030490A (ko) * 2017-09-14 2019-03-22 국방과학연구소 프로그램 소스 코드의 보안 취약점 검출 장치 및 방법
CN110414240A (zh) * 2019-07-31 2019-11-05 浙江科技学院 一种计算机软件分析系统
KR102096017B1 (ko) 2018-11-29 2020-04-01 중앙대학교 산학협력단 추상 구문 트리를 기반으로 소스코드를 임베딩하여 소프트웨어 버그를 예측하는 방법 및 시스템
CN111753330A (zh) * 2020-06-18 2020-10-09 百度在线网络技术(北京)有限公司 数据泄露主体的确定方法、装置、设备和可读存储介质
CN113434870A (zh) * 2021-07-14 2021-09-24 中国电子科技网络信息安全有限公司 基于软件依赖分析的漏洞检测方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090071596A (ko) * 2006-09-20 2009-07-01 내셔널 아이씨티 오스트레일리아 리미티드 모델 검사를 병용하기 위한 전이 시스템 생성 방법
JP2010507165A (ja) * 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090071596A (ko) * 2006-09-20 2009-07-01 내셔널 아이씨티 오스트레일리아 리미티드 모델 검사를 병용하기 위한 전이 시스템 생성 방법
JP2010507165A (ja) * 2006-10-19 2010-03-04 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
박병연, '역추적 기법을 적용한 네트워크 보안 이벤트 연관성 분석', 공주대학교 박사학위논문, 2010. *
하경휘 외 4인, '프로그램 소스코드 취약성 분석에 관한 연구', 한국사이버테러정보전학회 2004년도 제1회 춘계학술발표대회, 2004.05. *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190030490A (ko) * 2017-09-14 2019-03-22 국방과학연구소 프로그램 소스 코드의 보안 취약점 검출 장치 및 방법
KR102014266B1 (ko) * 2017-09-14 2019-08-26 국방과학연구소 프로그램 소스 코드의 보안 취약점 검출 장치 및 방법
KR102096017B1 (ko) 2018-11-29 2020-04-01 중앙대학교 산학협력단 추상 구문 트리를 기반으로 소스코드를 임베딩하여 소프트웨어 버그를 예측하는 방법 및 시스템
CN110414240A (zh) * 2019-07-31 2019-11-05 浙江科技学院 一种计算机软件分析系统
CN111753330A (zh) * 2020-06-18 2020-10-09 百度在线网络技术(北京)有限公司 数据泄露主体的确定方法、装置、设备和可读存储介质
CN111753330B (zh) * 2020-06-18 2023-08-29 百度在线网络技术(北京)有限公司 数据泄露主体的确定方法、装置、设备和可读存储介质
CN113434870A (zh) * 2021-07-14 2021-09-24 中国电子科技网络信息安全有限公司 基于软件依赖分析的漏洞检测方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
US9715593B2 (en) Software vulnerabilities detection system and methods
US8875110B2 (en) Code inspection executing system for performing a code inspection of ABAP source codes
KR101696694B1 (ko) 역추적을 이용한 소스 코드 취약점 분석 방법 및 장치
US8782609B2 (en) Test failure bucketing
US8312440B2 (en) Method, computer program product, and hardware product for providing program individuality analysis for source code programs
US10761963B2 (en) Object monitoring in code debugging
CN110225029B (zh) 注入攻击检测方法、装置、服务器及存储介质
US9870309B2 (en) Variable tracking in program debugging
CN101751530B (zh) 检测漏洞攻击行为的方法及设备
KR20190041912A (ko) 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램
CN110059006B (zh) 代码审计方法及装置
Huang et al. UChecker: Automatically detecting php-based unrestricted file upload vulnerabilities
KR101979329B1 (ko) 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치
CN111859380A (zh) Android App漏洞的零误报检测方法
CN114911711A (zh) 一种代码缺陷分析方法、装置、电子设备及存储介质
Mitropoulos et al. Time present and time past: analyzing the evolution of JavaScript code in the wild
CN112131573A (zh) 安全漏洞的检测方法、装置及存储介质
CN114036526A (zh) 漏洞测试方法、装置、计算机设备和存储介质
CN113282606A (zh) 数据处理方法、装置、存储介质和计算设备
US8819645B2 (en) Application analysis device
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质
CN111666216B (zh) 一种智能合约分析方法及装置
CN114116471A (zh) 一种自动化代码扫描方法、系统、电子设备与存储介质
CN112948478A (zh) 基于链路的代码分析方法、装置、电子设备及存储介质
CN113392016A (zh) 对程序异常情况处理的规约生成方法、装置、设备及介质

Legal Events

Date Code Title Description
GRNT Written decision to grant