KR20150063439A - 어플리케이션 보안 시험 - Google Patents

어플리케이션 보안 시험 Download PDF

Info

Publication number
KR20150063439A
KR20150063439A KR1020157009868A KR20157009868A KR20150063439A KR 20150063439 A KR20150063439 A KR 20150063439A KR 1020157009868 A KR1020157009868 A KR 1020157009868A KR 20157009868 A KR20157009868 A KR 20157009868A KR 20150063439 A KR20150063439 A KR 20150063439A
Authority
KR
South Korea
Prior art keywords
real
function
test
aut
time modifier
Prior art date
Application number
KR1020157009868A
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 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
Publication of KR20150063439A publication Critical patent/KR20150063439A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general

Abstract

본 명세서에 개시되는 일례의 실시예는 피시험 어플리케이션(AUT)의 실시간 수정에 관한 것이다. 보안 시험이 AUT 상에서 수행된다. 실시간 모디파이어는 AUT에 의해 실행될 기능의 부분이 안전하지 않은 것을 판정한다. 실시간 모디파이어는 그 부분을 실행하지 않도록 AUT의 실행을 수정한다.

Description

어플리케이션 보안 시험{APPLICATION SECURITY TESTING}
본 발명은 어플리케이션 보안 시험에 관한 것이다.
웹 어플리케이션과 같은 어플리케이션에서의 취약점(vulnerability)을 식별하기 위해 소프트웨어 보안 시험(software security testing)이 이용된다. 웹-기반 소프트웨어를 위한 종래의 블랙 박스 보안 시험(black-box security testing)은 공격자(attacker)인 것처럼 가장(pose)하는, 스캐너로서도 지칭되는, 보안 시험 어플리케이션을 이용함으로써 작동한다. 블랙 박스 접근법에서, 스캐너는 HTTP 요청을 만들고 피시험 어플리케이션(Application Under Test, AUT)이 입력을 받아들이는 URL의 전부를 찾기 위해 HTTP 응답 또는 HTTP 응답 없음을 평가함으로써 피시험 어플리케이션(AUT)을 탐색한다. AUT가 입력을 받아들이는 URL은 AUT의 어택 서피스(attack surface)로서 지칭될 수도 있다. 그리고나서, 스캐너가 어택 서피스 및 유사 범주의 취약점에 기초하여 공격을 생성한다. 스캐너는 프로그램의 HTTP 응답을 평가함으로써 취약점의 존재 또는 부재를 진단하기 위해 공격을 가한다.
본 발명의 특징에 따라, 컴퓨팅 디바이스에 통식 방식으로 연결되는 실시간 모디파이어(real-time modifier)에서 실행되는 피시험 어플리케이션을 호스팅하는 서버를 포함하며, 상기 컴퓨팅 디바이스가 상기 피시험 어플리케이션에 대한 보안 시험을 수행하고, 상기 실시간 모디파이어가 상기 피시험 어플리케이션에 의해 실행될 기능이 안전하지 않은 것을 판정하며, 상기 실시간 모디파이어가 안전하지 않은 것으로 간주된 상기 기능의 부분이 실행되지 않도록 하는 것을 특징으로 하는 컴퓨팅 시스템이 제공된다.
이하의 도면을 참조하여 본 발명을 상세하게 설명한다.
도 1은 일례에 따른, 안전하지 않은 실행(unsafe execution)을 결정하고 수정함으로써 피시험 어플리케이션의 실행을 수정할 수 있는 컴퓨팅 시스템의 블록도이다.
도 2는 일례에 따른, 피시험 어플리케이션의 실행을 수정할 수 있는 시험 시스템 구성을 보여주는 블록도이다.
도 3은 일례에 따른, 안전성에 기초하여 수정되는 피시험 어플리케이션의 동작의 예를 보여주는 블록도이다.
도 4는 일례에 따른, 실행의 안정성에 기초하여 피시험 어플리케이션의 실행을 수정하는 방법의 흐름도이다.
도 5는 일례에 따른, 안정성에 기초하여 보안 시험의 액션에 응답하여 피시험 어플리케이션을 수정할 수 있는 컴퓨팅 디바이스의 블록도이다.
본 명세서에서 설명되는 실시예는 웹 어플리케이션과 같은 어플리케이션의 시험을 수행하는 기술을 제공한다. 회사가 제품으로 갖고 있거나 또는 제품으로 내놓으려고하는 웹 어플리케이션이 얼마나 안전한지를 회사가 알고자 할 때, 회사는 침투 시험 솔루션(penetration testing solution)(예컨대, 스캐너의 사용), 퍼지 시험(fuzz testing), 취약점 시험, 소프트웨어 보안 시험, 웹사이트 보안 시험, 이들의 조합 등과 같은 보안 시험 솔루션을 이용하는 경우가 있다. 회사는 제품으로 갖고 있는 어플리케이션의 카피를 피시험 어플리케이션(AUT)으로서 이용하기를 원할 수도 있다. 제품으로 갖고 있는 어플리케이션 또는 제품으로 내놓으려고 하는 어플리케이션을 시험을 위해 사용하는 이유는 회사가 동일한 코드를 시험하기를 원할 수도 있기 때문이다. 제품화 어플리케이션으로 내놓으려고 하는 AUT를 품질 보증 단계에서 이용하는 것은 제품으로 사용되는 어플리케이션이 시험되었다는 것을 보증한다. 본 명세서에서 전반에 걸쳐, 스캐너가 언급되지만, 다른 시험 솔루션이 마찬가지로 이용될 수도 있다는 것을 이해하여야 한다.
동적 웹 어플리케이션 스캐닝 동안, 스캐너는 어플리케이션 어택 서피스를 찾아내고 발견된 어택 벡터에 대한 다수의 공격을 수행하기 위해 어플리케이션으로 작업하는 사용자의 액션을 모방한다. 스캐너가 시험하고 있는 어플리케이션의 로직을 스캐너가 알지 못하기 때문에, 스캐너의 동작의 몇몇이 AUT 또는 AUT의 환경에 손상을 줄 수도 있다.
일례에서, 기업 어플리케이션(enterprise application)의 스캔 동안, 어플리케이션은 스캐너가 "컨택 어스(contact us)" 페이지를 발견한 때에 다수의 이메일을 다양한 고용인(employee)에게 발송할 수 있다. 그러나, 스캐너의 관점에서는, 시험은 단지 또 다른 HTTP POST 어택 벡터일뿐이다.
또 다른 예에서, 서비스 거부(Denial of Service, DoS) 공격의 목표는 어플리케이션을 느리게 하거나 다운시키는 것이다. 침투 시험 솔루션은 이들 취약점을 찾기를 원하고, 어플리케이션을 다운시킬 수 있는 이들 공격을 밖으로 보냄으로써 이를 행한다. 성공 시에, 어플리케이션은 다운되거나 느려지게 되며, 이것은 더 이상의 시험을 필요없게 한다.
스캔의 위험하고 지장을 주는 성질은 고객으로 하여금 피시험 어플리케이션을 샌드박스(sandbox)하는데 많은 시간을 소비하게 할 수 있다. 이것은 어플리케이션의 내부 복잡도 및 그 기능에 대한 완전한 지식의 부족 때문에 성공적이지 않을 수도 있다. 각각의 스캔 후에 어플리케이션을 원래의 상태로 되돌리는 태스크는 시간이 많이 소요될 수 있으며, 그 프로세스 동안의 어떠한 실수는 인터-스캔 인콘시스턴시(inter-scan inconsistency)를 야기할 수도 있어서, 취약점 리포트의 소비자를 혼란스럽게 만든다. 또한, AUT의 상태가 보안 시험에 의해 지장을 받게 되면, 시험은 예컨대 AUT 크래싱(AUT crashing)으로 인해 너무 이르게(prematurely) 실패할 수 있으며, 비응답성으로 되어, 어플리케이션 로직이 공격에 의해 스큐되는(skewed) 등으로 된다. 이와 같이, 이러한 시험이 실행되기 전에 AUT가 실패할 수 있기 때문에, 보안 시험은 AUT의 중요한 취약점을 찾는 것을 실패할 수도 있다.
이에 따라, 본 명세서에서 소개되는 접근법의 이점은, DoS 문제점을 그때그때(on the fly) 바로잡지만, 여전히 그 문제점을 시험 솔루션에 역으로 보고하고, AUT로 하여금 안전하지 않은 것으로 간주된 액션을 수행하지 못하도록 하기 위해 AUT의 실행을 동적으로 수정하는 것을 포함할 것이다. 이 접근법은 어플리케이션이 깨어 있고 실행되고 있는 것으로 유지되면서(stay up and running) 공격자가 어플리케이션에서의 어떠한 문제점을 어떻게 악용할 수 있는지를 지적하는 것을 보장할 수 있다. 다른 가해 또는 안전하지 않은 동작(damaging or unsafe operation)은, 데이터베이스 레코드를 와이핑(wiping)하는 것과, 데이터베이스 레코드를 수정하는 것과, 어플리케이션 크롤링 및 오디트(application crawling and audit) 동안 생성된 복수의 레코드로 데이터베이스를 오염시키는 것과, 서버측 파일 시스템과의 예상밖의 동작(unexpected operation), 서버측 리소스(예컨대, 이용 가능한 소켓)의 소진(exhaustion) 등을 포함할 수 있다.
AUT는 실시간 모디파이어 환경(real-time modifier environment)으로 실행될 수 있다. 이와 같이, AUT 내의 기능의 성과(outcomes of function within the AUT)가 변경되거나 수정될 수 있다. 예컨대, 어플리케이션에서의 API(Application Programming Interface)를 조사(instrument)함으로써, AUT의 행동이 그때그때 수정될 수 있다. 예컨대, 안전하지 않은 프로시저(unsafe procedure)가 호출되면, 실시간 모디파이어가 위험한 동작을 실제로 수행하지 않고서 프로시저의 실행을 에뮬레이트할 수 있다. 어떠한 예에서, 실시간 모디파이어 환경은 AUT에 의해 채용되는 API에 대한 액세스를 가질 수 있다. 구현(implementation)을 용이하게 할 수 있는 실시간 모디파이어 솔루션의 예는 Java 및 .NET 프레임워크를 포함한다. 이들 프레임워크는 데이터베이스, 이메일 및 통신 서비스를 개발자에게 제공하기 위해 이용될 수 있다.
도 1은 일례에 따른, 안전하지 않은 실행(unsafe execution)을 결정하고 수정함으로써 피시험 어플리케이션의 실행을 수정할 수 있는 컴퓨팅 시스템의 블록도이다. 이 시스템은 전반적으로 도면부호 100이 부여되어 있다. 당해 기술 분야에 익숙한 사람은, 도 1에 도시된 기능 블록 및 디바이스가, 회로를 포함하는 하드웨어 요소, 비일시적(non-transitory) 기기 판독 가능 매체 상에 저장된 컴퓨터 코드를 포함하는 소프트웨어 요소, 또는 하드웨어 요소와 소프트웨어 요소의 조합을 포함할 수도 있다는 것을 이해할 것이다. 또한, 이 구성은 도 1에 도시된 것으로 한정되지 않으며, 본 발명의 실시예에서는 어떠한 개수의 기능 블록 및 디바이스도 이용될 수 있다. 당해 기술 분야에 익숙한 사람은 특정한 전자 디바이스를 위한 설계 고려사항에 기초하여 구체적인 기능 블록을 용이하게 정할 수 있을 것이다.
도 1에 예시된 바와 같이, 시스템(100)은 컴퓨팅 디바이스(102)를 포함할 수 있으며, 컴퓨팅 디바이스(102)는 버스(106)를 통해 디스플레이(108)와 같은 표시 디바이스, 키보드(110), 및 마우스, 터치 스크린 또는 키보드 등의 하나 이상의 입력 디바이스(112)에 연결되는 프로세서(104)를 포함할 수 있다. 일실시예에서, 컴퓨팅 디바이스(102)는 예컨대 데스크탑 컴퓨터, 랩탑 컴퓨터, 서버 등의 범용 컴퓨팅 디바이스이다. 컴퓨팅 디바이스(102)는 또한 본 발명의 실시예에서 사용되는 오퍼레이팅 프로그램을 포함한 다양한 오퍼레이팅 프로그램의 실행 동안 사용될 수 있는 메모리(114)와 같은 하나 이상의 타입의 비일시적 컴퓨터 판독 가능 매체를 가질 수 있다. 메모리(114)는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM) 등을 포함할 수 있다. 컴퓨팅 디바이스(102)는 또한 본 발명의 실시예에서 사용되는 오퍼레이팅 프로그램 및 데이터를 포함한 오퍼레이팅 프로그램 및 데이터의 장기 저장을 위한 저장 시스템(116)과 같은 다른 비일시적 컴퓨터 판독 가능 매체도 포함할 수 있다.
일실시예에서, 컴퓨팅 디바이스(102)는 컴퓨팅 디바이스(102)를 서버(120)에 연결하기 위한 네트워크 인터페이스 컨트롤러(NIC)(118)를 포함한다. 컴퓨팅 디바이스(102)는 인터넷, 근거리 통신망(LAN), 광역 통신망(WAN), 또는 또 다른 네트워크 구성과 같은 네트워크를 통해 서버(120)에 통신 방식으로 연결될 수 있다. 서버(120)는 데이터를 저장하고, 통신을 버퍼링하고, 서버(120)의 오퍼레이팅 프로그램을 저장하기 위한, 스토리지 디바이스와 같은, 비일시적 컴퓨터 판독 가능 매체를 가질 수 있다. 컴퓨팅 디바이스(102)와 서버(120) 간의 통신은 HTTP 또는 또 다른 API와 같은 요청-응답 프로토콜을 이용하여 시행될 수 있다.
서버(120)는 AUT(124)를 호스팅하는 어플리케이션 서버이어도 된다. 서버(120)는 또한 AUT(124)의 실행을 모니터링하거나 및/또는 수정할 수 있는 실시간 모디파이어(126)를 포함한다. 어떠한 예에서, 실시간 모디파이어(126)는 AUT(124)를 실행하기 위한 환경으로서 동작한다. 실시간 모디파이어(126)는 .NET 프레임워크, Java Virtual Machine, 또는 기타 유사 엔진과 같은 소프트웨어 프레임워크를 이용하여 구현될 수 있다. 다른 예에서, AOP(Aspect Oriented Programming) 또는 기타 소프트웨어가 이용될 수도 있다. 몇몇 예에서, 서버는 컴퓨팅 디바이스(500), 랩탑, 데스크탑 컴퓨터, 워크스테이션, 또는 기타 컴퓨팅 디바이스 등의 컴퓨팅 디바이스로서 구현될 수 있다.
일례에서, Java Virtual Machine 도구가 이용된다. 호출되는 API를 모니터링하거나 및/또는 관리하기 위해 API 피호출 도구(API Called Instrument)가 이용될 수 있다. 여기서, 특정 API 또는 API의 세트가 호출되는 때에, 이 도구는 코드, 변수 등을 실행(execution)으로 대체하거나 및/또는 AUT(124)의 실행을 수정할 수 있다. 예컨대, API의 일부가 호출되면, 실시간 모디파이어에 연관된 코드가 요구된 패스(desired path)의 선택을 용이하게 하기 위해 실행될 수 있다. .NET와 같은 다른 소프트웨어 프레임워크에서 유사한 접근법이 이용될 수 있다. 여기에서, 변경은 메모리에서 수행될 수 있다. 이와 같이, AUT(124)는 직접 수정될 필요가 없다.
또 다른 예에서, AOP 특징이 이용될 수 있다. 모니터링될 API가 지정될 수 있다. 런타임에서, 프로그램된 세팅에 기초하여 그때그때 변경이 시행될 수 있다.
컴퓨팅 디바이스(102)는 AUT(124)에 대해 보안 시험을 수행하는 스캐너, 퍼징, 취약점 테스터 등과 같은 보안 시험 모듈(128)을 포함할 수 있다. 일례에서, 취약점 테스터는 AUT(124)에서 알려진 취약점을 찾고, 잠재적인 노출(potential exposure)을 보고한다. 또 다른 예에서, 침투 테스터 또는 스캐너는 AUT(124)에 연관된 비지니스의 정상적인 과정을 활용하는(exploit) 방법을 찾는 시험이다. 또 다른 예에서, 퍼지 시험은 AUT의 입력에 유효하지 않거나, 예상되지 않거나, 또는 랜덤한 데이터를 제공하는 것을 포함하는 기술일 수 있다. AUT(124)는 그리고나서 문제점에 대해 모니터링될 수 있다.
보안 시험 모듈(128)은 HTTP 요청을 네트워크를 통해 AUT(124)에 전송할 수 있으며, 여기서 HTTP 요청은 AUT(124)의 취약점을 노출시키는 것을 시도하도록 구성된다. HTTP 요청은 암호화된 통신을 제공하고 네트워크 웹 서버의 식별을 안전하게 하기 위해 하이퍼텍스트 트랜스퍼 프로토콜을 SSL(Secure Sockets Layer) 및 TLS (Transport Layer Security) 프로토콜과 조합하는 HTTPS 요청을 포함할 수 있다.
AUT(124)에 의한 HTTP 요청의 처리 동안, 옵저버(observer)(도시하지 않음)는 AUT(124)에 의해 수행되는 내부 프로세스를 모니터링할 수 있다. 예컨대, 옵저버는 AUT(124)에 의해 실행되는 코드의 라인, 액세스되는 파일, 수행되는 데이터베이스 쿼리 등을 식별할 수 있다. 옵저버 및 AUT(124) 둘 모두는 동일한 HTTP 채널을 통해 보안 시험 모듈(128)과 통신하도록 구성될 수 있다.
도 2를 참조하여 추가로 설명되는 바와 같이, 보안 시험 모듈(128)로부터 서버(120)에 전송되는 몇몇 요청은 자신의 프로그래밍에 따라 AUT(124)로부터의 응답을 끌어내기(elicit) 위해 AUT(124)를 타겟으로 할 수 있다. 보안 시험 모듈(128)로부터 서버(120)에 전송되는 다른 요청은, 특정 요청이 AUT(124)에 의해 수행되는 동작에 미치는 영향에 관한 추가의 정보, 또는 AUT(124), 옵저버 또는 AUT(124)를 호스팅하는 서버(120)에 관련된 기타 정보를 획득하기 위해 옵저버를 타겟으로 할 수 있다. 어플리케이션 요청 및 서비스 요청에 응답하여 보안 시험 모듈(128)에 의해 수신된 데이터는 취약점 리포트를 발생하기 위해 보안 시험 모듈(128)에 의해 사용될 수 있다. 취약점 리포트는 보안 시험 모듈(128)에 의해 제공된 사용자 인터페이스를 통해 사용자에게 디스플레이될 수 있다.
전술한 바와 같이, 어떠한 시나리오에서, 보안 시험 모듈(128)은 컴퓨팅 디바이스(102)에 통신 방식으로 결합되는 AUT(124)에 대해 보안 시험을 수행한다. 시험 동안, 실시간 모디파이어(126)는 AUT(124)의 실행을 모니터링할 수 있고, AUT(124)에 의해 실행될 기능 또는 기능의 부분(a function or portion of a function)이 안전한지 아니면 안전하지 않은지의 여부를 판정할 수 있다. 실시간 모디파이어(126)는 AUT(124)에 의해 실행되는 기능이 안전하지 않은 것을 판정할 수 있다. 이에 따라, 일실시예에서, 실시간 모디파이어(126)는 안전하지 않은 것으로 간주된 기능의 부분을 수행하지 않음으로써 AUT(124)의 실행을 수정할 수 있다. 일례에서, 부분은 기능 전체이다. 또 다른 예에서, 부분은 기능의 일부이어도 된다.
인지 모듈(recognition module)(130)은 AUT(124)에 의해 호출될 기능이 안전한지 아니면 안전하지 않은지의 여부를 판정할 수 있다. 일례에서, 기능 또는 기능의 부분은 기능 및/또는 기능의 부분에 의해 수행될 프로세스의 타입에 기초하여 안전하지 않은 것으로 고려될 수 있다. 일실시예에서, 부분은 원하지 않은 액션을 수행한다면 안전하지 않은 것으로 고려될 수 있다. 원하지 않은 액션은 통신 및/또는 스토리지에 관련될 수 있다. 또한, 원하지 않은 액션은 테스트 베드(test bed)를 추가의 시험을 수행하기가 더 곤란하게 만들기 위해 테스트 베드를 수정하는 것과 연계될 수 있다. 어떠한 예에서, 사용된 프로세스의 타입이 데이터베이스 레코드의 삭제, 또 다른 데이터베이스 레코드의 수정, 데이터베이스의 오염, 외부로 향하는 메시지(outgoing message)(예컨대, 이메일, 텍스트 메시지 등)의 전송, 서버(120)의 하나 이상의 리소스의 소진 등 중의 하나 이상을 수행하도록 구성되면, 프로세스는 안전하지 않은 것으로 고려될 수 있다. 일례에서, 서버(120) 상의 파일의 삭제가 성공적인 공격의 결과에 의해 야기될 수 있다. 또 다른 예에서, 데이터베이스 엔트리를 제거하는 것이 성공적인 공격의 결과일 수 있다. 또한, 스팸 외부 이메일 박스(spamming external email box) 및/또는 텍스트 메시징 전화(text messaging phone)는 어플리케이션 서피스 발견 및 공격(application surface discovery and attack)의 결과일 수 있다. 더욱이, 몇몇 안전하지 않은 기능은 AUT를 다운시키는 것으로 알려진 어떠한 공격(예컨대, Java 환경에서의 parseDouble)을 처리할 수 있다.
또 다른 실시예에서, 기능은 기능에 의해 호출되는 API에 기초하여 안전하지 않은 것으로 고려된다. 이 예에서, AUT는 호출에 대해 안전하지 않은 것으로서 플래그(flag)될 수 있다. 일례의 API는 데이터베이스의 수정 및/또는 외부 환경에의 통신에 연관될 수 있다.
실시간 모디파이어(126)는 안전하지 않은 것으로 간주되는 기능의 부분을 수행하지 않고 그 부분을 에뮬레이트할 수 있다. 일례에서, 이것은 AUT(124)가 보안 시험 모듈(128)에게 어떠한 응답을 할지를 결정하고 그 응답을 전송함으로써 행해질 수 있다. 이와 같이, 예컨대 컨택 페이지 상에서 이용할 수 있는 이메일 주소를 갖는 회사의 대표 또는 이메일을 제어하는 부분과 같은, 특정한 사람 또는 엔티티에게 이메일이 전송되도록 요청하는 기능은 실행 동안 이메일을 전송하지 않도록 수정되는 한편, 보안 시험 모듈(128)에게 응답을 전송할 수 있다. 응답은 예컨대 이메일이 전송되었다는 확인응답(confirmation)을 포함할 수 있다. 이러한 에뮬레이션은 안전하지 않은 것으로 고려된 다른 타입의 프로세스에 대해서는 안전하지 않은 것으로 간주된 부분(들)을 수행하지 않고 예상된 성과를 리턴함으로써 수행될 수 있다. 지장을 주는 동작(disruptive operation)을 발생하지 않게 하고 AUT의 나머지를 그대로(intact) 유지하는 것은(예컨대, 하이 레벨 코드가 적절하게 기능하는 것을 유지하도록 안전하지 않은 동작의 액션을 시뮬레이션함으로써) 보안 시험 하에서의 AUT의 안정성을 보장하는데 도움을 줄 수 있다.
다른 시나리오에서, 실시간 모디파이어(126)는 안전하지 않은 것으로 간주된 기능의 부분을 수행하지 않는다. 그 대신, 실시간 모디파이어(126)는 그 부분이 실행되는 것을 차단한다. 몇몇 예에서, 이것은 전체 기능을 차단함으로써 발생할 수 있다. 다른 예에서, 이것은 코드의 일부분이 호출되거나 실행되지 않도록 함으로써, 예컨대 I/O, 스토리지, 또는 외부 통신에 대한 API 콜이 호출되거나 및/또는 실행되지 않도록 함으로써 수행될 수 있다.
또한, 몇몇 시나리오에서, 실시간 모디파이어(126) 및/또는 옵저버 어플리케이션(실시간 모디파이어(126)의 일부로서 포함될 수 있는)과 같은 서버(120)의 또 다른 일부분은 부분에 연관된 취약점을 보안 시험 모듈(128)에 보고할 수 있다. 전술한 바와 같이, 보안 시험은 침투 시험이어도 된다. 일례에서, 안전하지 않은 기능이 호출되는 때에, 옵저버는 안전하지 않은 기능의 가능한 성과(likely outcome)가 무엇일지를 주목하고, 이를 기록할 수 있다. 안전하지 않은 기능이 또한 취약점이면, 이것이 보고될 수 있다. 또한, 조합 시에는 하나보다 많은 기능의 활동(activity)이 취약점을 나타낼 수 있다. 예컨대, 동일한 기능에 대해 복수의 호출이 이용되면 너무 많은 시스템 리소스를 소비할 수도 있다. 이와 같이, 몇몇 예에서, 실시간 모디파이어(126) 및/또는 옵저버는, 에뮬레이션의 일부로서, 서버 리소스의 사용의 에뮬레이션을 수행할 수 있다.
도 2는 일례에 따른, 피시험 어플리케이션의 실행을 수정할 수 있는 시험 시스템 구성을 보여주는 블록도이다. 시스템(200)은 스캐너(202), 실시간 모디파이어(204), AUT(206), 및 옵저버(208)를 포함할 수 있다.
AUT(206)는 다른 것들 중에서도 JAVA 또는 .NET와 같은 어떠한 적합한 웹 기반 컴퓨터 언어로도 인코딩될 수 있다. AUT(206)는 Struts, Struts 2, ASP.NET MVC, Oracle WebLogic 및 Spring MVC 등과 같은 적합한 소프트웨어 프레임워크 내에서 동작할 수 있다. 소프트웨어 프레임워크는 특정한 기능을 제공하는 것으로 사용자 코드에 의해 선택적으로 오버라이드될(overridden) 또는 스페셜라이즈될(specialized) 수 있는 포괄적 기능(generic functionality)을 제공하는 코맨드 코드 모듈(common code module)의 세트를 포함한다. AUT(206)는 JVM(Java Virtual Machine), CLR(Common Language Runtime), 및/또는 스캐너(202)로부터의 요청을 처리하기 위한 다른 런타임 환경의 하나 이상의 인스턴스(instance)를 실행하도록 구성될 수 있다. 소프트웨어 프레임워크의 코맨드 코드 모듈 또는 런타임 환경에 의해 제공되는 프로그래밍 명령은 컨테이너 코드(container code)로서 지칭될 수 있다. AUT(206)에 특정되는 커스텀 프로그래밍 명령(custom programming instruction)은 유저 코드(user code)로서 지칭될 수 있다.
시험 동안, 스캐너(202)는 AUT가 입력을 받아들이는 URL의 전부를 찾아내기 위해 HTTP 요청을 만들고 HTTP 응답 또는 HTTP 응답 없음을 평가함으로써 AUT(206)를 탐험할 수 있다. 응답 없음은 예컨대 시험된 어플리케이션이 실패하였거나 및/또는 그 어플리케이션을 호스팅하는 서버가 실패하였는지를 판정하기 위한 정보와 같은 유용한 정보를 제공할 수 있다. 여기에서 논의되는 예가 스캐너(202)에 관련된 것이기는 하지만, 다른 보안 시험 엔진, 모듈 및/또는 기술이 이용될 수도 있다.
AUT(206)는 네트워크를 통해 스캐너(202)와 AUT(206) 간의 통신을 가능하게 하는 네트워크 인터페이스(도시하지 않음)를 포함한다. 네트워크 인터페이스는 AUT(206)의 어택 서피스를 노출시키며, AUT(206)가 일반적인 사용에 이용 가능하게 될 때에 AUT(206)에 대한 액세스를 제공하기 위해 실제로 사용될 동일한 인터페이스이다. 네트워크 인터페이스를 통한 스캐너(202)와 AUT(206) 간의 통신은 스캐너(202)로부터 AUT(206)로 발행된 어플리케이션(예컨대, HTTP를 통한) 요청 및 AUT(206)로부터 스캐너(202)로 발행된 HTTP 응답을 통해 시행될 수 있다. AUT(206)를 타겟으로 하는 요청은 어플리케이션 요청으로 지칭될 수 있고, AUT(206)로부터 수신된 응답은 어플리케이션 응답으로 지칭될 수 있다. 스캐너(202)에 의해 발생된 어플리케이션 요청은 AUT(206)의 잠재적인 취약점을 노출시키도록, AUT(206)에 의해 가장된(posed) 시험에 응답하도록, 등등을 위해 구성될 수 있다.
실시간 모디파이어(204) 및/또는 옵저버(208)는 AUT(206)의 실행 환경 내에서 작동할 수 있고, AUT(206)에 의해 수행된 내부 동작에 대한 액세스를 갖는다. 예컨대, 실시간 모디파이어(204)는 다양한 프로그램 포인트에서 JAVA 클래스와 같은 추가의 코드를 인젝트(inject)함으로써 AUT(206)의 바이트코드(bytecode)를 수정할 수 있다. 인젝티드 코드(injected code)는 AUT(206)를 관찰하는 모니터로서 작용한다. 인젝티드 모니터 코드는 예컨대 데이터베이스의 수정, 외부 개인과의 통신 등과 같은 안전하지 않은 것으로 간주될 수 있는 특정한 동작을 수행하는 어플리케이션 프로그래밍 인터페이스(API) 호출과 같은 AUT(206)에서의 전략 프로그램 포인트(strategic program point)에 위치될 수 있다.
스캐너(202)와 옵저버(208) 간의 통신은 커스텀 요청 및 응답 헤더(custom request and response headers)의 사용을 통해 구현될 수 있다. 커스텀 헤더는 스캐너(202)에 의한 어플리케이션 요청에 추가될 수 있으며, 커스텀 헤더는 옵저버(208)에 의한 어플리케이션 응답에 추가될 수 있다. 이러한 방식으로, 스캐너(202)와 옵저버(208) 간의 통신의 적어도 몇몇은 AUT(206)와의 정상적인 통신에 피기백(piggy-back)될 수 있다. 단일 채널의 통신을 이용하는 것은 전용의 2차 채널을 개방하는 것과의 어떠한 문제점을 제거하며, HTTP 헤더를 추가하는 것은 통상적으로 AUT(206)의 정상적인 동작과 간섭하지 않는다.
일례에서, 스캐너(202)는 AUT(206)에 대해 시험을 수행한다. 어플리케이션 요청이 AUT(206)에 전송될 수 있고, 어플리케이션 응답이 수신될 수 있다. 스캐너(202)는 예컨대 입력이 AUT(206)에 제공될 수 있는 위치와 같은 가능한 보안 취약점 영역을 찾기 위해 어플리케이션 요청을 전송하고 응답을 수신할 수 있다. 그리고나서, 스캐너(202)는 어택 벡터를 이용하여 그 위치를 공격할 수 있다. 어택 벡터는 AUT(206)가 안전하지 않은 기능을 수행하게 하도록 시도하는 것을 포함할 수 있다.
일례에서, 스캐너(202)는 AUT(206)로 하여금 안전하지 않은 기능을 수행하도록 요청한다. 실시간 모디파이어(204)는 안전하지 않은 기능 또는 그 기능의 부분이 호출될 수도 있다는 것을 검출할 수 있다. 이와 같이, 실시간 모디파이어(204)는 안전하지 않은 부분이 실행되는 것을 방지하기 위해 AUT(206)의 실행을 수정할 수 있다. 이러한 수정의 예는 도 3에 더욱 상세하게 나타내어져 있고 위에서 설명하였다. 또한, 전술한 바와 같이, 옵저버(208)는 안전하지 않은 부분에 대한 호출을 추적(track)하고, 시험 정보 및/또는 분석을 스캐너(202)에게 제공할 수 있다. 더욱이, 실시간 모디파이어(204)는 안전하지 않은 기능을 수행하지 않고서 그 부분으로부터의 응답을 에뮬레이트할 수 있다.
옵저버(208)는 AUT(206)의 시험을 용이하게 하기 위해 정보/분석을 스캐너(202)에 제공하도록 이용될 수 있다. 스캐너(202)는 서비스 요청 및 응답을 이용함으로써 옵저버(208)와 통신할 수 있다. 서비스 요청 및 응답은 예컨대 커스텀 헤더를 이용하여 구현될 수 있다.
몇몇 예에서, 실시간 모디파이어(204)는 또한 실행 동안 AUT(206)의 다른 특징을 수정하도록 이용될 수도 있다. 예컨대, 하나 이상의 기능 또는 프로그램 세그먼트(program segment)가 동적으로 컴파일되면, 디버깅을 위한 코드가 AUT(206)의 실행에 추가될 수 있다. 이와 같이, 온-더-플라이 컴파일러(on-the-fly compiler)는 디버그 정보로 코드를 컴파일할 수 있다. 이 접근법으로, 옵저버(208)는 실행된 코드에 대한 상세 정보에 대한 액세스를 가질 수 있다. 상세 정보는 스캐너(202)에 제공될 수 있다. 스캐너(202)는 AUT(206)의 시험에서 디버깅 정보를 사용할 수 있다.
도 3은 일례에 따른, 안전성에 기초하여 수정되는 피시험 어플리케이션의 동작의 예를 보여주는 블록도이다. 실시간 모디파이어(300)는 피시험 어플리케이션(302)을 실행할 수 있다. 어플리케이션은 스캐너와 같은 보안 시험 엔진에 의해 시험될 수 있다. AUT(302)는 통신하기 위해 보안 시험 엔진과 메시지를 주고받을 수 있다. 또한, AUT(302)는 통신을 통해 검증 시험(validation test)과 같은 시험을 제공할 수도 있다. 시험은 API를 통해 보안 시험 엔진에 제공될 수 있다.
시험 동안, AUT(302)의 코드가 실행될 수 있다. 기능 또는 기능의 부분이 실행될 때, 어떠한 결정 포인트에서, 실시간 모디파이어(300)는 기능의 다음 동작이 안전한지 아니면 안전하지 않은지를 판정하도록 동작할 수 있다. 전술한 바와 같이, 기능에 의해 호출되는 API를 모니터링하거나 및/또는 관리하기 위해 API 피호출 도구 또는 유사 툴(tool)이 이용될 수 있다.
어떠한 예에서, 코드가 실행되고, 동작이 안전한지 아니면 안전하지 않은지를 실시간 모디파이어(300)가 판정한다. 일례에서, 실시간 모디파이어(300)는 동작이 안전하지 않은 동작(304)인 것으로 판정한다. 동작이 안전하지 않기 때문에, 실시간 모디파이어(300)는 더 이상 전파(propagation)하지 않고 실행을 복귀하도록 변경한다. 몇몇 예에서, 실시간 모디파이어(300)는 또한 안전하지 않은 동작을 수행하지 않고 이 안전하지 않은 동작을 에뮬레이트하기 위해 실행될 코드를 삽입하거나 또는 안전하지 않은 동작을 에뮬레이트하기 위해 예상값(expected value)을 리턴할 수 있다. 또한, 실시간 모디파이어(300)는 안전하지 않은 동작이 수행될 것이었다는 정보를 갖는 리포트를 스캐너에게 제공할 수 있다. 또 다른 예에서, 동작은 안전한 동작(306)인 것으로 판정될 수 있다. 동작이 안전한 것으로 판정되기 때문에, 실시간 모디파이어(300)는 코드로 하여금 그 프로세싱으로 계속 전파하도록 할 수 있다. 이와 같이, API를 호출하는 경우에, 관련 안전 API(308)가 호출될 수 있다.
도 4는 일례에 따른, 실행의 안정성에 기초하여 피시험 어플리케이션의 실행을 수정하는 방법의 흐름도이다. 본 방법(400)의 실행이 아래에서는 컴퓨팅 시스템(100)을 참조하여 설명되지만, 본 방법(400)의 실행을 위한 다른 적합한 콤포넌트가 활용될 수 있다(예컨대, 컴퓨팅 디바이스(500)). 이에 부가하여, 본 방법(400)을 실행하기 위한 콤포넌트는 복수의 디바이스들 간에 분산되어 있을 수도 있다. 본 방법(400)은 스토리지 매체(520)와 같은 기기 판독 가능 스토리지 매체에 저장된 실행 가능 명령의 형태로 및/또는 전자 회로부의 형태로 구현될 수 있다.
단계 402에서, 서버(120)는 실시간 모디파이어(126)를 이용하여 AUT(124)를 호스팅할 수 있다. 서버(120)는 예컨대 네트워크를 통해 다른 디바이스 및/또는 프로그램과 통신할 수 있다. 일례에서, 보안 시험 모듈(128)은 AUT(124)와 통신하도록 이용될 수 있다.
보안 시험 모듈(128)은 AUT(124)에 대해 보안 시험을 수행하기 위해 컴퓨팅 디바이스(102)를 이용하여 통신할 수 있다. 이와 같이, 단계 404에서, 서버(120)는 보안 시험을 수행하기 위해 AUT(124)에 통신 방식으로 연결될 수 있는 컴퓨팅 디바이스(102)로부터 통신을 수신할 수 있다. 언급한 바와 같이, 보안 시험은 단위 시험(unit test), 침투 시험, 퍼지 시험, 취약점 시험, 소프트웨어 보안 시험, 웹사이트 보안 시험, 이들의 조합 등을 포함할 수 있다.
시험 동안, AUT(124)는 다양한 태스크를 수행하고, 보안 시험 모듈(128)로부터 통신을 수신하고, 보안 시험 모듈(128)에 응답할 수 있다. 일례에서, 태스크들의 실행은 실시간 모디파이어(126)가 안전하지 않은 것으로 판정할 수도 있는 태스크를 AUT(124)가 수행할 준비가 될 수도 있는 포인트를 야기할 수 있다. 이와 같이, 단계 406에서, 실시간 모디파이어(126)의 인지 모듈(130)은 AUT(124)에 의해 실행될 기능의 부분이 그 부분에 의해 야기되는 활동의 타입에 좌우되어 안전하지 않은 것으로 판정할 수 있다. 일례에서, 활동은 테스터(tester)에 의해 안전하지 않은 것으로 사전 플래그될(pre-flagged) 수 있다. 또 다른 예에서, 활동은 테스터, 또 다른 사람, 개발자 등에 의해 안전하지 않은 것으로 플래그되는 API의 세트에 기초하여 안전하지 않은 것으로 판정될 수 있다. 활동은 시험 외부의 엔티티와의 통신을 수반하거나, 데이터베이스의 직접 수정을 수반하거나, 이미 알려진 취약점을 포함하거나, 또는 원하지 않은 액션을 수행하기 때문에 안전하지 않은 것으로 고려될 수 있다. 일례의 액션은 데이터베이스를 오염시키거나, 리스토어(restore) 없이는 사용할 수 없는 테스트 베드(test bed)를 제공하거나, 텍스트 메시지 및/또는 스팸 이메일을 전송하는 것 등을 포함한다.
단계 408에서, 실시간 모디파이어(126)가 AUT(124)의 실행을 그 부분을 실행하지 않는 것으로 수정할 수 있다. 전술한 바와 같이, 수정은 그 부분을 실행하지 않고 즉각적으로 리턴하거나, 그 부분을 다른 코드로 교체하거나, 예상된 결과를 리턴하거나, 안전하지 않은 동작을 수행하지 않고 그 부분을 에뮬레이트하는 등을 포함할 수 있다. 이와 같이, 어떠한 시나리오에서, 실시간 모디파이어(126)는 보안 시험에 대한 응답을 제공하기 위해 그 부분의 하나의 기능 또는 복수의 기능을 에뮬레이트할 수 있다. 더욱이, 전술한 바와 같이, 서버는, 예컨대 옵저버를 이용하여, 그 부분에 의해 야기된 하나 이상의 취약점을 모니터링하거나 및/또는 보안 시험에 보고할 수 있다.
도 5는 일례에 따른, 안정성에 기초하여 보안 시험의 액션에 응답하여 피시험 어플리케이션을 수정할 수 있는 컴퓨팅 디바이스의 블록도이다. 컴퓨팅 디바이스(500)는 예컨대 프로세서(510)와, 실행될 코드의 부분이 안전한 것인지의 여부에 기초하여 피시험 어플리케이션의 실행을 수정하기 위한 명령(522, 524, 526)을 포함하는 기기 판독 가능 저장 매체(520)를 포함한다. 컴퓨팅 디바이스(500)는 예컨대 노트북 컴퓨터, 데스크탑 컴퓨터, 서버, 워크스테이션, 또는 임의의 다른 컴퓨팅 디바이스이어도 된다. 어떠한 예에서, 컴퓨팅 디바이스(500)는 서버(120)의 하나 이상의 특징을 구현하기 위해 이용될 수 있다.
프로세서(510)는 하나 이상의 중앙 처리 장치(CPU), 하나 이상의 반도체 기반 마이크로프로세서, 하나 이상의 그래픽 처리 장치(GPU), 기기 판독 가능 저장 매체(520)에 저장된 명령의 검색 및 실행에 적합한 기타 하드웨어 디바이스, 또는 이들의 조합이어도 된다. 예컨대, 프로세서(510)는 하나의 칩 상에 복수의 코어를 포함하거나, 복수의 칩에 걸쳐 복수의 코어를 포함하거나, 복수의 디바이스에 걸쳐 복수의 코어를 포함하거나(예컨대, 컴퓨팅 디바이스(500)가 복수의 노드 디바이스를 포함한다면), 또는 이들의 조합을 포함할 수 있다. 프로세서(510)는 예컨대 상기한 방법(400)에서와 같이 실행될 코드의 안정성에 대한 판정에 기초하여 AUT의 실행을 수정하는 것을 구현하기 위해 명령(522, 524, 526)을 페치(fetch)하고 디코드하고 실행할 수 있다. 명령을 검색하고 실행하는 것의 대안으로서 또는 명령을 검색하고 실행하는 것에 부가하여, 프로세서(510)는 명령(522, 524, 526)의 기능을 수행하기 위한 다수의 전자 부품을 포함하는 하나 이상의 집적회로(IC), 기타 제어 로직, 기타 전자 회로, 또는 이들의 조합을 포함할 수 있다.
기기 판독 가능 저장 매체(520)는 실행 가능 명령을 포함하고 있거나 저장하는 어떠한 전자적, 자기적, 광학적 또는 기타 물리적 저장 디바이스이어도 된다. 그러므로, 기기 판독 가능 저장 매체는 예컨대 랜덤 액세스 메모리(RAM), 전기적으로 소거 가능한 프로그래머블 판독 전용 메모리(EEPROM), 저장 디바이스, CD-ROM(Compact Disc Read Only Memory) 등이어도 된다. 이와 같이, 기기 판독 가능 저장 매체는 비일시적(non-transitory)일 수 있다. 여기에서 상세하게 설명한 바와 같이, 기기 판독 가능 저장 매체(520)는 상기한 방법(400)을 실시하기 위한 일련의 실행 가능 명령으로 인코딩될 수 있다.
프로세서(510)는 AUT를 호스팅하기 위한 명령을 실행할 수 있다. 몇몇 예에서, AUT는 디버깅/관찰 코드가 실행되도록 하기 위해 플래그 세트와 컴파일될 수 있다. 다른 예에서, AUT는 디버깅/관찰을 수행할 수 있는 런타임 환경에서 실행할 수 있다. 보안 시험, 예컨대 침투 시험 또는 스캔이 AUT에 대해 수행될 수 있다.
통신 명령(524)은 보안 시험과 통신하기 위해 이용될 수 있다. 이와 같이, 컴퓨팅 디바이스(500)는 보안 시험을 호스팅하는 컴퓨팅 디바이스로부터 통신을 수신할 수 있다. 이들 통신은 응답으로 AUT의 일부분(예컨대, 기능, API, 코드의 일부분 등)의 실행을 야기하도록 이용될 수 있다.
AUT의 실행 동안, 인지 명령(526)은 코드의 일부분이 안전한지의 여부를 판정하기 위해 실행될 수 있다. 인지 명령(526)은 프로세서(510)로 하여금 AUT에 의해 실행된 기능의 일부분이 안전하지 않은 것으로 예컨대 실시간 모디파이어에서 판정하도록 할 수 있다.
일례에서, 일부분이 안전하지 않다는 판정은 그 부분과 연관된 프로세스(예컨대, 파일 삭제, 외부 통신 등)의 타입에 좌우된다. 안전하지 않은 프로세스의 예는 데이터베이스 레코드의 삭제, 데이터베이스 레코드의 수정, 데이터베이스의 오염, 외부로 향하는 메시지의 전송, 및 컴퓨팅 디바이스(500)의 리소스의 소진 중의 하나 이상을 포함할 수 있다. 또 다른 예에서, 일부분이 안전하지 않다는 판정은 전술한 바와 같은 기능에 의해 호출된 API를 기반으로 할 수 있다.
수정 명령(522)은 안전하지 않은 것으로 판정된 부분을 실행하지 않도록 AUT의 실행을 실시간 모디파이어에 의해 수정하기 위해 실행될 수 있다. 또한, 몇몇 예에서, 실시간 모디파이어는 안전하지 않은 것으로 간주되는 기능의 부분을 수행하지 않고 기능을 에뮬레이트할 수 있다. 더욱이, 컴퓨팅 디바이스(500)는 코드의 안전하지 않은 부분과 연관될 수 있는 취약점을 발생하고 추적할 수 있다. 어떠한 시나리오에서, 컴퓨팅 디바이스(500)는 그 부분에 연관된 하나 이상의 취약점을 보안 시험에 보고할 수 있다.
전술한 접근법으로, 실시간 모디파이어는 원래의 어플리케이션 로직을 그대로 유지하면서 가해 코드(damaging code)를 실행되지 않도록 함으로써 AUT가 동적 보안 스캔 또는 기타 보안 시험의 과정에서 자신 및/또는 자신의 파트너에게 손상을 입히는 것을 방지한다. 또한, 이 접근법은 테스트 베드 외부의 세계와 시도되는 통신을 방지할 수 있다. 더욱이, 이 접근법은 환경을 그대로 유지함으로써 어플리케이션의 상태 및 환경의 추가의 수동 및/또는 자동 유지를 제거할 수 있다.

Claims (15)

  1. 컴퓨팅 시스템에 있어서,
    컴퓨팅 디바이스에 통식 방식으로 연결되는 실시간 모디파이어(real-time modifier)에서 실행되는 피시험 어플리케이션을 호스팅하는 서버를 포함하며,
    상기 컴퓨팅 디바이스는 상기 피시험 어플리케이션에 대한 보안 시험을 수행하며,
    상기 실시간 모디파이어는 상기 피시험 어플리케이션에 의해 실행될 기능이 안전하지 않은 것을 판정하며, 상기 실시간 모디파이어는 안전하지 않은 것으로 간주된 상기 기능의 부분이 실행되지 않도록 하는,
    컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 기능이 안전하지 않은지의 여부를 인지하기 위한 인지 모듈을 더 포함하는, 컴퓨팅 시스템.
  3. 제1항에 있어서,
    상기 기능은 상기 부분에 의해 수행될 프로세스의 타입에 기초하여 안전하지 않은 것으로 고려되는, 컴퓨팅 시스템.
  4. 제3항에 있어서,
    상기 프로세스의 타입은 데이터베이스 레코드의 삭제, 또 다른 데이터베이스 레코드의 수정, 데이터베이스의 오염, 외부로 향하는 메시지(outgoing message)의 전송, 및 서버의 리소스의 소진 중의 하나 이상을 수행하도록 구성되는, 컴퓨팅 시스템.
  5. 제1항에 있어서,
    상기 기능은 상기 기능에 의해 호출되는 어플리케이션 프로그래밍 인터페이스에 기초하여 안전하지 않은 것으로 고려되는, 컴퓨팅 시스템.
  6. 제1항에 있어서,
    상기 실시간 모디파이어는 안전하지 않은 것으로 간주되는 기능의 부분을 수행하지 않고 상기 기능을 에뮬레이트하는, 컴퓨팅 시스템.
  7. 제1항에 있어서,
    상기 실시간 모디파이어는 안전하지 않은 것으로 간주된 기능의 부분을 수행하지 않으며, 상기 실시간 모디파이어는 상기 부분이 실행되지 않게 하는, 컴퓨팅 시스템.
  8. 제1항에 있어서,
    상기 보안 시험은 침투 시험이며, 상기 실시간 모디파이어에 연관된 옵저버(observer)가 상기 부분에 연관된 취약점을 상기 침투 시험에 보고하는, 컴퓨팅 시스템.
  9. 명령을 포함하는 비일시적(non-transitory) 기기 판독 가능 저장 매체로서, 상기 명령이, 디바이스의 하나 이상의 프로세서에 의해 실행되는 경우에, 상기 디바이스로 하여금,
    피시험 어플리케이션에 대해 보안 시험을 수행하기 위해 실시간 모디파이어를 이용하여 호스팅된 피시험 어플리케이션에 통신 방식으로 연결된 컴퓨팅 디바이스로부터 통신을 수신하고,
    상기 피시험 어플리케이션에 의해 실행될 기능의 부분이 안전하지 않은 것을 상기 실시간 모디파이어가 판정하게 하고,
    상기 부분을 실행하지 않도록 상기 피시험 어플리케이션의 실행을 상기 실시간 모디파이어가 수정하게 하도록 하는,
    비일시적 기기 판독 가능 저장 매체.
  10. 제9항에 있어서,
    상기 하나 이상의 프로세서에 의해 실행되는 경우, 상기 디바이스로 하여금, 상기 부분에 연관된 프로세스의 타입에 기초하여 상기 부분이 안전하지 않은 것을 판정하도록 하는 명령을 더 포함하며,
    상기 프로세스의 타입은, 데이터베이스 레코드의 삭제, 또 다른 데이터베이스 레코드의 수정, 데이터베이스의 오염, 외부로 향하는 메시지(outgoing message)의 전송, 및 디바이스의 리소스의 소진 중의 하나 이상을 수행하도록 구성되는,
    비일시적 기기 판독 가능 저장 매체.
  11. 제9항에 있어서,
    상기 하나 이상의 프로세서에 의해 실행되는 경우, 상기 디바이스로 하여금, 상기 기능에 의해 호출된 어플리케이션 프로그래밍 인터페이스에 기초하여 상기 부분이 안정하지 않은 것을 판정하도록 하는 명령을 더 포함하며,
    상기 실시간 모디파이어는 안전하지 않은 것으로 간주되는 상기 기능의 부분을 수행하지 않고 상기 기능을 에뮬레이트하는,
    비일시적 기기 판독 가능 저장 매체.
  12. 제9항에 있어서,
    상기 하나 이상의 프로세서에 의해 실행되는 경우, 상기 디바이스로 하여금, 상기 부분과 연관된 취약점을 보안 시험에 보고하도록 하는 명령을 더 포함하며,
    상기 보안 시험은 침투 시험인,
    비일시적 기기 판독 가능 저장 매체.
  13. 실시간 모디파이어를 이용하는 피시험 어플리케이션을 서버 상에 호스팅하는 단계;
    상기 피시험 어플리케이션에 대해 보안 시험을 수행하기 위해 상기 피시험 어플리케이션에 통신 방식으로 연결된 컴퓨팅 디바이스로부터 통신을 수신하는 단계;
    상기 실시간 모디파이어에 의해, 상기 피시험 어플리케이션에 의해 실행될 기능의 부분이 안전하지 않은 것을 상기 부분에 의해 야기된 활동(activity)의 타입에 기초하여 판정하는 단계; 및
    상기 실시간 모디파이어에 의해, 상기 부분을 실행하지 않도록 상기 피시험 어플리케이션의 실행을 수정하는 단계
    를 포함하는 방법.
  14. 제13항에 있어서,
    상기 보안 시험에 대한 응답을 제공하기 위해 상기 부분의 기능을 에뮬레이트하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서,
    상기 부분에 의해 야기된 취약점을 상기 보안 시험에 보고하는 단계를 더 포함하는, 방법.
