KR102311119B1 - 웹 취약점 자동 진단 방법 및 이러한 방법을 수행하는 장치 - Google Patents
웹 취약점 자동 진단 방법 및 이러한 방법을 수행하는 장치 Download PDFInfo
- Publication number
- KR102311119B1 KR102311119B1 KR1020210032376A KR20210032376A KR102311119B1 KR 102311119 B1 KR102311119 B1 KR 102311119B1 KR 1020210032376 A KR1020210032376 A KR 1020210032376A KR 20210032376 A KR20210032376 A KR 20210032376A KR 102311119 B1 KR102311119 B1 KR 102311119B1
- Authority
- KR
- South Korea
- Prior art keywords
- vulnerability
- type
- web site
- website
- analysis target
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
본 발명은 웹 취약점 자동 진단 방법 및 이러한 방법을 수행하는 장치에 관한 것이다. 웹 취약점 자동 진단 방법은 취약점 진단 서버가 웹 사이트의 웹 사이트 타입을 결정하는 단계, 취약점 진단 서버가 웹 사이트 타입에 따라 취약점 분석 대상 정보를 결정하는 단계와 취약점 진단 서버가 취약점 분석 대상 정보를 기반으로 웹 사이트의 취약점을 판단하는 단계를 포함할 수 있다.
Description
본 발명은 웹 취약점 자동 진단 방법 및 이러한 방법을 수행하는 장치에 관한 것이다. 보다 상세하게는 웹 사이트의 프레임워크를 식별하고, 취약점 타입에 따라 웹 사이트의 취약점을 자동으로 진단하기 위한 웹 취약점 자동 진단 방법 및 이러한 방법을 수행하는 장치에 관한 것이다.
오늘날 대부분의 기업, 기관 등은 자신만의 웹 사이트를 운영하고 있으며, 대다수의 사용자들은 웹 사이트에 접속함으로써 다양한 정보를 얻을 수 있다. 하 지만, 사용자가 웹 사이트에 접속시 보안성이 담보되지 않은 웹 사이트는 악의적인 공격에 취약할 수 있으며 악의적인 공격으로 인해 심각한 위협에 직면할 수 있다. 시스템마다 차이는 있지만, 일반적으로 웹 사이트에서 보안 취약성을 발생시키는 많은 오류가 존재한다. 대부분의 상업 소프트웨어들은 좀 더 많은 오류를 가지고 있으며, 이러한 문제들이 보안 취약점을 발생시킨다고 보고되고 있다. 실제 보고된 보안 사고의 90% 정도는 소프트웨어의 설계나 코드의 결점들을 악용(exploits)함으로써 발생한다고 한다. 이와 같은 악의적인 공격 또는 취약점으로부터 웹 사이트를 보호하는데 사용되는 여러 유형의 보안 기술을 웹 보안이라고 한다. 특히, 다양한 방식의 웹 취약점 점검을 통해 이와 같은 웹 취약점을 조기에 발견하고 이를 통해 선제적으로 취약점을 제거할 수 있다.
현재 웹 취약점의 진단이 소수의 진단 가능한 경험을 가진 전문가들에 의해 이루어지고 있어서 별도의 비용 또는 인력을 고용하지 않는 이상 웹 취약점에 대한 진단이 어렵다. 따라서, 자동적으로 웹 취약점을 진단하기 위한 방법에 대한 연구가 필요하다.
본 발명은 상술한 문제점을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은 진단 타겟 웹 사이트의 프레임워크을 판단하고, 웹 사이트의 프레임워크에 따라 서로 다른 방식으로 취약점 분석 대상 정보를 결정하는 것을 목적으로 한다.
또한, 본 발명은 취약점 분석 대상 정보에 따라 서로 다른 방식으로 취약점을 판단하는 것을 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 실시예에 따르면, 웹 취약점 자동 진단 방법은 취약점 진단 서버가 웹 사이트의 웹 사이트 타입을 결정하는 단계, 상기 취약점 진단 서버가 상기 웹 사이트 타입에 따라 취약점 분석 대상 정보를 결정하는 단계와 상기 취약점 진단 서버가 상기 취약점 분석 대상 정보를 기반으로 상기 웹 사이트의 취약점을 판단하는 단계를 포함할 수 있다.
한편, 상기 웹 사이트 타입은 제1 타입 웹 사이트 또는 제2 타입 웹 사이트이고, 상기 제1 타입 웹 사이트는 상기 취약점 분석 대상 정보를 크롤링(crawling) 기반으로 획득하는 웹 사이트이고, 상기 제2 타입 웹 사이트는 상기 취약점 분석 대상 정보 또는 전체 다운로드된 정적 리소스를 취약점 획득 파일을 기반으로 획득하는 웹 사이트일 수 있다.
또한, 상기 취약점 분석 대상 정보는 상기 웹 사이트에 대한 페이지 URL 정보, API(application programming interface) 엔드포인트(endpoint) 정보를 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 웹 취약점 자동 진단을 수행하는 취약점 진단 서버는 진단 타겟 서버와 통신하기 위해 구현된 통신부와 상기 통신부와 동작 가능하게(operatively) 구현된 프로세서를 포함하되, 상기 프로세서는 웹 사이트의 웹 사이트 타입을 결정하고, 상기 웹 사이트 타입에 따라 취약점 분석 대상 정보를 결정하고, 상기 취약점 분석 대상 정보를 기반으로 상기 웹 사이트의 취약점을 판단하도록 구현될 수 있다.
한편, 상기 웹 사이트 타입은 제1 타입 웹 사이트 또는 제2 타입 웹 사이트이고, 상기 제1 타입 웹 사이트는 상기 취약점 분석 대상 정보를 크롤링(crawling) 기반으로 획득하는 웹 사이트이고, 상기 제2 타입 웹 사이트는 상기 취약점 분석 대상 정보를 취약점 획득 파일 또는 전체 다운로드된 정적 리소스를을 기반으로 획득하는 웹 사이트일 수 있다.
또한, 상기 취약점 분석 대상 정보는 상기 웹 사이트에 대한 페이지 URL 정보, API(application programming interface) 엔드포인트(endpoint) 정보를 포함할 수 있다.
본 발명에 의하면, 진단 타겟 웹 사이트의 프레임워크를 판단하고, 웹 사이트의 프레임워크에 따라 서로 다른 방식으로 취약점 분석 대상 정보가 결정될 수 있다.
또한, 본 발명에 의하면, 취약점 분석 대상 정보에 따라 서로 다른 방식으로 취약점이 판단될 수 있다.
도 1은 본 발명의 실시예에 따른 웹 취약점 자동 진단 시스템을 나타낸 개념도이다.
도 2는 본 발명의 실시예에 따른 웹 취약점 자동 진단 방법을 나타낸 순서도이다.
도 3은 본 발명의 실시예에 따른 웹 취약점 자동 진단 방법을 나타낸 순서도이다.
도 4는 본 발명의 실시예에 따른 제2 취약점 판단 방법을 나타낸 개념도이다.
도 5는 본 발명의 실시예에 따른 웹 사이트 타입에 따른 취약점 분석 대상 정보 획득 방법을 나타낸 개념도이다.
도 6은 본 발명의 실시예에 따른 취약점 분석 서비스 방법을 나타낸 개념도이다.
도 2는 본 발명의 실시예에 따른 웹 취약점 자동 진단 방법을 나타낸 순서도이다.
도 3은 본 발명의 실시예에 따른 웹 취약점 자동 진단 방법을 나타낸 순서도이다.
도 4는 본 발명의 실시예에 따른 제2 취약점 판단 방법을 나타낸 개념도이다.
도 5는 본 발명의 실시예에 따른 웹 사이트 타입에 따른 취약점 분석 대상 정보 획득 방법을 나타낸 개념도이다.
도 6은 본 발명의 실시예에 따른 취약점 분석 서비스 방법을 나타낸 개념도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이러한 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 본 명세서에 기재되어 있는 특정 형상, 구조 및 특성은 본 발명의 정신과 범위를 벗어나지 않으면서 일 실시예로부터 다른 실시예로 변경되어 구현될 수 있다. 또한, 각각의 실시예 내의 개별 구성요소의 위치 또는 배치도 본 발명의 정신과 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 행하여 지는 것이 아니며, 본 발명의 범위는 특허청구범위의 청구항들이 청구하는 범위 및 그와 균등한 모든 범위를 포괄하는 것으로 받아들여져야 한다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 구성요소를 나타낸다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 여러 바람직한 실시예에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
이하, 본 발명의 실시예에서는 설명의 편의상 웹 사이트라는 용어를 사용하나 본 발명의 실시예에서 사용되는 웹 사이트라는 용어는 다른 의미로 특정 서비스를 운영하는 서비스 서버(취약점 진단 대상 서버, 타겟 서버)의 의미를 포함할 수 있다.
도 1은 본 발명의 실시예에 따른 웹 취약점 자동 진단 시스템을 나타낸 개념도이다.
도 1에서는 웹 사이트의 취약점을 판단하기 위한 웹 취약점 자동 진단 시스템이 개시된다.
도 1을 참조하면 웹 취약점 자동 진단 시스템은 취약점 진단 서버(100), 진단 타겟 서버(120)를 포함할 수 있다.
취약점 진단 서버(100)는 취약점 자동 진단 알고리즘을 통해서 진단 타겟 서버(120)를 기반으로 운영되는 진단 타겟 웹 사이트 상에 발생될 수 있는 취약점을 진단할 수 있다. 취약점 자동 진단 알고리즘은 웹 사이트의 프레임워크를 탐지하고 프레임워크에 따라 서로 다른 취약점 진단 방법을 사용하여 취약점을 진단할 수 있다. 구체적으로 취약점 자동 진단 알고리즘은 웹 사이트의 프레임워크에 따라 제1 타입 웹 사이트 또는 제2 타입 웹 사이트로 웹 사이트를 구분하고, 크롤링 또는 취약점 획득 파일(또는 전체 다운로드된 정적 리소스)를 기반으로 취약점 분석 대상 정보를 추출할 수 있다.
이후, 취약점 자동 진단 알고리즘은 취약점 분석 대상(140)에 대해 제1 취약점 판단 또는 제2 취약점 판단을 통해 취약점 판단 결과(160)를 생성할 수 있다. 제1 취약점 판단은 이미 알려진 취약점(CVE, common Vulnerabilities and Exposures)에 대한 판단일 수 있다. 제1 취약점에 대한 판단은 CVE 코드와 매칭되는 취약점에 대한 판단으로 CVE 코드에 매칭되는 공격 코드를 실행하여 수행될 수 있다. 예를 들어, CVE-2019-9881, CVE-2019-9880, CVE-2019-9879에 해당하는 공격 코드는 세계적으로 유명한 홈페이지 제작 도구 "워드프레스" 플러그인에서 발생하는 취약점으로 공격 코드를 통해 취약점을 발생시켜 사용자 정보, 패스워드 등의 정보를 획득하는 코드이다. 공격 코드는 개발된 플랫폼, 프레임워크, 언어 등에 따라 특별하게 구현되는 것이며, 이를 데이터베이스 형태로 구축하여 특정 프레임워크가 탐지되면 그 프레임워크에 맞는 공격 코드를 실행한 뒤 응답 값을 분석하여 취약 여부를 파악할 수 있다.
제2 취약점 판단은 퍼징 DB(fuzzing database)를 기반으로 퍼징 DB에 포함되는 페이로드(payload)(또는 문자열)을 기반으로 한 취약점 판단일 수 있다.
진단 타겟 서버(120)는 취약점 진단 서버와 연결되어 취약점 진단 서비스를 받는 복수의 서버일 수 있다. 진단 타겟 서버(120)는 취약점 진단 서버(100)의 요청(request)에 따른 응답 정보(예를 들어, HTML, Javascript)를 전송할 수 있다.
취약점 진단 서버(100)는 주기적 또는 비주기적으로 진단 타겟 서버(120)에 의해 운영되는 진단 타겟 웹 사이트에 대한 진단을 수행할 수 있고, 다양한 방식으로 다양하게 발생할 수 있는 보안 리스크에 대한 판단 결과인 취약점 판단 결과(160)를 진단 타겟 서버(120)의 운영자 장치로 전달할 수 있다.
웹 취약점 자동 진단을 수행하는 취약점 진단 서버(100)는 진단 타겟 서버(120)와 통신하기 위해 구현된 통신부(미도시)와 통신부와 동작 가능하게(operatively) 구현된 프로세서(미도시)를 포함할 수 있다. 프로세서는 웹 사이트의 웹 사이트 타입을 결정하고, 웹 사이트 타입에 따라 취약점 분석 대상 정보를 결정할 수 있다. 또한, 프로세서는 취약점 분석 대상 정보를 기반으로 웹 사이트의 취약점을 판단하도록 구현될 수 있다.
이하, 구체적인 웹 취약점 자동 진단 방법이 개시된다.
도 2는 본 발명의 실시예에 따른 웹 취약점 자동 진단 방법을 나타낸 순서도이다.
도 2에서는 웹 사이트의 취약점을 알고리즘 기반으로 자동 진단하기 위한 방법이 개시된다.
도 2를 참조하면, 취약점 진단 서버가 진단 타겟 웹 사이트 정보를 수신한다(단계 S200).
취약점 진단 서버는 진단 타겟 웹 사이트에 대한 정보로서 진단 타겟 웹 사이트의 URL(uniform resource locator) 정보를 수신할 수 있다.
취약점 진단 서버가 진단 타겟 웹 사이트의 프레임워크를 탐지한다(단계 S210)
취약점 진단 서버가 진단 타겟 웹 사이트의 프론트엔드 프레임워크를 탐지한다.
취약점 진단 서버가 진단 타겟 웹 사이트의 프레임워크를 판단한다(단계 S220).
본 발명에서는 진단 타겟 웹 사이트의 프레임워크에 따라 서로 다른 방법으로 취약점 분석 대상이 결정될 수 있다.
웹 사이트는 프레임워크에 따라 제1 타입 웹 사이트 또는 제2 타입 웹 사이트로 구분될 수 있다. 또는 다른 표현으로 웹 사이트는 취약점 분석 대상 정보의 획득 방식에 따라 제1 타입 웹 사이트, 제2 타입 웹 사이트로 구분될 수 있다.
제1 타입 웹 사이트는 취약점 분석 대상 정보를 크롤링(crawling) 기반으로 획득 가능한 웹 사이트일 수 있다. 예를 들어, 제1 타입 웹 사이트는 논(non)-싱글 페이지 어플리케이션(single page application)으로서 싱글 페이지 어플리케이션이 아닌 전통적인 웹 방식으로 생성된 사이트일 수 있다. 전통적인 웹 방식에서는 새로운 웹 페이지를 요청시마다 정적 리소스가 다운로드되고 전체 페이지가 다시 렌더링될 수 있다.
제2 타입 웹 사이트는 취약점 분석 대상 정보를 파일 기반으로 획득 가능한 웹 사이트일 수 있다. 다른 표현으로 제2 타입 웹 사이트는 정적 리소스를 한번에 다운로드하여 취약점 분석 대상 정보를 획득 가능한 웹 사이트일 수 있다.
예를 들어, 제2 타입 웹 사이트는 싱글 페이지 어플리케이션일 수 있다. 싱글 페이지 어플리케이션은 서버로부터 새로운 페이지를 불러오지 않고, 필요한 정적 소스(예를 들어, HTML(Hypertext Markup Language), 자바스크립트(JavaScript))를 최초에 한번에 다운로드하기 때문에 웹 페이지를 요청시마다 정적 리소스를 다운로드할 필요가 없다.
예를 들어, 제2 타입 웹 사이트 상에서 취약점 분석 대상 정보는 자바스크립트(JavaScript) 빌드 파일(bundle)의 탐색을 통해 획득될 수 있다. 자바스크립트 빌드 파일에는 웹 사이트를 구성하는 페이지 URL 정보, API(application programming interface) 엔드포인트(endpoint) 정보 등이 취약점 분석 대상 정보로서 포함될 수 있고, 취약점 진단 서버는 자바스크립트 빌드 파일을 기반으로 취약점 분석을 수행할 수 있다. 자바스크립트 빌드 파일과 같이 취약점 분석 대상 정보의 획득이 가능한 파일은 취약점 획득 파일이라는 용어로 표현될 수 있다.
또한, 제2 타입 웹 사이트 상에서 취약점 분석 대상 정보는 HTTP 요청(웹 통신)의 결과값으로 전체 다운로드된 HTML(하이퍼텍스트 마크업 언어)를 기반으로 획득될 수도 있다.
단계S220을 통해 타겟 웹 사이트가 제1 타입 웹 사이트로 판단된 경우, 웹 페이지에 대한 URL, 파라미터 크롤링이 수행되고(단계 S230), URL 정보, 파라미터 정보와 같은 정보가 취약점 분석 대상 정보로 수집할 수 있다(단계 S240).
단계S220을 통해 타겟 웹 사이트가 제2타입 웹 사이트로 판단된 경우, 취약점 획득 파일의 탐색이 수행될 수 있다(단계 S250)
제2타입 웹 사이트의 경우, 취약점 획득 파일의 탐색을 통해 취약점 분석 대상 정보가 수집될 수 있다(단계 S260).
취약점 분석 대상 정보는 프론트엔드 페이지 URL, API 엔드포인트에 대한 정보이고, 이러한 취약점 분석 대상 정보에 대한 수집이 수행될 수 있다. API 엔드포인트의 수집을 통해 백엔드를 구성하는 API 서버의 개발 언어, 환경(프레임워크), 서버 환경이 탐지될 수 있다.
구체적으로 취약점 진단 서버는 백엔드 API 엔드포인트에 대해 HTTP 요청(request)를 통해 서버 정보, 환경 정보를 수집하고 데이터베이스에 저장할 수 있다. 취약점 진단 서버는 HTML 메타(meta) 태그에 표시되어 있는 정보, HTTP 응답 헤더(response header) 정보, 에러 페이지(error page) 등을 통해 서버 정보, 환경 정보를 파악할 수 있다.
제1 타입 웹 사이트 또는 제2 타입 웹 사이트를 통해 획득된 취약점 분석 대상 정보에 대해 제1 취약점 판단(단계 S270), 제2 취약점 판단(단계 S280)이 수행될 수 있다. 제1 취약점 판단(단계 S270)에서는 공격 코드를 기반으로 취약점이 판단되고, 제2 취약점 판단(단계 S280)에서는 페이로드(또는 문자열)을 기반으로 취약점이 판단될 수 있다.
보다 구체적으로 제1 취약점 판단(단계 S270)은 공개 코드를 가지는 취약점에 대한 판단으로 공개 코드와 매칭되는 취약점을 공격하는 공격 코드를 실행하여 수행될 수 있다. 공개 코드는 이미 공개적으로 알려진 정보 보안 결함 목록 각각을 정의한 코드일 수 있다. 예를 들어, 공개 코드는 CVE 코드일 수 있고, 공개 코드에 대한 공격 코드는 CVE 코드와 매칭되는 취약점에 대한 판단으로 CVE 코드에 매칭되는 공격 코드일 수 있다. 이러한 경우, 공개 코드에 대응되는 공격 코드가 존재하여 공격 코드를 기반으로 취약점 판단이 가능하다. 제1 취약점 판단(단계 S270)은 취약점 분석 대상에 대해 공격 코드를 실행하여 공격 코드를 기반으로 웹 사이트의 취약점을 판단할 수 있다.
제2 취약점 판단(단계 S280)은 퍼징 DB(fuzzing database)를 기반으로 퍼징 DB에 포함되는 페이로드(또는 문자열)을 기반으로 취약점 분석 대상에 대해 취약점 분석을 수행할 수 있다.
제1 취약점 판단(단계 S270) 및 제2 취약점 판단(단계 S280)은 구체적으로 후술된다.
제1 취약점 판단(단계 S270) 및 제2 취약점 판단(단계 S280)이 완료된 경우, 취약점 판단 결과(단계 S290) 가 생성되어 저장될 수 있다. 취약점 진단 서버는 취약점 판단 결과 정보를 웹 사이트 운영자에게 전달할 수 있다.
도 3은 본 발명의 실시예에 따른 웹 취약점 자동 진단 방법을 나타낸 순서도이다.
도 3에서는 제2 타입 웹 사이트 상에서 취약점 획득 파일을 통해 취약점 분석 대상 정보를 획득하는 방법이 개시된다.
도 3을 참조하면, 취약점 진단 서버(300)는 웹 사이트가 제2 타입 웹 사이트로 판단되는 경우, 취약점 진단 서버(300)는 HTML에서 로드하는 자바 스크립트 파일을 수집하고 목록화할 수 있다.
취약점 진단 서버(300)는 진단 타겟 서버(320)로 웹 HTTP 요청을 수행하고, HTTP 요청에 따른 HTTP 응답(response) 분석 및 HTML 분석을 수행할 수 있다.
취약점 진단 서버(300)는 HTML 스크립트 태그에서 로드하는 자바 스크립트를 탐색하고, 수집된 자바 스크립트 파일 중 자바스크립트 빌드 파일을 탐색할 수 있다.
구체적으로 HTML의 <script(스크립트)> 태그를 이용해 자바스크립트 빌드 파일이 획득될 수 있다.
구체적으로 취약점 진단 서버(300)는 정규식을 기반으로 하여 특정 문자열을 탐색하는 로직을 구현하여 자바스크립트 빌드 파일 안에서 API 시크릿 키(secret key)를 추출할 수 있다.
API 시크릿 키는 API 서버에 요청을 보내기 위해 API 서버에서 적절한 권한을 가지고 있는지 검사하기 위해 사용되는 비밀 키이다. 권한을 가진 사용자만 접근할 수 있는 API 서버에 요청을 보낼 경우, API 시크릿 키는 필수적으로 HTTP 요청 시 HTTP 헤더에 포함된다.
취약점 진단 서버(300)는 자바스크립트의 코드 패턴을 분석하여 월간해킹이 구축한 취약점 패턴 데이터베이스 상에서 매치가 되는 것이 있는지를 확인하여 정적으로 코드의 취약점을 분석할 수 있다. 예를 들어, Company.findOne({"name": "월간해킹"}), Company.find({"name": "월간해킹"})와 같은 두 코드는 MongoDB 데이터베이스에서 "월간해킹"이란 이름의 회사를 조회하는 쿼리를 Node.js (자바스크립트 기반의 서버 프레임워크) 코드로 표현한 것이다. 두 함수의 결과값은 월간 해킹의 회사 정보를 반환하는 것으로 같다.
개발자마다 코드 스타일이 다르지만 프로그래밍 언어에서 사용하는 기본 함수가 다를 수가 없으며, 서로 다른 개발자들도 프로그래밍 언어에서 제공하는 동일한 함수를 사용하게 되는데, 함수를 사용하면서 발생하는 취약점들에 대해 패턴을 찾아 취약점 진단 서버(300)는 그 패턴 값을 비교하고, 취약한 패턴으로 함수를 사용하는 것을 감지할 수 있다.
도 4는 본 발명의 실시예에 따른 제2 취약점 판단 방법을 나타낸 개념도이다.
도 4에서는 퍼징 데이터베이스 및 페이로드를 기반으로 취약점을 판단하기 위한 방법이 개시된다.
퍼징 데이터베이스(400)는 취약점 판단을 위한 페이로드(420)를 저장할 수 있다.
웹 사이트 상에서 발생할 수 있는 보안 리스크는 대표적으로 injection, broken authentication, sensitive data exposure, XML external entities(XXE), broken access control, security misconfiguration, cross-site scripting(XSS), insecure deserialization 등이 존재한다.
이러한 웹 사이트 상의 취약점을 판단하기 위해 퍼징 데이터베이스(400)에 저장된 임의의 페이로드(420)가 활용될 수 있다.
페이로드(420)는 취약점을 발생시키기 위한 취약한 입력 데이터(보안 상의 결함을 찾아낼 수 있도록 하는 문자열)이다. 예를 들어, 게시판이 있는 웹 페이지에 경우 제목, 내용 등이 입력되는데 제목에 취약한 값이 삽입되면 취약점이 발생하게 된다. 만약, 제목에 "<script>alert("제목입니다")</script>가 입력되는 경우, 입력된 자바 스크립트에 의해 웹 페이지 개발자의 의도와는 다르게 브라우저에 "제목입니다"라는 메세지 창이 뜨게 된다. 만약 메시지창을 나타나게 하는 것이 아니라, 사용자 계정 정보를 탈취하는 악성 자바스크리트가 삽입되는 경우, 사용자 계정을 탈취할 수 있는 취약점이 발생되게 된다.
구체적으로 퍼징 데이터베이스(400)에는 보안 리스크 카테고리별로 취약점을 판단할 수 있는 페이로드(420)가 존재할 수 있다. 예를 들어 cross-site scripting(XSS)에 대한 취약점 판단을 위한 페이로드(420)가 별도로 존재하고, 이러한 페이로드(420)를 통해 웹 사이트 상에 XSS에 대한 취약점이 존재하는지 여부에 대한 판단이 수행될 수 있다.
도 5는 본 발명의 실시예에 따른 웹 사이트 타입에 따른 취약점 분석 대상 정보 획득 방법을 나타낸 개념도이다.
도 5에서는 제1 타입 웹 사이트와 제2 타입 웹 사이트에 대한 취약점 분석 대상 정보 획득 방법이 개시된다.
제1 타입 웹 사이트와 제2 타입 웹 사이트는 최초 접속에서는 둘 다 요청 후 HTML을 받아오는 부분까지는 동일하지만 다음 페이지 이동시 서버에서 요청시 상이한 동작이 수행될 수 있다.
도 5의 (a)를 참조하면, 제1 타입 웹 사이트(510) 상에서 취약점 분석 대상 정보를 획득하는 방법이 개시된다.
제1 타입 웹 사이트(510)는 페이지 이동을 하고 서버에 요청을 하면 서버가 HTML 파일을 만들어서 클라이언트에 보내주고 브라우저가 HTML을 반영해서 보여준다. 제1 타입 웹 사이트(510)는 메인 웹 페이지에 접속하여 HTML을 불러와 웹 페이지에 링크된 URL들에 대한 크롤링이 필요하다.
도 5의 (b)를 참조하면, 제2 타입 웹 사이트(520) 상에서 취약점 분석 대상 정보를 획득하는 방법이 개시된다.
제2 타입 웹 사이트(520)는 초기에 모든 HTML 파일을 불러오고 페이지 이동시 필요한 서버 API에만 요청을 보내 HTML 문서 파일이 아닌 데이터만 불러오는 방식으로 초기에 불러온 HTML에서 로드해오는 자바스크립트 파일에서 받은 데이터(JSON 형태)를 토대로 HTML 페이지 내용을 변경해준다.
제2 타입 웹 사이트(520)는 웹 페이지 첫 접속 시 한 번 HTML 문서를 가져오고 HTML 문서에서 로드해오는 자바 스크립트 파일 내에 요청을 보내 HTML 문서의 내용을 변경해주는 로직이 존재한다. 따라서, 제1 타입 웹 페이지(510)의 취약점 진단하는 방식처럼 HTML 문서의 링크된 URL를 크롤링하는 방식이 아니라 HTML 문서에서 불러오는 자바스크립트 파일의 취약점을 분석하는 방식이 사용된다.
도 6은 본 발명의 실시예에 따른 취약점 분석 서비스 방법을 나타낸 개념도이다.
도 6에서는 복수의 진단 타겟 웹 사이트에 대한 취약점 분석을 진행하기 위한 방법이 개시된다.
도 6을 참조하면, 복수의 진단 타겟 서버를 대상으로 한 취약점 분석이 개시된다.
취약점 진단 서버는 복수의 진단 타겟 서버의 진단 타겟 웹 사이트에 대한 취약점 판단을 하기 위해 제1 취약점 판단 및 제2 취약점 판단을 수행함에 있어서 동시 판단이 가능한 취약점과 동시 판단이 불가하여 개별 판단이 되어야 할 취약점이 나눌 수 있다.
동시 판단이 가능한 취약점은 제1 타입 취약점(600), 개별 판단을 해야 하는 취약점은 제2 타입 취약점(620)이라는 용어로 표현될 수 있다.
하나의 진단 타겟 웹 사이트에 대해 판단이 수행하는 경우, 취약점 진단 서버는 제1 타입 취약점(600), 제2 타입 취약점(620)에 대해 우선 순위를 설정하여 취약점에 대한 판단을 수행할 수 있다.
제1 타입 취약점(600)은 동시 판단이 가능한 다양한 취약점들이 그룹핑되어 다양한 제1 타입 취약점 그룹(610)을 형성할 수 있다. 제2 타입 취약점(620)은 그룹핑이 불가하므로 단일한 제2 타입 취약점(620)으로 판단될 수 있다.
제1 타입 취약점 그룹(610)은 취약점에 대한 동시 판단이 가능한 다양한 제1 타입 취약점(600)들의 집합으로 하나의 제1 타입 취약점(600)이 여러 제1 타입 취약점 그룹(610)에 포함될 수 있다.
또한, 제1 타입 취약점 그룹(610)은 취약점에 대한 판단 결과에 따라 제1 타입 취약점 그룹(특정)(640)과 제1 타입 취약점 그룹(비특정)(650)으로 구분될 수 있다.
제1 타입 취약점 그룹(특정)(640)은 제1 타입 취약점 그룹 단위로 취약점에 대한 판단을 수행 후 취약점이 발견시 어떠한 제1 타입 취약점(600)에 대한 특정이 가능한 그룹일 수 있다.
반대로 제1 타입 취약점 그룹(비특정)(650)은 제1 타입 취약점 그룹 단위로 취약점에 대한 판단을 수행 후 취약점이 발견시 어떠한 제1 타입 취약점(600)에 대한 특정이 불가능한 그룹일 수 있다.
본 발명의 실시예에 따르면, 취약점 판단을 수행시 보다 빠르고 효과적인 판단을 위해서 현재까지 발견된 취약점 확률값(또는 취약점 빈도)(630)를 고려하여 제1 타입 취약점 그룹(특정)(640), 제1 타입 취약점 그룹(비특정)(650)을 설정하여 판단을 수행할 수 있다.
제1 타입 취약점(600) 중 특정이 불가한 취약점이고, 취약점 확률값(630)이 임계값 이상인 경우, 적어도 하나의 제1 타입 취약점 그룹(특정)(640)에 개별적으로 포함시키거나, 적어도 하나의 제1 타입 취약점 그룹(특정)(640)에 임계 개수를 포함시켜 취약점에 대한 판단을 수행할 수 있다. 이러한 방법을 통해 그룹 단위로 최대한 동시에 많은 취약점을 판단하되, 취약점이 발생시 어떠한 취약점인지에 대해 빠르게 결정할 수 있다.
제1 타입 취약점(600) 중 특정이 불가한 취약점이고, 취약점 확률값(630)이 임계값 미만인 경우, 제1 타입 취약점 그룹(비특정)(650)을 설정하여 판단을 수행할 수 있다.
이러한 취약점 확률값(630)을 결정하는 임계값은 계속적인 취약점 발생에 따라 변화될 수 있고, 그에 따라 제1 타입 취약점 그룹(특정)(640), 제1 타입 취약점 그룹(비특정)(650)은 계속적으로 변화될 수 있다.
제1 타입 취약점 그룹(비특정)(650)의 경우에도 취약점 확률값(630)을 반영하여 취약점 확률값(630)의 순서대로 그룹핑을 하여 취약점에 대한 판단이 수행될 수 있다. 예를 들어, 취약점 확률값(630)이 제1 임계값 이상인 제2 임계값 미만인 경우, 제1 타입 취약점 그룹A(비특정)로 설정하고, 취약점 확률이 제2 임계값 이상인 제3 임계값 미만인 경우, 제1 타입 취약점 그룹B(비특정)로 설정하여 특정 제1 타입 취약점 그룹(비특정)에서만 취약점을 발견할 확률을 높여 보다 빠른 취약점 판단이 수행될 수 있다.
본 발명에서는 그룹 단위의 판단은 웹 사이트 특성을 반영하여 수행될 수 있다. 웹 사이트 특성은 전술한 제1 타입 웹 사이트 또는 제2 타입 웹 사이트와 같이 구분되거나, 별도의 웹 사이트의 목적(예를 들어, 쇼핑, 커뮤니티 등)에 따라 구분될 수도 있다. 웹 사이트 특성에 따라 취약점 확률값이 서로 상이할 수 있고, 웹 사이트 특성을 기반으로 웹 사이트 별로 서로 다른 제1 타입 취약점 그룹(특정), 제1 타입 취약점 그룹(비특정)을 설정하여 취약점에 대한 판단이 수행될 수도 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항과 한정된 실시예 및 도면에 의하여 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위하여 제공된 것일 뿐, 본 발명이 상기 실시예에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정과 변경을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.
Claims (6)
- 웹 취약점 자동 진단 방법은,
취약점 진단 서버가 웹 사이트의 웹 사이트 타입을 결정하는 단계;
상기 취약점 진단 서버가 상기 웹 사이트 타입에 따라 취약점 분석 대상 정보를 결정하는 단계; 및
상기 취약점 진단 서버가 상기 취약점 분석 대상 정보를 기반으로 상기 웹 사이트의 취약점을 판단하는 단계를 포함하되,
상기 웹 사이트 타입은 제1 타입 웹 사이트 또는 제2 타입 웹 사이트이고,
상기 제1 타입 웹 사이트는 상기 취약점 분석 대상 정보를 크롤링(crawling) 기반으로 획득하는 웹 사이트이고,
상기 제2 타입 웹 사이트는 상기 취약점 분석 대상 정보를 취약점 획득 파일 또는 전체 다운로드된 정적 리소스를 기반으로 획득하는 웹 사이트인 것을 특징으로 하는 방법. - 삭제
- 제1항에 있어서,
상기 취약점 분석 대상 정보는 상기 웹 사이트에 대한 페이지 URL 정보, API(application programming interface) 엔드포인트(endpoint) 정보를 포함하는 것을 특징으로 하는 방법. - 웹 취약점 자동 진단을 수행하는 취약점 진단 서버는,
진단 타겟 서버와 통신하기 위해 구현된 통신부; 및
상기 통신부와 동작 가능하게(operatively) 구현된 프로세서를 포함하되,
상기 프로세서는 웹 사이트의 웹 사이트 타입을 결정하고,
상기 웹 사이트 타입에 따라 취약점 분석 대상 정보를 결정하고,
상기 취약점 분석 대상 정보를 기반으로 상기 웹 사이트의 취약점을 판단하도록 구현되되,
상기 웹 사이트 타입은 제1 타입 웹 사이트 또는 제2 타입 웹 사이트이고,
상기 제1 타입 웹 사이트는 상기 취약점 분석 대상 정보를 크롤링(crawling) 기반으로 획득하는 웹 사이트이고,
상기 제2 타입 웹 사이트는 상기 취약점 분석 대상 정보를 취약점 획득 파일 또는 전체 다운로드된 정적 리소스를 기반으로 획득하는 웹 사이트인 것을 특징으로 하는 취약점 진단 서버. - 삭제
- 제4항에 있어서,
상기 취약점 분석 대상 정보는 상기 웹 사이트에 대한 페이지 URL 정보, API(application programming interface) 엔드포인트(endpoint) 정보를 포함하는 것을 특징으로 하는 취약점 진단 서버.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210032376A KR102311119B1 (ko) | 2021-03-12 | 2021-03-12 | 웹 취약점 자동 진단 방법 및 이러한 방법을 수행하는 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210032376A KR102311119B1 (ko) | 2021-03-12 | 2021-03-12 | 웹 취약점 자동 진단 방법 및 이러한 방법을 수행하는 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102311119B1 true KR102311119B1 (ko) | 2021-10-13 |
Family
ID=78150730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210032376A KR102311119B1 (ko) | 2021-03-12 | 2021-03-12 | 웹 취약점 자동 진단 방법 및 이러한 방법을 수행하는 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102311119B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080026178A (ko) * | 2005-07-15 | 2008-03-24 | 마이크로소프트 코포레이션 | 알려진 취약점들로부터 html 브라우저들 및 그확장판들을 면역화 |
KR20200114488A (ko) * | 2019-03-28 | 2020-10-07 | 네이버비즈니스플랫폼 주식회사 | Url 주소 판별장치 및 url 주소 판별방법 |
-
2021
- 2021-03-12 KR KR1020210032376A patent/KR102311119B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080026178A (ko) * | 2005-07-15 | 2008-03-24 | 마이크로소프트 코포레이션 | 알려진 취약점들로부터 html 브라우저들 및 그확장판들을 면역화 |
KR20200114488A (ko) * | 2019-03-28 | 2020-10-07 | 네이버비즈니스플랫폼 주식회사 | Url 주소 판별장치 및 url 주소 판별방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210382949A1 (en) | Systems and methods for web content inspection | |
Aliero et al. | An algorithm for detecting SQL injection vulnerability using black-box testing | |
CN110324311B (zh) | 漏洞检测的方法、装置、计算机设备和存储介质 | |
US9596255B2 (en) | Honey monkey network exploration | |
US9251282B2 (en) | Systems and methods for determining compliance of references in a website | |
CN111400722B (zh) | 扫描小程序的方法、装置、计算机设备和存储介质 | |
US20110307956A1 (en) | System and method for analyzing malicious code using a static analyzer | |
US9681304B2 (en) | Network and data security testing with mobile devices | |
CN111783096B (zh) | 检测安全漏洞的方法和装置 | |
US11677774B2 (en) | Interactive web application scanning | |
RU2697950C2 (ru) | Система и способ выявления скрытого поведения расширения браузера | |
KR20110095534A (ko) | 웹 서비스의 실시간 취약성 진단 및 결과정보 제공 서비스 시스템 | |
KR20090090685A (ko) | 웹 어플리케이션의 취약성 판단 방법 및 시스템 | |
US11792221B2 (en) | Rest API scanning for security testing | |
Kapodistria et al. | An advanced web attack detection and prevention tool | |
CN114003794A (zh) | 资产收集方法、装置、电子设备和介质 | |
Takata et al. | Minespider: Extracting urls from environment-dependent drive-by download attacks | |
Alidoosti et al. | Evaluating the web‐application resiliency to business‐layer DoS attacks | |
Ablahd | Using python to detect web application vulnerability | |
Parimala et al. | Efficient web vulnerability detection tool for sleeping giant-cross site request forgery | |
KR102311119B1 (ko) | 웹 취약점 자동 진단 방법 및 이러한 방법을 수행하는 장치 | |
Lin et al. | The automatic defense mechanism for malicious injection attack | |
Cvitić et al. | Defining cross-site scripting attack resilience guidelines based on BeEF framework simulation | |
Gaolong et al. | Design and implementation of a web application vulnerability detection system | |
US10819730B2 (en) | Automatic user session profiling system for detecting malicious intent |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant |