KR102519639B1 - 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치 - Google Patents

코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치 Download PDF

Info

Publication number
KR102519639B1
KR102519639B1 KR1020210085708A KR20210085708A KR102519639B1 KR 102519639 B1 KR102519639 B1 KR 102519639B1 KR 1020210085708 A KR1020210085708 A KR 1020210085708A KR 20210085708 A KR20210085708 A KR 20210085708A KR 102519639 B1 KR102519639 B1 KR 102519639B1
Authority
KR
South Korea
Prior art keywords
code
analysis routine
checked
providing
analysis
Prior art date
Application number
KR1020210085708A
Other languages
English (en)
Other versions
KR20230003985A (ko
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 KR1020210085708A priority Critical patent/KR102519639B1/ko
Priority to US17/853,821 priority patent/US20230004361A1/en
Publication of KR20230003985A publication Critical patent/KR20230003985A/ko
Priority to KR1020230037923A priority patent/KR20230044380A/ko
Application granted granted Critical
Publication of KR102519639B1 publication Critical patent/KR102519639B1/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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]

Landscapes

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

Abstract

본 발명의 일 실시예에 따른 컴퓨팅 장치에 의해 수행되는 방법은, 코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 단계, 상기 GUI를 통해 점검 대상 코드가 선택되면, 상기 점검 대상 코드에 대한 분석 루틴을 실행하되, 상기 분석 루틴은 상기 점검 대상 코드로부터 복수의 노드로 이루어진 추상 구문 트리(Abstract Syntax Tree)를 추출하는 동작을 포함하는, 단계, 및 상기 분석 루틴의 실행 결과를 제공하는 단계를 포함한다.

Description