KR1020157009868A 2012-09-28 2012-09-28 어플리케이션 보안 시험 KR20150063439A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/057691 WO2014051597A1 (en) 2012-09-28 2012-09-28 Application security testing

Publications (1)

Publication Number Publication Date
KR20150063439A true KR20150063439A (ko) 2015-06-09

Family

ID=50388788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157009868A KR20150063439A (ko) 2012-09-28 2012-09-28 어플리케이션 보안 시험

Country Status (7)

Country Link
US (1) US9438617B2 (ko)
EP (1) EP2901346A4 (ko)
JP (1) JP2015535997A (ko)
KR (1) KR20150063439A (ko)
CN (1) CN104685477B (ko)
BR (1) BR112015006653A2 (ko)
WO (1) WO2014051597A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2877953A4 (en) 2012-07-25 2016-02-24 Hewlett Packard Development Co DETERMINATION OF APPLICATION WEAKNESSES
US10032659B2 (en) * 2012-12-28 2018-07-24 Sunedison Semiconductor Limited (Uen201334164H) Methods and systems for preventing unsafe operations
CN104134034B (zh) * 2013-06-13 2015-10-21 腾讯科技(深圳)有限公司 控制应用运行的方法和装置
EP3170115A4 (en) * 2014-07-18 2018-02-28 EntIT Software LLC Determining terms for security test
US10515220B2 (en) * 2014-09-25 2019-12-24 Micro Focus Llc Determine whether an appropriate defensive response was made by an application under test
EP3202090A4 (en) * 2014-09-29 2018-06-13 Hewlett-Packard Enterprise Development LP Detection of email-related vulnerabilities
CN107003976B (zh) * 2014-12-16 2021-05-07 微福斯有限责任公司 基于可准许活动规则确定可准许活动
US9619372B2 (en) * 2015-02-10 2017-04-11 Wipro Limited Method and system for hybrid testing
US9767291B2 (en) * 2015-10-06 2017-09-19 Netflix, Inc. Systems and methods for security and risk assessment and testing of applications
US10419401B2 (en) * 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
US9473523B1 (en) 2016-02-04 2016-10-18 International Business Machines Corporation Execution of test inputs with applications in computer security assessment
US10999308B2 (en) * 2017-01-30 2021-05-04 Xm Cyber Ltd. Setting-up penetration testing campaigns
US10592677B2 (en) * 2018-05-30 2020-03-17 Paypal, Inc. Systems and methods for patching vulnerabilities
US11200154B2 (en) * 2019-03-11 2021-12-14 International Business Machines Corporation Function modification for software application testing
CN113722717B (zh) * 2021-07-21 2024-04-05 中国科学院信息工程研究所 一种安全漏洞测试方法、装置、设备及可读存储介质

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983348A (en) 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
WO2001065330A2 (en) * 2000-03-03 2001-09-07 Sanctum Ltd. System for determining web application vulnerabilities
JP2002328896A (ja) * 2001-04-27 2002-11-15 Nippon Telegr & Teleph Corp <Ntt> 不正アクセス対処ルール自動設定装置
US20030056116A1 (en) * 2001-05-18 2003-03-20 Bunker Nelson Waldo Reporter
US7099663B2 (en) * 2001-05-31 2006-08-29 Qualcomm Inc. Safe application distribution and execution in a wireless environment
US20040123117A1 (en) * 2002-12-18 2004-06-24 Symantec Corporation Validation for behavior-blocking system
JP2005134995A (ja) * 2003-10-28 2005-05-26 Recruit Co Ltd セキュリティ管理システム及びセキュリティ管理方法ならびにセキュリティ管理プログラム
US7207065B2 (en) * 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software
JP2006018765A (ja) * 2004-07-05 2006-01-19 Infocom Corp ソフトウエアの一時的な修正方法およびプログラム
US8185877B1 (en) 2005-06-22 2012-05-22 Jpmorgan Chase Bank, N.A. System and method for testing applications
US20070107057A1 (en) * 2005-11-10 2007-05-10 Docomo Communications Laboratories Usa, Inc. Method and apparatus for detecting and preventing unsafe behavior of javascript programs
US7652749B2 (en) * 2006-02-14 2010-01-26 Asml Netherlands B.V. Software upgrades in a lithographic apparatus
US20070203973A1 (en) * 2006-02-28 2007-08-30 Microsoft Corporation Fuzzing Requests And Responses Using A Proxy
JP2007241906A (ja) 2006-03-11 2007-09-20 Hitachi Software Eng Co Ltd Webアプリケーション脆弱性動的検査方法およびシステム
US7814544B1 (en) * 2006-06-22 2010-10-12 Symantec Corporation API-profile guided unpacking
US20080162687A1 (en) * 2006-12-28 2008-07-03 David Alan Scott Data acquisition system and method
EP2132675B1 (en) 2007-03-06 2019-09-11 Help/Systems, LLC System and method for providing application penetration testing
US20100064178A1 (en) 2008-09-10 2010-03-11 Microsoft Corporation World-Readiness and Globalization Testing Assemblies
US8141158B2 (en) 2008-12-31 2012-03-20 International Business Machines Corporation Measuring coverage of application inputs for advanced web application security testing
CN101901184B (zh) * 2009-05-31 2012-09-19 西门子(中国)有限公司 检查应用程序漏洞的方法、装置和系统
CN101571829B (zh) * 2009-06-19 2011-06-15 北京航空航天大学 一种实时嵌入式软件自动化闭环测试方法
US9262306B2 (en) 2010-01-27 2016-02-16 Hewlett Packard Enterprise Development Lp Software application testing
US20110219449A1 (en) * 2010-03-04 2011-09-08 St Neitzel Michael Malware detection method, system and computer program product
JP5725529B2 (ja) * 2010-07-21 2015-05-27 日本電気株式会社 Web脆弱性補修システム、Web脆弱性補修方法、及びプログラム
NL2007180C2 (en) * 2011-07-26 2013-01-29 Security Matters B V Method and system for classifying a protocol message in a data communication network.
US9143530B2 (en) * 2011-10-11 2015-09-22 Citrix Systems, Inc. Secure container for protecting enterprise data on a mobile device
JP4927231B1 (ja) * 2011-12-22 2012-05-09 株式会社フォティーンフォティ技術研究所 プログラム、情報機器、及び不正アクセス検出方法
US10296409B2 (en) * 2012-05-15 2019-05-21 International Business Machines Corporation Forecasting workload transaction response time

Also Published As

Publication number Publication date
JP2015535997A (ja) 2015-12-17
EP2901346A4 (en) 2016-06-08
US9438617B2 (en) 2016-09-06
BR112015006653A2 (pt) 2017-07-04
CN104685477B (zh) 2018-01-19
CN104685477A (zh) 2015-06-03
EP2901346A1 (en) 2015-08-05
WO2014051597A1 (en) 2014-04-03
US20150264074A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
US9438617B2 (en) Application security testing
US8613080B2 (en) Assessment and analysis of software security flaws in virtual machines
EP2891100B1 (en) Security scan based on dynamic taint
US10587641B2 (en) Point-wise protection of application using runtime agent and dynamic security analysis
JP4629332B2 (ja) 状態参照モニタ
Curphey et al. Web application security assessment tools
US20150248558A1 (en) Application security testing
US20180075233A1 (en) Systems and methods for agent-based detection of hacking attempts
US9846781B2 (en) Unused parameters of application under test
US20190272371A1 (en) System and method of analysis of files for maliciousness and determining an action
KR20140026544A (ko) 자동화된 보안 테스팅
US11748487B2 (en) Detecting a potential security leak by a microservice
US9953169B2 (en) Modify execution of application under test so user is power user
US10546120B2 (en) System and method of forming a log in a virtual machine for conducting an antivirus scan of a file
Rathaus et al. Open source fuzzing tools
USH2196H1 (en) Method for intercepting specific system calls in a specific application from applications space for security
Jnena Modern Approach for WEB Applications Vulnerability Analysis
CN115292707A (zh) 基于动态类调用序列的可信度判断方法及装置
Alavi Application of Software Analysis in Detecting Vulnerabilities: Testing and Security Assessment
CN115292708A (zh) 基于字节码的执行权限分析方法及装置
Williams et al. Interactive vulnerability analysis enhancement results
Weissbacher Hardening Web Applications against CSV Attacks
Adams et al. Why good software engineering practices often do not produce secure software
Nandula A Survey paper on Security Testing
Avancini Security Testing of Web and Smartphone Applications

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application