코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치{METHOD FOR PROVIDING CODE INSPECTION INTERFACE, AND APPARATUS IMPLEMENTING THE SAME METHOD}
본 발명은 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치에 관한 것으로서, 보다 자세하게는, 코드의 규칙 준수 여부 및/또는 보안 취약점 분석을 위한 인터페이스를 제공하기 위한 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치에 관한 것이다.
상업용 및 기업용 소프트웨어의 경우 일반적으로 고도의 보안성이 요구되며, 소프트웨어의 개발 주체 또는 소프트웨어의 사용 주체가 설정한 고유의 코드 작성 규칙을 준수할 것이 요구되는 경우가 많다.
C언어, JAVA언어, 파이썬 등 종래에 가장 널리 사용되는 프로그래밍 언어로 작성된 프로그램들의 경우, 코드의 규칙 준수 여부 및/또는 보안 취약점 분석을 위한 분석 도구들이 제공되어 오고 있다.
그런데 기업용 ERP인 SAP과 연동하여 실행되는, ABAP(Advanced Business Application Programming) 언어로 구현된 프로그램 코드의 점검을 위한 도구의 기능과 활용성은 매우 제한적이다.
예를 들어, ABAP 프로그래밍 언어가 버전업 되면서 문법이 달라질 경우, 코드 점검을 위한 도구 또한 새롭게 구현해야 하는 어려움이 있다.
또한, 코드의 보안 취약점 탐지의 경우 오랜 시간이 소요되고, 실시간 분석이 어려운 문제점이 있다. 더구나, 코드의 분석 환경에서 보안 취약점 탐지 기능이 함께 실행될 경우 보안에 문제가 발생할 가능성이 존재한다.
따라서, 코드의 언어 버전과 무관하게 코드의 분석이 가능하면서, 개발과 동시에 실시간으로 보안 취약점을 탐지할 수 있는 기술이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는, 코드의 언어 버전과 무관하게 실시간으로 코드의 분석 및 보안 취약점 탐지가 가능한 인터페이스를 제공할 수 있는 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 코드의 개발과 동시에 실시간으로 보안 취약점을 분석하고 조치할 수 있는 환경을 제공함에 의해 개발 시간을 단축할 수 있는 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 개발 환경 및 사용자 설정에 따라 적용 가능한 유연한 룰 셋을 설정하여 정확한 분석 결과를 제공할 수 있는 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 개시의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 컴퓨팅 장치에 의해 수행되는 방법은, 코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 단계, 상기 GUI를 통해 점검 대상 코드가 선택되면, 상기 점검 대상 코드에 대한 분석 루틴을 실행하되, 상기 분석 루틴은 상기 점검 대상 코드로부터 복수의 노드로 이루어진 추상 구문 트리(Abstract Syntax Tree)를 추출하는 동작을 포함하는, 단계, 및 상기 분석 루틴의 실행 결과를 제공하는 단계를 포함한다.
일 실시예로서, 상기 분석 루틴은 제1 프로그래밍 언어로 구현된 제1 분석 루틴과 제2 프로그래밍 언어로 구현된 제2 분석 루틴을 포함하고, 상기 제1 분석 루틴은, 상기 선택된 점검 대상 코드로부터 복수의 노드로 이루어진 추상 구문 트리(Abstract Syntax Tree)를 추출하는 동작, 및 상기 추출된 추상 구문 트리를 상기 제2 분석 루틴의 입력으로 제공하는 동작을 포함하며, 상기 제2 분석 루틴은, 상기 제1 분석 루틴에 의해 제공된 추상 구문 트리를 적어도 부분적으로 이용하여 상기 점검 대상 코드를 분석하는 동작을 포함할 수 있다.
일 실시예로서, 상기 제1 프로그래밍 언어는 상기 점검 대상 코드의 작성에 사용된 프로그래밍 언어일 수 있다.
일 실시예로서, 상기 분석 루틴의 실행 결과를 제공하는 단계는, 상기 분석 루틴의 실행 결과에 기초하여 상기 점검 대상 코드에 대한 조치 가이드 정보를 제공하는 단계를 포함할 수 있다.
일 실시예로서, 상기 코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 단계는, 상기 점검 대상 코드를 선택하는 입력을 수신하는 제1 GUI, 상기 분석 루틴에 의해 사용되는 룰 셋을 설정하기 위한 입력을 수신하는 제2 GUI, 및 상기 분석 루틴의 실행 결과를 제공하는 제3 GUI를 표시하는 단계를 포함할 수 있다.
일 실시예로서, 상기 점검 대상 코드에 대한 분석 루틴을 실행하는 단계는, 상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계를 포함할 수 있다.
일 실시예로서, 상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는, 상기 추상 구문 트리에 기초하여 상기 점검 대상 코드의 실행 순서를 보여주는 제어 흐름도(Control Flow Graph)를 생성하는 단계, 및 상기 추상 구문 트리에 기초하여 점검 대상 코드를 내부 표현형(Intermediate Representation)으로 변환하는 단계를 포함할 수 있다.
일 실시예로서, 상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는, 상기 점검 대상 코드에 포함된 함수들 간의 호출 관계, 특정 시점에 사용되는 변수 값, 및 외부 입력값에 의해 변경이 발생한 지점을 분석한 결과에 기초하여 상기 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계를 포함할 수 있다.
일 실시예로서, 상기 기 설정된 룰 셋은, 각각에 심각도 속성이 부여된 복수의 룰을 포함하고, 상기 분석 루틴의 실행 결과를 제공하는 단계는, 상기 분석 루틴의 실행 결과를 상기 각 룰의 심각도 속성에 따라 구별하여 제공하는 단계를 포함할 수 있다.
일 실시예로서, 상기 기 설정된 룰 셋은, 각각에 우선 순위 속성이 부여된 복수의 룰을 포함하고, 상기 점검 대상 코드에 대한 분석 루틴을 실행하는 단계는, 상기 우선 순위 속성을 이용하여 상기 기 설정된 룰 셋 중 상기 분석 루틴에 적용할 룰 서브 셋을 선택하는 단계를 포함할 수 있다.
일 실시예로서, 상기 코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 단계는, 상기 기 설정된 룰 셋에 대한 신규 룰 추가, 미사용 룰 삭제, 및 룰 업데이트를 위한 GUI를 제공하는 단계를 포함할 수 있다.
일 실시예로서, 상기 기 설정된 룰 셋은, 금지구문 검출을 위한 제1 룰을 포함하고, 상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는, 상기 제1 룰에 기초하여 상기 점검 대상 코드에서 매크로가 선언된 문장을 검출하는 단계, 및 상기 매크로가 선언된 문장 내에, 기 저장된 금지구문 리스트 중에서 적어도 하나가 사용되었는지 여부를 검출하는 단계를 포함할 수 있다.
상기 제1 룰에 기초하여 상기 점검 대상 코드에서 매크로가 선언된 문장을 검출하는 단계는, 상기 점검 대상 코드의 타입이 Executable Program, Modulepool Program, Function Group, Class, 및 Include Program 중 어느 하나인지 판단하는 단계를 포함할 수 있다.
일 실시예로서, 상기 기 설정된 룰 셋은, RFC(Remote Function Communication) Function의 예외처리를 위한 제2 룰을 포함하고, 상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는, 상기 제2 룰에 기초하여 상기 점검 대상 코드 내 상기 RFC Function과 연관된 예외(Exception)의 등록 여부를 식별하는 단계, 상기 RFC Function에 해당하는 코드 섹션 내에 RAISE Exception 구문의 존재 여부를 식별하는 단계, 및 상기 RAISE Exception 구문이 존재하지 않는 경우, 상기 Function Group 내의 Include에 RAISE Exception 구문의 존재 여부를 식별하는 단계를 포함할 수 있다.
일 실시예로서, 상기 기 설정된 룰 셋은, RFC(Remote Function Communication) Function 내 ENQUEUE 및 DEQUEUE 사용 여부 점검을 위한 제3 룰을 포함하고, 상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는, 상기 제3 룰에 기초하여 상기 점검 대상 코드 내 상기 RFC Function에 해당하는 코드 섹션에 DML 구문의 사용 여부를 식별하는 단계, 및 상기 DML 구문이 사용된 경우, 문자열 'ENQUEUE_E*'의 존재 여부를 식별하는 단계를 포함할 수 있다.
일 실시예로서, 상기 기 설정된 룰 셋은, 두 개 이상의 테이블(Table)이 조인(join)된 뷰(View)의 버퍼링 검출을 위한 제4 룰을 포함하고, 상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는, 상기 제4 룰에 기초하여 상기 점검 대상 코드의 타입이 뷰인 경우 상기 뷰가 데이터베이스에 존재하는지 여부를 식별하는 단계, 및 상기 뷰에 조인된 테이블이 존재하면, 상기 뷰에 버퍼링이 설정되어 있는지 식별하는 단계를 포함할 수 있다.
일 실시예로서, 상기 뷰에 버퍼링이 설정되어 있는지 식별하는 단계는, 상기 뷰에 관한 정보를 포함하는 테이블을 참조하여 상기 뷰에 대한 버퍼 타입이 P, G, 또는 X인지 여부를 식별하는 단계를 포함할 수 있다.
일 실시예로서, 상기 분석 루틴의 실행 결과를 제공하는 단계는, 상기 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별한 결과를 이용하여 상기 점검 대상 코드의 룰 위반 점수를 산출하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 컴퓨터 판독 가능한 비일시적 기록 매체는, 컴퓨터로 하여금 상기 방법을 수행하도록 하는 컴퓨터 프로그램을 저장할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 코드 점검 인터페이스 제공 장치는, 하나 이상의 프로세서, 외부장치와 통신하는 통신 인터페이스, 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(load)하는 메모리, 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되, 상기 컴퓨터 프로그램은, 코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 동작, 상기 GUI를 통해 점검 대상 코드가 선택되면, 상기 점검 대상 코드에 대한 분석 루틴을 실행하되, 상기 분석 루틴은 상기 점검 대상 코드로부터 복수의 노드로 이루어진 추상 구문 트리(Abstract Syntax Tree)를 추출하는 동작, 및 상기 분석 루틴의 실행 결과를 제공하는 동작을 수행하기 위한 인스트럭션을 포함한다.
도 1은 본 발명의 몇몇 실시예들을 설명하기 위한 개념도이다.
도 2는 본 발명의 일 실시예에 따른 코드 점검 인터페이스 제공 장치의 구성을 도시한 블록도이다.
도 3은 본 발명의 다른 실시예에 따른 코드 점검 인터페이스 제공 방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 몇몇 실시예에 따른 인터페이스 및 제1 분석 루틴 제공 장치와 제2 분석 루틴 제공 장치의 동작의 흐름을 도시한 예이다.
도 5는 본 발명의 몇몇 실시예에 따른 코드 점검 인터페이스 제공 장치의 규칙 준수 여부 점검 프로세스를 도시한 예이다.
도 6은 본 발명의 몇몇 실시예에 따른 보안 분석 프로세스를 도시한 예이다.
도 7은 본 발명의 몇몇 실시예에 따른 룰 셋의 예시적인 카테고리 구성을 도시한 표이다.
도 8은 본 발명의 몇몇 실시예에 따라, 각각의 룰에 대해 우선 순위 및 심각도 속성이 부여된 예이다.
도 9는 본 발명의 몇몇 실시예에 따른 코드 분석 결과에 따라 룰 위반 점수를 산정하는 예이다.
도 10은 본 발명의 몇몇 실시예에 따른 점검 대상 코드를 선택하는 인터페이스의 예이다.
도 11은 본 발명의 몇몇 실시예에 따른 코드 분석 결과를 제공하는 인터페이스의 예이다.
도 12는 본 발명의 몇몇 실시예에 따른 코드 분석 결과에 따른 조치 가이드를 제공하는 인터페이스의 예이다.
도 13 내지 도 16은 본 발명의 몇몇 실시예에 따른 코드 분석을 위해 적용되는 예시적인 룰들의 위반 여부를 검출하는 동작의 흐름을 도시한 예이다.
도 17은 본 발명의 몇몇 실시예에 따른 방법들을 구현할 수 있는 예시적인 컴퓨팅 장치의 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 개시의 바람직한 실시 예들을 상세히 설명한다. 본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 개시의 기술적 사상을 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 본 개시의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 개시를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 개시를 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 개시의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 개시의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 1은 본 발명의 몇몇 실시예들을 설명하기 위한 개념도이다. 도 1을 참조하면, 본 발명의 실시예에 따른 코드 점검 인터페이스 제공 장치(1)는 개발자가 프로그램을 개발하는 과정에서 코드 분석을 수행하고 그 결과를 제공 받을 수 있는 인터페이스를 제공한다.
먼저, 코드 점검 인터페이스 제공 장치(1)는 개발자의 단말 장치로 제공한 GUI를 통해 점검 대상 코드를 선택 받고(1010), 선택된 점검 대상 코드에 대한 분석 루틴을 실행(1011)한다. 이 때, 분석 루틴은 점검 대상 코드를 서로 다른 유형의 룰 셋들에 기반하여 분석을 수행할 수 있는 제1 분석 루틴(1012)과 제2 분석 루틴(1014)을 포함할 수 있다. 예로서, 제1 분석 루틴(1012)은 설계(architecture), 코딩(coding), 개발 표준(develop rule), 성능(performance), 및 덤프(dump) 등과 같은 범주에 속하는 룰 셋을 적용하여 점검 대상 코드를 분석하고, 제2 분석 루틴(1014)은 보안 취약점(vulnerability)과 관련된 룰 셋을 적용하여 점검 대상 코드를 분석할 수 있다.
제1 분석 루틴(1012)과 제2 분석 루틴(1014)은 서로 다른 프로그래밍 언어로 구현될 수 있고, 제1 분석 루틴(1012)에 사용되는 프로그래밍 언어는 점검 대상 코드의 작성에 사용된 프로그래밍 언어와 동일한 것일 수 있다. 예로서, 점검 대상 코드가 SAP의 ABAP 언어인 경우, 제1 분석 루틴(1012)은 ABAP 언어로 구현되고, 제2 분석 루틴(1014)은 JAVA 언어 등으로 구현될 수 있다.
제1 분석 루틴(1012)은 점검 대상 코드로부터 추상 구문 트리(AST: Abstract Syntax Tree)를 추출하고, 추출된 추상 구문 트리에 기반하여 점검 대상 코드를 분석할 수 있다.
제2 분석 루틴(1014)은 제1 분석 루틴(1012)에서 추출된 추상 구문 트리(AST)를 입력 받고, 입력된 추상 구문 트리(AST)를 적어도 부분적으로 이용하여 점검 대상 코드를 분석한 후, 그 분석 결과를 제1 분석 루틴(1012)으로 출력할 수 있다.
상기와 같이 제1 분석 루틴(1012)과 제2 분석 루틴(1014)에 의한 분석 루틴의 실행(1011)이 완료되면, GUI를 통해 분석 루틴의 실행 결과를 제공(1015)한다. 이 때, 분석 루틴의 실행 결과는, 점검 대상 코드로부터 제1 분석 루틴(1012)과 제2 분석 루틴(1014)에 적용된 룰 셋 중 적어도 일부의 룰을 위반한 것으로 식별된 코드 섹션의 내역을 포함할 수 있다. 예로서, 분석 루틴의 실행 결과는, 점검 대상 코드에 포함되어 있는 오브젝트의 타입, 오브젝트의 이름, 위반한 룰, 소스 위치, 조치 가이드 등을 포함할 수 있다. 여기서, 오브젝트의 타입은 예컨대, PROG, FUNC, CLAS, ENQU, REPS, TYPE, VIEW 등으로 구분될 수 있다.
또한, 분석 루틴의 실행 결과는, 룰 위반 건수를 심각도 속성에 따라 구분하여 표시할 수 있다. 예로서, 각 룰에 대해 심각(Error), 경고(Warning), 및 알림(Info)으로 구분되는 심각도 속성을 부여하고, 분석 루틴의 실행 결과를 제공함에 있어, 룰 위반 건수를 심각(Error), 경고(Warning), 및 알림(Info) 별로 집계하여 제공할 수 있다. 이 때, 심각(Error), 경고(Warning)에 해당하는 룰 위반 건수를 이용하여 룰 위반 점수를 산정할 수 있고, 산정된 룰 위반 점수가 기준치 이상인지 여부에 따라 점검 대상 코드의 조치 범위를 결정할 수 있다.
상기와 같이, 본 발명의 실시예에 따른 코드 점검 인터페이스 제공 장치(1)에 의하면, 코드의 언어 버전과 무관하게 실시간으로 코드의 분석 및 보안 취약점 탐지가 가능한 인터페이스를 제공할 수 있다. 또한, 코드의 개발과 동시에 실시간으로 보안 취약점을 분석하고 조치할 수 있는 환경을 제공할 수 있다.
도 2는 본 발명의 일 실시예에 따른 코드 점검 인터페이스 제공 장치의 구성을 도시한 블록도이다. 본 발명의 실시예에 따른 코드 점검 인터페이스 제공 장치(1)는 통신부(16), 저장부(17), 및 프로세서(11)를 포함하고, 통신부(16)를 통해 사용자 단말(10)과 연결될 수 있다.
코드 점검 인터페이스 제공 장치(1)는 코드 분석을 위한 일련의 동작을 수행할 수 있는 인터페이스를 제공하는 장치로서, 예컨대 서버 또는 PC와 같은 컴퓨팅 장치로 구현될 수 있다.
통신부(16)는 사용자 단말(10)과 유선 또는 무선 통신방식을 이용하여 통신한다. 통신부(16)는 이더넷(Ethernet) 등과 같은 유선 통신방식으로 사용자 단말(10)과 통신하거나, 와이파이(Wi-Fi) 또는 블루투스(Bluetooth) 등과 같은 무선 통신방식으로 사용자 단말(10)과 통신할 수 있다. 통신부(16)가 통신하는 방식은 이에 한정되지 않고, 다른 통신방식을 이용하여 통신할 수도 있다.
저장부(17)는 점검 대상 코드의 분석 루틴을 위해 사용되는 룰 셋에 관한 정보와, 점검 대상 코드에 대한 분석 루틴의 실행 결과에 관한 정보를 저장할 수 있다. 또한, 저장부(17)는 룰 위반 내역에 따른 조치 가이드 정보와, 조치 예외 처리를 위한 참조 정보, 룰 위반 점수 산정 기준에 관한 정보 들을 저장할 수 있다.
프로세서(11)는 GUI 생성 모듈(12), 제1 분석 모듈(13), 제2 분석 모듈(14)을 포함하고, 이 외에 점검 대상 코드의 분석 결과의 제공과 관련된 추가적인 모듈을 더 포함할 수 있다. 도시된 예에서는, GUI 생성 모듈(12), 제1 분석 모듈(13), 및 제2 분석 모듈(14)이 동일한 장치 내에 포함된 구성으로 도시되었으나, 각각의 모듈(12, 13, 14)은 서로 다른 장치에서 실행될 수도 있다.
GUI 생성 모듈(12)은 코드 점검을 수행하기 위한 GUI를 제공한다. GUI 생성 모듈(12)은 점검 대상 코드의 선택, 분석 및 결과 제공과 관련된 GUI를 생성하여 개발자의 단말 장치로 제공할 수 있다.
일 실시예로서, GUI 생성 모듈(12)은 점검 대상 코드를 선택하는 입력을 수신하는 제1 GUI, 분석 루틴에 의해 사용되는 룰 셋을 설정하기 위한 입력을 수신하는 제2 GUI, 및 분석 루틴의 실행 결과를 제공하는 제3 GUI를 생성하여 제공할 수 있다.
제1 분석 모듈(13)은 GUI 생성 모듈(12)에서 제공하는 GUI를 통해 선택되는 점검 대상 코드에 대한 제1 분석 루틴을 실행한다. 제1 분석 루틴은 GUI를 통해 선택된 점검 대상 코드로부터 복수의 노드로 이루어진 추상 구문 트리(AST)를 추출하는 동작과, 추출된 추상 구문 트리에 기반하여 점검 대상 코드를 분석하는 동작을 포함할 수 있다.
이 때, 제1 분석 루틴은, 추상 구문 트리에 기반하여 점검 대상 코드를 분석함에 있어 기 설정된 룰 셋을 적용하고, 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별할 수 있다.
제1 분석 모듈(13)은 제1 분석 루틴에 의해 추출된 추상 구문 트리(AST)를 제2 분석 모듈(14)로 입력하여 점검 대상 코드에 대한 추가 분석이 이루어지도록 한다.
제2 분석 모듈(14)은 제1 분석 모듈(13)로부터 입력 받은 추상 구문 트리(AST)를 적어도 부분적으로 이용하여 점검 대상 코드에 대한 제2 분석 루틴을 실행한다.
제2 분석 루틴은 제1 분석 루틴에서 적용한 룰 셋과는 상이한 룰 셋을 적용하여 점검 대상 코드로부터 적용된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별할 수 있다. 예로서, 제1 분석 루틴은 설계(architecture), 코딩(coding), 개발 표준(develop rule), 성능(performance), 및 덤프(dump) 등과 같은 범주에 속하는 룰 셋을 적용하여 점검 대상 코드를 분석하고, 제2 분석 루틴은 보안 취약점(vulnerability)과 관련된 룰 셋을 적용하여 점검 대상 코드를 분석할 수 있다.
제2 분석 모듈(14)은 제2 분석 루틴에 의해 분석된 결과를 제1 분석 모듈(13)로 출력할 수 있다.
프로세서(11)는 제1 분석 모듈(13) 및 제2 분석 모듈(14)에서 출력되는 점검 대상 코드에 대한 분석 루틴의 실행 결과를 GUI를 통해 제공한다.
분석 루틴의 실행 결과는, 점검 대상 코드로부터 제1 분석 루틴과 제2 분석 루틴에 적용된 룰 셋 중 적어도 일부의 룰을 위반한 것으로 식별된 코드 섹션의 내역을 포함할 수 있다. 또한, 분석 루틴의 실행 결과는, 심각(Error), 경고(Warning), 및 알림(Info)으로 구분되는 각 룰의 심각도 속성별로 집계한 룰 위반 건수를 포함할 수 있다. 또한, 분석 루틴의 실행 결과는, 심각(Error), 경고(Warning)에 해당하는 룰 위반 건수를 이용하여 산정된 룰 위반 점수를 포함할 수 있다.
또한, 프로세서(11)는, 상기와 같이 제공되는 분석 루틴의 실행 결과를 이용하여 분석 루틴에 적용된 룰 셋 중 적어도 일부의 룰을 위반한 것으로 식별된 코드 섹션 각각에 대한 조치 가이드 정보를 제공할 수 있다.
도 3은 본 발명의 또 다른 실시예에 따른 코드 점검 인터페이스 제공 방법을 설명하기 위한 순서도이다.
본 발명의 실시예에 따른 코드 점검 인터페이스 제공 방법은 컴퓨팅 장치(100)에 의하여 실행될 수 있고, 예컨대 코드 점검 인터페이스 제공 장치(1)에 의해 실행될 수 있다. 본 실시예에 따른 방법을 실행하는 상기 컴퓨팅 장치(100)는 응용 프로그램 실행 환경을 구비한 컴퓨팅 장치일 수 있다. 본 발명의 실시예에 따른 방법에 포함되는 일부 동작의 수행 주체에 대한 기재가 생략될 수 있으며, 그러한 경우 그 주체는 상기 컴퓨팅 장치(100)임을 유의한다.
도 3을 참조하면, 먼저, 동작 S41에서, 코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)가 제공된다.
일 실시예로서, 동작 S41은, 점검 대상 코드를 선택하는 입력을 수신하는 제1 GUI, 점검 대상 코드에 대한 분석 루틴에 의해 사용되는 룰 셋을 설정하기 위한 입력을 수신하는 제2 GUI, 및 분석 루틴의 실행 결과를 제공하는 제3 GUI를 표시하는 동작을 포함할 수 있다.
일 실시예로서, 동작 S41은, 분석 루틴에 의해 사용되는 룰 셋에 대한 신규 룰 추가, 미사용 룰 삭제, 및 룰 업데이트를 위한 GUI를 제공하는 동작을 포함할 수 있다.
다음으로, 동작 S42에서, GUI를 통해 점검 대상 코드가 선택되면, 점검 대상 코드에 대한 분석 루틴이 실행된다. 이 때, 분석 루틴은 점검 대상 코드로부터 복수의 노드로 이루어진 추상 구문 트리(Abstract Syntax Tree)를 추출하는 동작을 포함한다. 점검 대상 코드로부터 추상 구문 트리(AST)를 추출하고 추출된 AST를 이용하는 세부 분석 루틴을 실행함으로써, 점검 대상 코드의 언어 버전이 달라지더라도 세부 분석 루틴을 수정할 필요가 없거나 수정할 코드의 비중이 경감될 수 있다.
일 실시예로서, 분석 루틴은 제1 프로그래밍 언어로 구현된 제1 분석 루틴과 제2 프로그래밍 언어로 구현된 제2 분석 루틴을 포함할 수 있다. 여기서, 제1 분석 루틴은, 선택된 점검 대상 코드로부터 복수의 노드로 이루어진 추상 구문 트리(AST)를 추출하는 동작, 추출된 추상 구문 트리를 제2 분석 루틴의 입력으로 제공하는 동작, 추상 구문 트리를 적어도 부분적으로 이용하여 점검 대상 코드를 분석하는 동작을 포함할 수 있다. 제2 분석 루틴은, 제1 분석 루틴에 의해 제공된 추상 구문 트리를 적어도 부분적으로 이용하여 점검 대상 코드를 분석하는 동작을 포함할 수 있다.
일 실시예로서, 제1 프로그래밍 언어는 점검 대상 코드의 작성에 사용된 프로그래밍 언어일 수 있다. 예로서, 점검 대상 코드가 SAP의 ABAP 언어로 작성된 경우, 제1 분석 루틴은 ABAP 언어로 구현되고, 제2 분석 루틴은 JAVA 언어로 구현될 수 있다.
일 실시예로서, 동작 S42는, 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 동작을 포함할 수 있다.
일 실시예로서, 동작 S42에서, 코드 섹션을 식별하는 동작은, 추상 구문 트리에 기초하여 상기 점검 대상 코드의 실행 순서를 보여주는 제어 흐름도(Control Flow Graph)를 생성하는 동작, 및 추상 구문 트리에 기초하여 점검 대상 코드를 내부 표현형(Intermediate Representation)으로 변환하는 동작을 포함할 수 있다.
또한, 동작 S42에서, 코드 섹션을 식별하는 동작은, 점검 대상 코드에 포함된 함수들 간의 호출 관계, 특정 시점에 사용되는 변수 값, 및 외부 입력값에 의해 변경이 발생한 지점을 분석한 결과에 기초하여 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 동작을 포함할 수 있다.
일 실시예로서, 동작 S42는, 각 룰에 부여된 우선 순위 속성을 이용하여 기 설정된 룰 셋 중 분석 루틴에 적용할 룰 서브 셋을 선택하는 동작을 포함할 수 있다. 이 때, 각 룰에 부여되는 우선 순위 속성은 룰의 중요도에 따라 예컨대 I레벨(높음), II레벨(중간), III레벨(낮음) 등과 같이 부여될 수 있고, 분석 루틴에 적용할 룰 서브 셋을 선택 시 우선 순위 속성이 예컨대 I레벨(높음)인 경우만을 선택하도록 할 수 있다.
일 실시예로서, 동작 S42는, 금지구문 검출을 위한 제1 룰을 위반하는 코드 섹션을 식별하는 동작을 포함할 수 있다. 예로서, 제1 룰에 기초하여 점검 대상 코드에서 매크로가 선언된 문장을 검출하고, 매크로가 선언된 문장 내에, 기 저장된 금지구문 리스트 중에서 적어도 하나가 사용되었는지 여부를 검출할 수 있다.
일 실시예로서, 동작 S42는, RFC(Remote Function Communication) Function의 예외처리를 위한 제2 룰을 위반하는 코드 섹션을 식별하는 동작을 포함할 수 있다. 예로서, 제2 룰에 기초하여 점검 대상 코드 내 상기 RFC Function과 연관된 예외(Exception)의 등록 여부를 식별하고, RFC Function에 해당하는 코드 섹션 내에 RAISE Exception 구문의 존재 여부를 식별하고, RAISE Exception 구문이 존재하지 않는 경우, Function Group 내의 Include에 RAISE Exception 구문의 존재 여부를 식별할 수 있다.
일 실시예로서, 동작 S42는, RFC Function 내 ENQUEUE 및 DEQUEUE 사용 여부 점검을 위한 제3 룰을 위반하는 코드 섹션을 식별하는 동작을 포함할 수 있다. 예로서, 제3 룰에 기초하여 점검 대상 코드 내 상기 RFC Function에 해당하는 코드 섹션에 DML 구문의 사용 여부를 식별하고, DML 구문이 사용된 경우, 문자열 'ENQUEUE_E*'의 존재 여부를 식별할 수 있다.
일 실시예로서, 동작 S42는, 두 개 이상의 테이블(Table)이 조인(join)된 뷰(View)의 버퍼링 검출을 위한 제4 룰을 위반하는 코드 섹션을 식별하는 동작을 포함할 수 있다. 예로서, 제4 룰에 기초하여 점검 대상 코드의 타입이 뷰인 경우 뷰가 데이터베이스에 존재하는지 여부를 식별하고, 뷰에 조인된 테이블이 존재하면, 뷰에 버퍼링이 설정되어 있는지 식별할 수 있다.
제1룰 내지 제4룰에 대해서는 도 14 내지 도 17을 참조하여 보다 자세히 설명하기로 한다.
마지막으로, 동작 S43에서, 분석 루틴의 실행 결과가 제공된다. 여기서, 분석 루틴의 실행 결과는, 점검 대상 코드로부터 분석 루틴에 적용된 룰 셋 중 적어도 일부의 룰을 위반한 것으로 식별된 코드 섹션의 내역을 포함할 수 있다. 또한, 분석 루틴의 실행 결과는, 심각(Error), 경고(Warning), 및 알림(Info)으로 구분되는 각 룰의 심각도 속성별로 집계한 룰 위반 건수를 포함할 수 있다. 또한, 분석 루틴의 실행 결과는, 심각(Error), 경고(Warning)에 해당하는 룰 위반 건수를 이용하여 산정된 룰 위반 점수를 포함할 수 있다.
일 실시예로서, 동작 S43은, 분석 루틴의 실행 결과에 기초하여 상기 점검 대상 코드에 대한 조치 가이드 정보를 제공하는 동작을 포함할 수 있다.
상기와 같은 본 발명의 실시예에 따른 방법에 의하면, 코드의 언어 버전과 무관하게 실시간으로 코드의 분석 및 보안 취약점 탐지가 가능한 인터페이스를 제공할 수 있다. 또한, 코드의 개발과 동시에 실시간으로 보안 취약점을 분석하고 조치할 수 있는 환경을 제공함에 의해 개발 시간을 단축할 수 있다.
도 4는 본 발명의 몇몇 실시예에 따른 인터페이스 및 제1 분석 루틴 제공 장치와 제2 분석 루틴 제공 장치의 동작의 흐름을 도시한 예이다. 도 4를 참조하면, 인터페이스 및 제1 분석 루틴 제공 장치(2)는 코드 점검 프로그램을 실행하여 점검 대상 코드를 분석하는 일련의 동작을 수행하고, 제2 분석 루틴 제공 장치(3)는 인터페이스 및 제1 분석 루틴 제공 장치(2)로부터 보안 분석 요청이 수신되면, 점검 대상 코드에 대한 보안 분석을 수행하여, 그 결과를 인터페이스 및 제1 분석 루틴 제공 장치(2)로 제공한다.
도시된 예에서, 인터페이스 및 제1 분석 루틴 제공 장치(2)에서 코드 점검 프로그램이 실행(S21)되면, 보안 엔진 실행 호출(S22)을 통해 제2 분석 루틴 제공 장치(3)로 보안 분석 요청이 전송되고, 이 때 분석을 위한 오브젝트 타입, 오브젝트 이름, 적용 룰 목록, 서버ID, 오브젝트 당 분석 타임아웃(timeout), 분석 ID 등의 정보를 전송할 수 있다.
제2 분석 루틴 제공 장치(3)는 보안 분석 요청에 대한 접수 결과로서 'OK' 값을 반환하고, 보안 분석을 시작(S31)하면, 인터페이스 및 제1 분석 루틴 제공 장치(2)로 추상 구문 트리(AST)의 추출을 요청한다.
인터페이스 및 제1 분석 루틴 제공 장치(2)는 제2 분석 루틴 제공 장치(3)의 요청에 따라 점검 대상 코드로부터 추상 구문 트리(AST)를 추출(S23)하고, 그 결과를 제2 분석 루틴 제공 장치(3)로 반환한다.
인터페이스 및 제1 분석 루틴 제공 장치(2)는 추출된 추상 구문 트리(AST)를 이용하여 코드 분석을 수행(S24)하고, 이 때, 기 설정된 룰 셋(241) 중 적어도 일부를 위반하는 코드 섹션을 식별할 수 있다.
제2 분석 루틴 제공 장치(3) 또한 인터페이스 및 제1 분석 루틴 제공 장치(2)로부터 제공된 추상 구문 트리(AST)의 추출 결과(S32)를 이용하여 보안 분석을 수행(S33)하고, 이 때 기 설정된 보안 룰 셋(331) 중 적어도 일부를 위반하는 코드 섹션을 식별할 수 있다.
인터페이스 및 제1 분석 루틴 제공 장치(2)는 코드 분석 수행(S24)이 완료되면, 그 결과를 저장(S25)하고, 제2 분석 루틴 제공 장치(3)로 보안 분석 수행(S33)에 따른 결과를 요청한다.
제2 분석 루틴 제공 장치(3)는 보안 분석 수행(S33)이 완료되면, 그 결과를 저장(S34)한 후 인터페이스 및 제1 분석 루틴 제공 장치(2)로 반환하고, 보안 분석을 종료(S35)한다.
인터페이스 및 제1 분석 루틴 제공 장치(2)는 저장된 코드 분석 결과와 제2 분석 루틴 제공 장치(3)로부터 반환된 보안 분석 결과를 이용하여 결과를 집계(S26)한 후 코드 점검 프로그램을 종료(S27)한다. 이 때, 코드 분석 결과와 보안 분석 결과로부터 점수 계산 기준(261)을 이용하여 룰 위반 점수를 산정할 수 있다. 예로서, 심각(Error) 및 경고(Warning)에 해당하는 룰의 위반 건수와, 기준 라인 수 대비 코드의 전체 라인 수 비율을 이용하여 룰 위반 점수를 산정할 수 있다.
도 5는 본 발명의 몇몇 실시예에 따른 코드 점검 인터페이스 제공 장치의 규칙 준수 여부 점검 프로세스를 도시한 예이다. 도 5를 참조하면, 인터페이스 및 제1 분석 루틴 제공 장치(2)는 코드 분석을 수행(S24)함에 있어, 기 저장되어 있는 룰 셋(241)을 참조하여 적용할 룰 셋을 조회(S241)하고, 조회된 룰 셋을 이용하여 점검 대상 코드 중 룰 셋 중 적어도 일부를 위반한 코드 섹션을 탐지(S242)할 수 있다. 이 때, 룰을 위반한 코드 섹션의 라인 번호가 추출될 수 있다.
인터페이스 및 제1 분석 루틴 제공 장치(2)는 코드 분석의 결과를 집계(S26)함에 있어, 점수 계산 기준(261)을 참조하여 룰 위반 점수를 산정(S261)하고, 조치 가이드 정보(262)를 참조하여 룰을 위반한 코드 섹션 각각에 대해 조치 가이드를 조회(S262)할 수 있다.
인터페이스 및 제1 분석 루틴 제공 장치(2)는 코드 분석을 수행(S24)하고 결과를 집계(S26)하는 과정에서 조치 예외 처리(S2431)를 수행할 수 있다. 즉, 조치 예외 정보(2611)로서 저장되어 있는 룰에 대해서는 조치 예외 관리(S2611)를 통해 룰 위반 점수 산정 시 제외되도록 할 수 있다.
도 6은 본 발명의 몇몇 실시예에 따른 보안 분석 프로세스를 도시한 예이다. 도 6을 참조하면, 제2 분석 루틴 제공 장치(3)는 보안 분석을 수행(S33)함에 있어, 인터페이스 및 제1 분석 루틴 제공 장치(2)로부터 입력되는 추상 구문 트리(AST)(S321)를 이용하여 점검 대상 코드의 실행 순서를 보여주는 제어 흐름도(Control Flow Graph)를 생성(S331)하고, 점검 대상 코드를 내부 표현형(Intermediate Representation)으로 변환(S332)할 수 있다.
제2 분석 루틴 제공 장치(3)는 제어 흐름도와 변환된 점검 대상 코드를 이용하여, 점검 대상 코드에 포함된 함수들 간의 호출 관계를 분석(S333)하고, 특정 시점에 사용되는 변수 값 분석(S334)과, 및 외부 입력값에 의해 변경이 발생한 지점에 관한 오염 분석(S335)를 수행하여, 그 분석 결과로부터 기 설정된 보안 룰 셋(331) 중 일부 룰을 위반하는 코드 섹션을 식별(S336)할 수 있다.
상기와 같이 본 발명의 실시예에 따른 인터페이스 및 제1 분석 루틴 제공 장치(2)와 제2 분석 루틴 제공 장치(3)의 동작에 의해 코드의 개발과 동시에 실시간으로 보안 취약점을 분석하고 조치할 수 있는 환경을 제공할 수 있다. 또한, 개발 환경 및 사용자 설정에 따라 적용 가능한 유연한 룰 셋을 설정하여 정확한 분석 결과를 제공할 수 있다.
도 7은 본 발명의 몇몇 실시예에 따른 룰 셋의 예시적인 카테고리 구성을 도시한 표이다. 도 7을 참조하면, 인터페이스 및 제1 분석 루틴 제공 장치(2)와 제2 분석 루틴 제공 장치(3)에서 실행되는 분석 루틴은 기 설정된 룰 셋을 적용하여 분석을 수행할 수 있다.
도시된 예와 같이, 룰 셋은 설계(architecture), 코딩(coding), 개발 표준(develop rule), 성능(performance), 덤프(dump), 및 보안 취약점(vulnerability) 등과 같은 복수의 카테고리로 구분될 수 있다.
이 때, 각각의 카테고리에 해당하는 룰 셋은 심각(Error), 경고(Warning), 알림(Info)으로 분류된 복수의 룰을 포함할 수 있다.
인터페이스 및 제1 분석 루틴 제공 장치(2)와 제2 분석 루틴 제공 장치(3)는 서로 다른 카테고리에 속하는 룰 셋을 적용하여 점검 대상 코드에 대한 분석 루틴을 실행할 수 있다. 예컨대, 제2 분석 루틴 제공 장치(3)는 보안 취약점과 관련된 룰 셋만을 적용하여 분석을 수행하고, 인터페이스 및 제1 분석 루틴 제공 장치(2)는 제2 분석 루틴 제공 장치(3)에서 적용한 룰 셋을 제외한 다른 룰 셋을 적용하여 분석을 수행할 수 있다.
도 8은 본 발명의 몇몇 실시예에 따라, 각각의 룰에 대해 우선 순위 및 심각도 속성이 부여된 예이다. 도 8을 참조하면, 서로 다른 카테고리에 속하는 룰 셋에 포함된 각각의 룰에 대해 우선 순위 속성과 심각도 속성이 부여될 수 있다. 예로서, 각각의 룰에 부여되는 우선 순위 속성은, 룰의 중요도에 따라 예컨대 I레벨(높음), II레벨(중간), III레벨(낮음) 등과 같이 부여될 수 있다. 또한, 각각의 룰에 부여되는 심각도 속성은, 예컨대 심각(Error), 경고(Warning), 알림(Info)와 같이 부여될 수 있다.
일 실시예로서, 코드 점검 인터페이스 제공 장치(1)는 점검 대상 코드에 대한 분석 루틴을 실행함에 있어, 우선 순위 속성을 이용하여 기 설정된 룰 셋 중 분석 루틴에 적용할 룰 서브 셋을 선택할 수 있다.
일 실시예로서, 코드 점검 인터페이스 제공 장치(1)는 점검 대상 코드에 대한 분석 루틴의 실행 결과를 제공함에 있어, 각 룰의 심각도 속성 별로 구분하여 결과를 제공할 수 있다.
도 9는 본 발명의 몇몇 실시예에 따른 코드 분석 결과에 따라 룰 위반 점수를 산정하는 예이다. 도 9를 참조하면, 코드 점검 인터페이스 제공 장치(1)는 점검 대상 코드에 대한 분석 루틴의 실행 결과를 표시하는 GUI를 제공할 수 있다.
이 때, GUI 상에는 점검 대상 코드 중 룰을 위반한 것으로 식별된 코드 섹션의 내역을 표시하되, 예컨대 오브젝트 타입, 오브젝트 이름, 심각(Error)에 해당하는 룰 위반 건수(51), 경고에 해당하는 위반 건수(52), 전체 라인 수(53), 및 룰 위반 점수(54)에 관한 정보가 표시될 수 있다.
룰 위반 점수(54)는 점수 계산 기준(55)을 이용하여 산정될 수 있고, 점수 계산 기준(55)은 심각(Error), 경고(Warning)에 해당하는 룰 위반 건수(51, 52)와 기준 라인 수 대비 전체 라인 수(53)의 비율(PER)을 이용하여 계산될 수 있다.
도 10 내지 12는 본 발명의 몇몇 실시예에 따른 인터페이스의 예이다.
도 10에 도시된 예는, 점검 대상 코드를 선택하기 위한 입력을 수신하는 GUI로서, 분석하고자 하는 오브젝트 타입과 오브젝트 이름, 및 적용하고자 하는 룰 셋을 선택할 수 있는 인터페이스를 제공한다.
도 11에 도시된 예는, 점검 대상 코드에 대한 분석 루틴의 실행 결과를 제공하는 GUI로서, 실행 결과에 의한 요약 정보(61)와 실행 결과로부터 룰을 위반한 것으로 식별된 코드 섹션의 내역(62)를 표시하는 인터페이스를 제공한다.
도 12에 도시된 예는, 점검 대상 코드에 대한 분석 루틴의 실행 결과에 따른 조치 가이드를 제공하는 GUI로서, 룰을 위반한 것으로 식별된 코드 섹션의 번호를 선택(71)하게 되면, 해당 코드 섹션의 소스 코드를 표시하는 팝업 화면(72)을 제공하고, 선택된 코드 섹션에 대한 조치 가이드 아이콘(73)를 선택하면, 해당 코드 섹션이 위반한 룰에 대한 조치 가이드 정보를 표시하는 팝업 화면(74)를 제공한다.
도 13 내지 도 16은 본 발명의 몇몇 실시예에 따른 코드 분석을 위해 적용되는 예시적인 룰들의 위반 여부를 검출하는 동작의 흐름을 도시한 예이다.
도 13을 참조하면, 코드 점검 인터페이스 제공 장치(1)는 금지구문 검출을 위한 제1 룰을 위반하는 코드 섹션을 식별하는 동작을 수행할 수 있다.
이 때, 제1 룰의 경우, 관리되고 있는 금지구문 리스트 중에서 매크로 안에서 사용된 것이 있는지를 검출하기 위한 목적으로 코드 분석 시 적용될 수 있다. 이는, 제1 룰을 적용함으로써, 개발 과정에서 단순 개발 효율만을 위해 금지구문을 검출하는 룰 셋을 회피하는 것을 막고, 개발 표준 규칙을 준수하도록 보장하는 의미를 가진다.
예로서, 프로그램의 성능을 위해 반복문 내에 SELECT 구문의 사용을 금지하는 룰을 적용함에 있어, SELECT 구문을 매크로 구문 안에 넣어서 사용하는 경우, 기존의 토큰 분석기로는 반복문 내의 SELECT 구문을 토큰으로 리턴해 주지 못하여 분석을 못하는 한계점이 있었다. 제1 룰은 이러한 한계점을 보완하기 위해 사용되는 룰로서, 매크로 내에 금지구문이 사용되는 것을 용이하게 검출할 수 있다.
상기와 같은 제1 룰을 적용하여 코드 섹션을 식별하는 동작은 아래와 같은 세부 동작을 포함한다.
먼저 동작 S141에서, 점검 대상 코드에서 매크로가 선언된 문장이 검출된다. 이 때, 동작 S141은, 점검 대상 코드의 타입이 Executable Program, Modulepool Program, Function Group, Class, 및 Include Program 중 어느 하나인지 판단하는 동작을 포함할 수 있다.
다음으로, 동작 S142에서, 매크로가 선언된 문장 내에, 기 저장된 금지구문 리스트 중에서 적어도 하나가 사용되었는지 여부가 검출되고, 이에 따라 동작 S143에서 최종 결과가 리턴 되면, 제1 룰을 위반한 코드 섹션이 식별될 수 있다.
도 14를 참조하면, 코드 점검 인터페이스 제공 장치(1)는 RFC Function의 예외처리를 위한 제2 룰을 위반하는 코드 섹션을 식별하는 동작을 수행할 수 있다. 이 때, 제2 룰의 경우, 외부 시스템과의 RFC(Remote Function Communication)에서 발생할 수 있는 오류(error) 혹은 덤프(dump)를 방지하기 위한 목적으로 코드 분석 시 적용될 수 있다.
상기와 같은 제2 룰을 적용하여 코드 섹션을 식별하는 동작은 아래와 같은 세부 동작을 포함한다.
구체적으로, 동작 S151에서, 점검 대상 코드 내 상기 RFC Function과 연관된 예외(Exception)의 등록 여부가 식별되면, 동작 S152에서, RFC Function에 해당하는 코드 섹션 내에 RAISE Exception 구문의 존재 여부가 식별된다. 다음으로, 동작 S153에서, RAISE Exception 구문이 존재하지 않는 경우, Function Group 내의 Include에 RAISE Exception 구문의 존재 여부가 식별되고, 이에 따라 동작 S154에서 최종 결과가 리턴 되면, 제2 룰을 위반한 코드 섹션이 식별될 수 있다.
도 15를 참조하면, 코드 점검 인터페이스 제공 장치(1)는 RFC Function 내 ENQUEUE 및 DEQUEUE 사용 여부 점검을 위한 제3 룰을 위반하는 코드 섹션을 식별하는 동작을 수행할 수 있다.
이 때, 제3 룰의 경우, 앞서 설명한 제2 룰과 마찬가지로 외부 시스템과의 RFC(Remote Function Communication)에서 발생할 수 있는 오류(error) 혹은 덤프(dump)를 방지하기 위한 목적으로 코드 분석 시 적용될 수 있다. 특히, 제3 룰을 적용함으로써 개발 과정에서 DML(data manipulation language) 구문을 사용 시 ENQUEUE 및 DEQUEUE 구문의 사용 여부를 검출함에 의해 데이터의 무결성 및 정합성을 보장할 수 있다.
예로서, DML(data manipulation language) 구문은 DB 업데이트를 발생시키는 구문이기 때문에, ENQUEUE 구문을 통해 TABLE LOCK을 걸고, 변경이 종료되면 DEQUEUE 구문을 통해 TABLE LOCK을 해제하는 형태로 개발될 수 있다. 제3 룰은 상기와 같이 DML 구문의 사용 시 ENQUEUE 및 DEQUEUE 구문의 사용 여부를 검출하기 위해 사용되는 룰로서, DML 구문에 의한 DB 업데이트 시, 다른 사용자의 수정 접근을 막아 데이터가 동기화되도록 하여, 데이터의 무결성 및 정합성을 보장할 수 있다.
상기와 같은 제3 룰을 적용하여 코드 섹션을 식별하는 동작은 아래와 같은 세부 동작을 포함한다.
동작 S161에서, 점검 대상 코드 내 RFC Function에 해당하는 코드 섹션에 DML 구문의 사용 여부가 식별되면, 동작 S162에서, DML 구문이 사용된 경우, 문자열 'ENQUEUE_E*'의 존재 여부가 식별되고, 이에 따라 동작 S163에서 최종 결과가 리턴 되면, 제3 룰을 위반한 코드 섹션이 식별될 수 있다.
도 16을 참조하면, 코드 점검 인터페이스 제공 장치(1)는 두 개 이상의 테이블(Table)이 조인(join)된 뷰(View)의 버퍼링 검출을 위한 제4 룰을 위반하는 코드 섹션을 식별하는 동작을 수행할 수 있다.
이 때, 제4 룰의 경우, 테이블을 2개 이상 조인(join)한 뷰(view)에 버퍼링을 설정하는 경우 일반 테이블의 버퍼링과 다르게 일부 데이터 변경에도 모든 버퍼 데이터가 무효화되는 것을 방지하기 위한 목적으로 코드 분석 시 적용될 수 있다. 특히, 제4 룰을 적용함으로써, 뷰(View)에 DB WRITE가 발생하는 경우 전체 버퍼 데이터가 삭제되거나, 버퍼 로드로 인해 성능 저하가 야기될 수 있는 부분을 사전에 검출할 수 있다.
예로서, 뷰의 경우 버퍼링 방식을 싱글(single) 또는 일반(generic)으로 설정하더라도 완전 버퍼(full buffer)처럼 동작하는 특성을 가지기 때문에, DB WRITE 발생 시 전체 버퍼 데이터가 삭제될 수 있다. 또한, 뷰에 DB WRITE가 자주 발생하는 경우, 버퍼 로드(load)가 빈번하게 발생되어 성능 저하가 발생할 수 있다. 제4 룰은 상기와 같이 뷰의 특성에 의해 전체 버퍼 데이터의 삭제 및 버퍼 로드가 발생하여 성능 저하를 야기시킬 수 있는 부분을 사전에 검출하기 위해 사용될 수 있다.
상기와 같은 제4 룰을 적용하여 코드 섹션을 식별하는 동작은 아래와 같은 세부 동작을 포함한다.
동작 S171에서, 점검 대상 코드의 타입이 뷰인 경우 뷰가 데이터베이스에 존재하는지 여부가 식별되면, 동작 S172에서, 뷰에 조인된 테이블이 존재하면, 뷰에 버퍼링이 설정되어 있는지 식별된다. 이 때, 동작 S172는, 뷰에 관한 정보를 포함하는 테이블을 참조하여 뷰에 대한 버퍼 타입이 P, G, 또는 X인지 여부를 식별하는 동작을 포함할 수 있다. 여기서, 버퍼 타입 P는 싱글 버퍼(Single Buffer)인 경우로 한 건의 엔트리(entry)만 버퍼에 저장되고, 여러 번 레코드를 가져오는 등 상대적으로 DB에 접근하는 횟수가 많을 때 사용될 수 있다. 버퍼 타입 G는 일반 버퍼(Generic Buffer)인 경우로, 선택된 키(key) 값에 해당하는 테이블의 모든 엔트리가 버퍼에 저장된다. 또한, 버퍼 타입 X는 완전 버퍼(Full Buffer)인 경우로 모든 테이블의 레코드가 버퍼에 저장된다.
마지막으로 동작 S173에서 최종 결과가 리턴 되면, 제4 룰을 위반한 코드 섹션이 식별될 수 있다.
상기와 같이, 본 발명의 실시예에 의하면, 개발 환경 및 사용자 설정에 따라 적용 가능한 유연한 룰 셋을 설정하여 정확한 분석 결과를 제공할 수 있다.
도 17은 본 발명의 몇몇 실시예에 따른 방법들을 구현할 수 있는 예시적인 컴퓨팅 장치의 하드웨어 구성도이다. 도 17에 도시된 바와 같이, 컴퓨팅 장치(100)는 하나 이상의 프로세서(101), 버스(107), 네트워크 인터페이스(102), 프로세서(101)에 의하여 수행되는 컴퓨터 프로그램(105)을 로드(load)하는 메모리(103)와, 컴퓨터 프로그램(105)를 저장하는 스토리지(104)를 포함할 수 있다. 다만, 도 17에는 본 발명의 실시예와 관련 있는 구성요소들 만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 17에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(101)는 컴퓨팅 장치(100)의 각 구성의 전반적인 동작을 제어한다. 프로세서(101)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서 중 적어도 하나를 포함하여 구성될 수 있다. 또한, 프로세서(101)는 본 발명의 다양한 실시예들에 따른 방법/동작을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(100)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(103)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(103)는 본 발명의 다양한 실시예들에 따른 방법/동작들을 실행하기 위하여 스토리지(104)로부터 하나 이상의 프로그램(105)을 로드(load) 할 수 있다. 예를 들어, 컴퓨터 프로그램(105)이 메모리(103)에 로드 되면, 로직(또는 모듈)이 메모리(103) 상에 구현될 수 있다. 메모리(103)의 예시는 RAM이 될 수 있으나, 이에 한정되는 것은 아니다.
버스(107)는 컴퓨팅 장치(100)의 구성 요소 간 통신 기능을 제공한다. 버스(107)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
네트워크 인터페이스(102)는 컴퓨팅 장치(100)의 유무선 인터넷 통신을 지원한다. 네트워크 인터페이스(102)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 네트워크 인터페이스(102)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
스토리지(104)는 하나 이상의 컴퓨터 프로그램(105)을 비임시적으로 저장할 수 있다. 스토리지(104)는 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(105)은 본 발명의 다양한 실시예들에 따른 방법/동작들이 구현된 하나 이상의 인스트럭션들(instructions)을 포함할 수 있다. 컴퓨터 프로그램(105)이 메모리(103)에 로드 되면, 프로세서(101)는 상기 하나 이상의 인스트럭션들을 실행시킴으로써 본 발명의 다양한 실시예들에 따른 방법/동작들을 수행할 수 있다.
지금까지 도 1 내지 도 17을 참조하여 본 발명의 다양한 실시예들 및 그 실시예들에 따른 효과들을 언급하였다. 본 발명의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
지금까지 설명된 본 발명의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명의 기술적 사상이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 발명이 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (20)

  1. 컴퓨팅 장치에 의해 수행되는 방법에 있어서,
    코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 단계;
    상기 GUI를 통해 점검 대상 코드가 선택되면, 상기 점검 대상 코드에 대한 분석 루틴을 실행하되, 상기 분석 루틴은 상기 점검 대상 코드로부터 복수의 노드로 이루어진 추상 구문 트리(Abstract Syntax Tree)를 추출하는 동작을 포함하는, 단계; 및
    상기 분석 루틴의 실행 결과를 제공하는 단계를 포함하고,
    상기 분석 루틴은, 상기 컴퓨팅 장치에 의해 수행되고 제1 프로그래밍 언어로 구현된 코드 분석 루틴과, 외부 서버에 의해 수행되고 상기 제1 프로그래밍 언어와는 상이한 제2 프로그래밍 언어로 구현되는 보안 분석 루틴을 포함하고,
    상기 외부 서버는, 상기 컴퓨팅 장치에서 상기 점검 대상 코드로부터 추출된 상기 추상 구문 트리를 제공 받아 상기 점검 대상 코드에 대한 보안 분석을 수행하고,
    상기 컴퓨팅 장치는, 상기 외부 서버로부터 상기 점검 대상 코드에 대한 보안 분석의 수행 결과를 수신하는,
    코드 점검 인터페이스 제공 방법.
  2. 제1항에 있어서,
    상기 코드 분석 루틴은,
    상기 선택된 점검 대상 코드로부터 복수의 노드로 이루어진 상기 추상 구문 트리(Abstract Syntax Tree)를 추출하는 동작; 및
    상기 추출된 추상 구문 트리를 상기 보안 분석 루틴의 입력으로 제공하는 동작을 포함하며,
    상기 보안 분석 루틴은, 상기 코드 분석 루틴에 의해 제공된 상기 추상 구문 트리를 적어도 부분적으로 이용하여 상기 점검 대상 코드를 분석하는 동작을 포함하는,
    코드 점검 인터페이스 제공 방법.
  3. 제1항에 있어서,
    상기 제1 프로그래밍 언어는 상기 점검 대상 코드의 작성에 사용된 프로그래밍 언어인,
    코드 점검 인터페이스 제공 방법.
  4. 제1항에 있어서,
    상기 분석 루틴의 실행 결과를 제공하는 단계는,
    상기 분석 루틴의 실행 결과에 기초하여 상기 점검 대상 코드에 대한 조치 가이드 정보를 제공하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  5. 제1 항에 있어서,
    상기 코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 단계는,
    상기 점검 대상 코드를 선택하는 입력을 수신하는 제1 GUI, 상기 분석 루틴에 의해 사용되는 룰 셋을 설정하기 위한 입력을 수신하는 제2 GUI, 및 상기 분석 루틴의 실행 결과를 제공하는 제3 GUI를 표시하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  6. 제1 항에 있어서,
    상기 점검 대상 코드에 대한 분석 루틴을 실행하는 단계는,
    상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  7. 제6 항에 있어서,
    상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는,
    상기 추상 구문 트리에 기초하여 상기 점검 대상 코드의 실행 순서를 보여주는 제어 흐름도(Control Flow Graph)를 생성하는 단계; 및
    상기 추상 구문 트리에 기초하여 점검 대상 코드를 내부 표현형(Intermediate Representation)으로 변환하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  8. 제7 항에 있어서,
    상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는,
    상기 점검 대상 코드에 포함된 함수들 간의 호출 관계, 특정 시점에 사용되는 변수 값, 및 외부 입력값에 의해 변경이 발생한 지점을 분석한 결과에 기초하여 상기 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  9. 제6 항에 있어서,
    상기 기 설정된 룰 셋은, 각각에 심각도 속성이 부여된 복수의 룰을 포함하고,
    상기 분석 루틴의 실행 결과를 제공하는 단계는,
    상기 분석 루틴의 실행 결과를 상기 각 룰의 심각도 속성에 따라 구별하여 제공하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  10. 제6 항에 있어서,
    상기 기 설정된 룰 셋은, 각각에 우선 순위 속성이 부여된 복수의 룰을 포함하고,
    상기 점검 대상 코드에 대한 분석 루틴을 실행하는 단계는,
    상기 우선 순위 속성을 이용하여 상기 기 설정된 룰 셋 중 상기 분석 루틴에 적용할 룰 서브 셋을 선택하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  11. 제6 항에 있어서,
    상기 코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 단계는,
    상기 기 설정된 룰 셋에 대한 신규 룰 추가, 미사용 룰 삭제, 및 룰 업데이트를 위한 GUI를 제공하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  12. 제6 항에 있어서,
    상기 기 설정된 룰 셋은, 금지구문 검출을 위한 제1 룰을 포함하고,
    상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는,
    상기 제1 룰에 기초하여 상기 점검 대상 코드에서 매크로가 선언된 문장을 검출하는 단계; 및
    상기 매크로가 선언된 문장 내에, 기 저장된 금지구문 리스트 중에서 적어도 하나가 사용되었는지 여부를 검출하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  13. 제12 항에 있어서,
    상기 제1 룰에 기초하여 상기 점검 대상 코드에서 매크로가 선언된 문장을 검출하는 단계는,
    상기 점검 대상 코드의 타입이 Executable Program, Modulepool Program, Function Group, Class, 및 Include Program 중 어느 하나인지 판단하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  14. 제6 항에 있어서,
    상기 기 설정된 룰 셋은, RFC(Remote Function Communication) Function의 예외처리를 위한 제2 룰을 포함하고,
    상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는,
    상기 제2 룰에 기초하여 상기 점검 대상 코드 내 상기 RFC Function과 연관된 예외(Exception)의 등록 여부를 식별하는 단계;
    상기 RFC Function에 해당하는 코드 섹션 내에 RAISE Exception 구문의 존재 여부를 식별하는 단계; 및
    상기 RAISE Exception 구문이 존재하지 않는 경우, 상기 Function Group 내의 Include에 RAISE Exception 구문의 존재 여부를 식별하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  15. 제6 항에 있어서,
    상기 기 설정된 룰 셋은, RFC(Remote Function Communication) Function 내 ENQUEUE 및 DEQUEUE 사용 여부 점검을 위한 제3 룰을 포함하고,
    상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는,
    상기 제3 룰에 기초하여 상기 점검 대상 코드 내 상기 RFC Function에 해당하는 코드 섹션에 DML 구문의 사용 여부를 식별하는 단계; 및
    상기 DML 구문이 사용된 경우, 문자열 'ENQUEUE_E*'의 존재 여부를 식별하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  16. 제6 항에 있어서,
    상기 기 설정된 룰 셋은, 두 개 이상의 테이블(Table)이 조인(join)된 뷰(View)의 버퍼링 검출을 위한 제4 룰을 포함하고,
    상기 점검 대상 코드로부터 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별하는 단계는,
    상기 제4 룰에 기초하여 상기 점검 대상 코드의 타입이 뷰인 경우 상기 뷰가 데이터베이스에 존재하는지 여부를 식별하는 단계; 및
    상기 뷰에 조인된 테이블이 존재하면, 상기 뷰에 버퍼링이 설정되어 있는지 식별하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  17. 제16 항에 있어서,
    상기 뷰에 버퍼링이 설정되어 있는지 식별하는 단계는,
    상기 뷰에 관한 정보를 포함하는 테이블을 참조하여 상기 뷰에 대한 버퍼 타입이 P, G, 또는 X인지 여부를 식별하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  18. 제6 항에 있어서,
    상기 분석 루틴의 실행 결과를 제공하는 단계는,
    상기 기 설정된 룰 셋 중 적어도 일부를 위반하는 코드 섹션을 식별한 결과를 이용하여 상기 점검 대상 코드의 룰 위반 점수를 산출하는 단계를 포함하는,
    코드 점검 인터페이스 제공 방법.
  19. 컴퓨터로 하여금 제1 항 내지 제18 항 중 어느 한 항의 방법을 수행하도록 하는 컴퓨터 프로그램이 저장된,
    컴퓨터 판독 가능한 비일시적 기록 매체.
  20. 코드 점검 인터페이스 제공 장치에 있어서,
    하나 이상의 프로세서;
    외부장치와 통신하는 통신 인터페이스;
    상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(load)하는 메모리; 및
    상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되,
    상기 컴퓨터 프로그램은,
    코드 점검을 수행하기 위한 그래픽 사용자 인터페이스(GUI)를 제공하는 동작,
    상기 GUI를 통해 점검 대상 코드가 선택되면, 상기 점검 대상 코드에 대한 분석 루틴을 실행하되, 상기 분석 루틴은 상기 점검 대상 코드로부터 복수의 노드로 이루어진 추상 구문 트리(Abstract Syntax Tree)를 추출하는 동작, 및
    상기 분석 루틴의 실행 결과를 제공하는 동작을 수행하기 위한 인스트럭션을 포함하고,
    상기 분석 루틴은, 상기 코드 점검 인터페이스 제공 장치에 의해 수행되고 제1 프로그래밍 언어로 구현된 코드 분석 루틴과, 외부 서버에 의해 수행되고 상기 제1 프로그래밍 언어와는 상이한 제2 프로그래밍 언어로 구현되는 보안 분석 루틴을 포함하고,
    상기 외부 서버는, 상기 코드 점검 인터페이스 제공 장치에서 상기 점검 대상 코드로부터 추출된 상기 추상 구문 트리를 제공 받아 상기 점검 대상 코드에 대한 보안 분석을 수행하고,
    상기 코드 점검 인터페이스 제공 장치는, 상기 외부 서버로부터 상기 점검 대상 코드에 대한 보안 분석의 수행 결과를 수신하는,
    코드 점검 인터페이스 제공 장치.
KR1020210085708A 2021-06-30 2021-06-30 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치 KR102519639B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210085708A KR102519639B1 (ko) 2021-06-30 2021-06-30 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치
US17/853,821 US20230004361A1 (en) 2021-06-30 2022-06-29 Code inspection interface providing method and apparatus for implementing the method
KR1020230037923A KR20230044380A (ko) 2021-06-30 2023-03-23 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210085708A KR102519639B1 (ko) 2021-06-30 2021-06-30 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020230037923A Division KR20230044380A (ko) 2021-06-30 2023-03-23 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치

Publications (2)

Publication Number Publication Date
KR20230003985A KR20230003985A (ko) 2023-01-06
KR102519639B1 true KR102519639B1 (ko) 2023-04-06

Family

ID=84786279

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020210085708A KR102519639B1 (ko) 2021-06-30 2021-06-30 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치
KR1020230037923A KR20230044380A (ko) 2021-06-30 2023-03-23 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020230037923A KR20230044380A (ko) 2021-06-30 2023-03-23 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치

Country Status (2)

Country Link
US (1) US20230004361A1 (ko)
KR (2) KR102519639B1 (ko)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1569104A3 (en) * 2004-01-09 2006-05-03 Interuniversitair Microelektronica Centrum Vzw An automated method for performing parallelization of sequential code and a computerized system adapted therefore
WO2013157008A2 (en) * 2012-04-18 2013-10-24 Gizmox Ltd. Code migration systems and methods and an online solutions store
US20170214701A1 (en) * 2016-01-24 2017-07-27 Syed Kamran Hasan Computer security based on artificial intelligence
KR101926142B1 (ko) * 2016-07-19 2018-12-07 주식회사 스패로우 프로그램 분석 장치 및 방법
US20180276105A1 (en) * 2017-03-23 2018-09-27 Fujitsu Limited Active learning source code review framework
US10740470B2 (en) * 2017-05-31 2020-08-11 Shiftleft Inc. System and method for application security profiling
KR102014266B1 (ko) * 2017-09-14 2019-08-26 국방과학연구소 프로그램 소스 코드의 보안 취약점 검출 장치 및 방법
US10902129B2 (en) * 2017-12-07 2021-01-26 Virtual Forge GmbH Method for detecting vulnerabilities in software
KR102631545B1 (ko) * 2019-05-17 2024-01-30 삼성에스디에스 주식회사 프로그램 분석 방법 및 그 시스템
US11150877B2 (en) * 2019-11-06 2021-10-19 Google Llc Automatically generating machine learning models for software tools that operate on source code

Also Published As

Publication number Publication date
US20230004361A1 (en) 2023-01-05
KR20230003985A (ko) 2023-01-06
KR20230044380A (ko) 2023-04-04

Similar Documents

Publication Publication Date Title
US9208057B2 (en) Efficient model checking technique for finding software defects
US10127141B2 (en) Electronic technology resource evaluation system
KR102443654B1 (ko) 소스 코드에서 작동하는 소프트웨어 도구를 위한 기계 학습 모델 자동 생성
US8627296B1 (en) Unified unit and integration test with automatic mock creation
US8386851B2 (en) Functional coverage using combinatorial test design
US9898387B2 (en) Development tools for logging and analyzing software bugs
US20130014093A1 (en) Code inspection executing system for performing a code inspection of abap source codes
US11327874B1 (en) System, method, and computer program for orchestrating automatic software testing
JP2015011372A (ja) デバッグ支援システム、方法、プログラム及び記録媒体
US20130247062A1 (en) Verifying synchronization coverage in logic code
US8887112B2 (en) Test validation planning
CN109284222B (zh) 软件单元、数据处理系统中的项目测试方法、装置及设备
US10839124B1 (en) Interactive compilation of software to a hardware language to satisfy formal verification constraints
US6853963B1 (en) Analyzing an extended finite state machine system model
US20210026756A1 (en) Deriving software application dependency trees for white-box testing
US20130318499A1 (en) Test script generation
US20120284695A1 (en) Error simulation
CN113778849A (zh) 用于测试代码的方法、装置、设备以及存储介质
KR102519639B1 (ko) 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치
JPWO2020161994A1 (ja) 依存関係検出装置および依存関係検出方法
JP6723483B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
KR20220067011A (ko) 바이너리 취약점 식별 코드 생성 방법, 그리고 이를 구현하기 위한 장치
Kravchenko et al. Complex Dynamic Method of Web Applications Verification by the Criterion of Time Minimization
US11726902B1 (en) System and method for automated bot testing scenario simulations
JPWO2018154784A1 (ja) 影響抽出装置、影響抽出プログラム及び影響抽出方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant