WO2023229061A1 - Pdf 또는 hwp에서 javascript의 무해화를 위한 방법 및 장치 - Google Patents

Pdf 또는 hwp에서 javascript의 무해화를 위한 방법 및 장치 Download PDF

Info

Publication number
WO2023229061A1
WO2023229061A1 PCT/KR2022/007429 KR2022007429W WO2023229061A1 WO 2023229061 A1 WO2023229061 A1 WO 2023229061A1 KR 2022007429 W KR2022007429 W KR 2022007429W WO 2023229061 A1 WO2023229061 A1 WO 2023229061A1
Authority
WO
WIPO (PCT)
Prior art keywords
stream
server
entry
detoxification
value
Prior art date
Application number
PCT/KR2022/007429
Other languages
English (en)
French (fr)
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 PCT/KR2022/007429 priority Critical patent/WO2023229061A1/ko
Priority to KR1020227017736A priority patent/KR102468428B1/ko
Publication of WO2023229061A1 publication Critical patent/WO2023229061A1/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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

Definitions

  • This specification relates to a method and device for deactivating JavaScript in PDF and HWP documents.
  • Advanced Persistent Threat (APT) attacks involve attackers selecting a specific target and continuously utilizing various types of malicious code by applying advanced attack techniques to steal targeted information.
  • APT Advanced Persistent Threat
  • Non-PE Non-Portable Executable
  • the purpose of this specification is to propose a method for detoxifying JAVASCRIPT while maintaining the overall structure of PDF and HWP.
  • One aspect of the present specification is a method for a server to disarm a non-executable file, comprising: determining a document format of the non-executable file; Based on the document format being PDF, searching for a dictionary type by traversing the non-executable file based on basic elements; Checking whether the data type includes a JS entry; and comparing the value of the JS entry with an empty string and replacing the value of the JS entry with the empty string. may include.
  • the basic element is an Obj object
  • the data type may include a JavaScript action object.
  • confirming the first stream or the second stream to be deactivated; determining a compressed storage state of the first stream or the second stream; and comparing the first stream or the second stream with a default value and replacing the first stream or the second stream with the default value, based on the compressed storage state. may include.
  • the first stream may be a DefaultJScript stream
  • the second stream may be a JScriptVersion stream.
  • the first stream may include JavaScript code
  • the second stream may include version information of the JavaScript.
  • the default value may be a value corresponding to the first stream or the second stream of a new document having the HWP format.
  • the default value may have the same compressed storage state as the compressed storage state.
  • a server for disarming non-executable files comprising: a communication unit; a memory including a CDR engine for performing the detoxification; and a processor that functionally controls the communication unit and the memory, wherein the processor determines a document format of the non-executable file and creates basic elements based on the document format being PDF.
  • the non-executable file is traversed to search for a data type (dictionary type), it is checked whether the data type includes a JS entry, the value of the JS entry is compared with an empty string, and the empty string is used to determine the JS entry. The value of can be replaced.
  • JAVASCRIPT can be detoxified while maintaining the overall structure of PDF and HWP.
  • FIG. 1 is a diagram showing a server or client related to this specification.
  • Figure 2 is an example of abnormal input that can be applied to this specification.
  • Figure 3 illustrates a detoxification method to which the present disclosure can be applied.
  • Figure 4 illustrates a method for detoxifying a PDF file to which the present specification can be applied.
  • Figure 5 illustrates a method of detoxification of an HWP file to which this specification can be applied.
  • unit refers to a software or hardware component, and the “unit” performs certain roles. However, “wealth” is not limited to software or hardware.
  • the “copy” may be configured to reside on an addressable storage medium and may be configured to run on one or more processors.
  • part refers to software components, such as object-oriented software components, class components, and task components, processes, functions, properties, procedures, Includes subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables.
  • the functionality provided within the components and “parts” may be combined into smaller numbers of components and “parts” or may be further separated into additional components and “parts”.
  • unit may be implemented with a processor and memory.
  • processor should be interpreted broadly to include general purpose processors, central processing units (CPUs), microprocessors, digital signal processors (DSPs), controllers, microcontrollers, state machines, etc.
  • processor may refer to an application-specific integrated circuit (ASIC), programmable logic device (PLD), field programmable gate array (FPGA), etc.
  • ASIC application-specific integrated circuit
  • PLD programmable logic device
  • FPGA field programmable gate array
  • processor refers to a combination of processing devices, for example, a combination of a DSP and a microprocessor, a combination of a plurality of microprocessors, a combination of one or more microprocessors in combination with a DSP core, or any other such combination of configurations. It may also refer to
  • memory should be interpreted broadly to include any electronic component capable of storing electronic information.
  • the terms memory include random access memory (RAM), read-only memory (ROM), non-volatile random access memory (NVRAM), programmable read-only memory (PROM), erasable-programmable read-only memory (EPROM), electrical may refer to various types of processor-readable media, such as erasable PROM (EEPROM), flash memory, magnetic or optical data storage, registers, etc.
  • RAM random access memory
  • ROM read-only memory
  • NVRAM non-volatile random access memory
  • PROM programmable read-only memory
  • EPROM erasable-programmable read-only memory
  • electrical may refer to various types of processor-readable media, such as erasable PROM (EEPROM), flash memory, magnetic or optical data storage, registers, etc.
  • EEPROM erasable PROM
  • flash memory magnetic or optical data storage, registers, etc.
  • non-executable file refers to a file that does not execute on its own, as opposed to an executable file or executable file.
  • non-executable files may be document files such as PDF files, Hangul files, Word files, image files such as JPG files, video files, JavaScript files, HTML files, etc., but are not limited thereto.
  • FIG. 1 is a diagram showing a server or client related to this specification.
  • a server or cloud server or client may include a control unit 100 and a communication unit 130.
  • the control unit 100 may include a processor 110 and a memory 120.
  • the processor 110 may execute instructions stored in the memory 120.
  • the processor 110 can control the communication unit 130.
  • the processor 110 may control the operation of the server or client based on instructions stored in the memory 120.
  • a server or client may include one processor or may include multiple processors. When a server or client includes a plurality of processors, at least some of the plurality of processors may be located physically spaced apart from each other. Additionally, the server or client is not limited to this and may be implemented in various known ways.
  • the communication unit 130 may include one or more modules that enable wireless communication between a server or client and a wireless communication system, between a server or client and another server or client, or between a server or client and an external server. Additionally, the communication unit 110 may include one or more modules that connect servers or clients to one or more networks.
  • the control unit 100 may control at least some of the components of the server or client to run the application program stored in the memory 120. Furthermore, the control unit 100 can operate at least two of the components included in the server or client in combination with each other to run the application program.
  • the server may include a reversing engine or/and a CDR engine that provides a CDR service.
  • the reversing engine is an analysis/diagnosis engine that automates the reverse engineering process for malicious non-executable files.
  • a reversing engine can perform the following steps:
  • File analysis This is the step of analyzing the appearance of the non-executable file itself (e.g., properties, author, creation date, file type). Similar to a general anti-virus program, it is possible to diagnose maliciousness using only the information of the non-executable file itself. You can.
  • Static analysis This is a step to extract and analyze data in non-executable files to determine whether they are normal or malicious. Non-executable files are not executed, but internal data is extracted and compared and analyzed according to the file structure to diagnose maliciousness. there is. This can be suitable for macros, URL extraction analysis, etc.
  • Dynamic analysis This is a step to determine whether it is malicious by analyzing its behavior while executing and monitoring non-executable files. It is easy to detect malicious behavior using normal functions such as macros, hyperlinks, and DDE.
  • Debugging analysis This is the step of analyzing vulnerabilities, exploits, etc. by executing and debugging non-executable files. It detects vulnerabilities in the application using the body of the document, tables, fonts, pictures, etc., including macros, hyperlinks, and DDE. It is suitable for
  • the reversing engine may include a debugging engine that can be used for debugging analysis.
  • the debugging engine can diagnose vulnerabilities that occur in the document input, processing, and output stages by debugging the viewing process of non-executable files.
  • a vulnerability refers to taking advantage of errors, bugs, etc. that occur when an application receives unexpected values from the code (logic) developed by the application developer. Through the vulnerability, an attacker can cause denial of service due to abnormal termination, etc. It can perform malicious actions such as remote code execution.
  • Figure 2 is an example of abnormal input that can be applied to this specification.
  • an application program when an application program receives an abnormal value (for example, when the input value exceeds the normal range of 2) through a non-executable file, the execution flow is changed to an unintentional one by the developer, resulting in a vulnerability.
  • the debugging engine automatically debugs the document viewing process, sets breakpoints at specific points related to vulnerabilities, checks specific values related to input values, and determines whether the input value causes a vulnerability or not, thereby diagnosing whether it is malicious.
  • the debugging engine can identify non-executable files and start debugging by running an application to view them.
  • the debugging engine checks whether the module is the target of analysis, and if so, can set a breakpoint at the specified address.
  • a malicious non-executable file may terminate the application if certain conditions, such as the version of the application or the operating system environment, are not met, or may have branching points that branch to a flow in which no malicious action occurs.
  • the server is analyzed by an analyst in advance and breakpoints can be set at branch points that have this possibility.
  • the server can set conditions in relation to the branch point that can continue to run the application without terminating it or lead to a flow in which malicious actions can occur.
  • the server can detect vulnerabilities according to detection logic and then store the results in an analysis report.
  • the automated reversing engine included in the server automatically performs and analyzes the above-mentioned steps, and can diagnose and block malicious non-executable files through diagnostic algorithms researched and developed by analysts.
  • CDR Content Disarm and Reconstruction
  • the CDR service is a solution that creates a new file by disassembling non-executable files, removing malicious or unnecessary files, and keeping the content as identical as possible to the original.
  • CDR Contents Disarm and Reconstruction
  • the files subject to detoxification include all non-executable files (e.g. For example, Word, Excel, PowerPoint, Hangul, PDF) can be targeted, and the content targeted for detoxification can be active content (eg, macros, hyperlinks, OLE objects, etc.).
  • Figure 3 illustrates a detoxification method to which the present disclosure can be applied.
  • the server can determine the document format of the non-executable file (S3010). For example, in order to determine the document format of a non-executable file, the server can open the non-executable file and check the signature type in the binary code to determine the format of the document.
  • each non-executable file has its own unique format, and the basic content of the format is the file signature.
  • File signatures can also be used to distinguish file formats by specifying the specific bytes located at the beginning of the file.
  • an HWP file may have a signature of “D0 CF 11 E0 A1 B1 1A E1”, and a PDF file may have a signature of “25 50 44 46”.
  • the server determines that the format of the non-executable file is a PDF file, it can perform detoxification of the PDF file (S3020), and if it determines that the format of the non-executable file is a HWP file, it can perform detoxification of the HWP file (S3030) ).
  • the JavaScript detoxification method is used as an example, but it can also be similarly applied to the detoxification of an object-based script language (Macro) that has a similar form.
  • Mocro object-based script language
  • HWP has a Macro feature. This Macro can be implemented in JavaScript language.
  • Figure 4 illustrates a method for detoxifying a PDF file to which the present specification can be applied.
  • the server determines that the format of the non-executable file is a PDF file
  • a method for detoxifying the PDF file is illustrated.
  • the server searches for the dictionary type by traversing the basic elements of the PDF file (S4010). For example, the server can traverse obj as the basic element of a PDF file. Depending on the value set in obj, the actual role and function of the element can be defined.
  • objs can have a dictionary type.
  • a dictionary type is one of eight basic data types (Boolean values, Integer and Real numbers, Strings, Names, Arrays, Dictionaries, Streams, and the null object) and consists of a ⁇ key ⁇ - ⁇ value ⁇ pair. It can be included as a single entry with a corresponding relationship.
  • the server checks whether the searched data type includes a JS entry (S4020).
  • a data type can contain a JavaScript action object. For example, if the server calls in the order Obj ⁇ Array ⁇ Dictionary ⁇ Action, the server may determine that the obj is a simple JavaScript Action.
  • Table 1 below is an example of a JavaScript action object.
  • the ⁇ >> format means a dictionary type, which can consist of three entries: JS, Next, and S.
  • the server compares the value of the JS entry with an empty string and returns it to an empty string. Replace (S4030). For example, if the value of a JS entry is not an empty string, the server can replace it with an empty string.
  • Table 2 illustrates the result of replacing the JS entry value in Table 1 with an empty string.
  • the server removes essential elements, the Next Action associated with the JavaScript Action may not be performed. Therefore, by replacing the JS entry value with an empty string, the server can detoxify only the target for removal without affecting other functions. Through this, the server maintains the overall structure of the document as is, and the JavaScript Detoxification can only be done for changed content.
  • Figure 5 illustrates a method of detoxification of an HWP file to which this specification can be applied.
  • the server determines that the format of the non-executable file is an HWP file
  • a method for detoxifying the HWP file is illustrated.
  • Table 3 illustrates the structure of a typical HWP file.
  • the DefaultJScript stream is a JavaScript detoxification target in this specification and may be a file in which JavaScript code is stored.
  • the JScriptVersion stream is a JavaScript detoxification target in this specification and may be a file in which JavaScript Version information is stored.
  • These streams can be stored compressed (e.g. zlib style) to reduce file size.
  • the server checks the first stream and/or the second stream to be detoxified in the HWP file (S5010).
  • the first stream may be the DefaultJScript stream and the second stream may be the JScriptVersion stream.
  • the server determines the compressed storage state of the first stream and/or the second stream (S5020). For example, the server may extract header information of the first stream and/or the second stream and determine whether the first stream or the second stream is compressed.
  • the server compares the first stream and/or the second stream with the default value, and replaces the first stream and/or the second stream with the default value, based on the compressed storage state of the first stream and/or the second stream (S5030 ).
  • the default value may mean the value corresponding to the corresponding stream of the HWP new document.
  • the default value may be the compressed first stream and/or second stream value of the HWP new document.
  • the default value may be the uncompressed first stream and/or second stream value of the HWP new document.
  • the default value may have the same compressed storage state as that of the first stream and/or the second stream.
  • Table 4 below illustrates default values that can be applied in this specification.
  • the server compares the first stream and/or the second stream with the default value, and if there is a difference, the first stream and/or the second stream may be replaced with the default value. Through this, the server unconditionally selects the stream to be detoxified. Rather than removing it or making it an empty file, it can be deactivated based on the default value. This has the effect of lowering the possibility of errors that may occur in the original document.
  • the server can compare the decommissioning target to a default value, such as an empty string, to determine whether JavaScript code was actually inserted and edited. Therefore, it is easy for the server to determine whether there is malicious code.
  • Computer-readable media includes all types of recording devices that store data that can be read by a computer system. Examples of computer-readable media include HDD (Hard Disk Drive), SSD (Solid State Disk), SDD (Silicon Disk Drive), ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, etc. This also includes those implemented in the form of carrier waves (e.g., transmission via the Internet). Accordingly, the above detailed description should not be construed as restrictive in all respects and should be considered illustrative. The scope of this specification should be determined by reasonable interpretation of the appended claims, and all changes within the equivalent scope of this specification are included in the scope of this specification.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 명세서는 서버가 비실행 파일을 무해화(Disarming) 시키는 방법에 있어서, 상기 비실행 파일의 문서 포맷(format)을 판단하는 단계; 상기 문서 포맷이 PDF인 것에 근거하여, 기본 요소(element)들을 기준으로 상기 비실행 파일을 순회하여 자료형(dictionary type)을 탐색하는 단계; 상기 자료형에 JS 엔트리가 포함되어 있는 지를 검사하는 단계; 및 상기 JS 엔트리의 값을 빈 문자열과 비교하여, 상기 빈 문자열로 상기 JS 엔트리의 값을 대체하는 단계; 를 포함할 수 있다.

Description

PDF 또는 HWP에서 JAVASCRIPT의 무해화를 위한 방법 및 장치
본 명세서는 PDF 및 HWP 문서에서 JavaScript의 무해화를 위한 방법 및 장치에 관한 것이다.
지능형 지속 위협(APT: Advanced Persistent Threat) 공격은 공격자가 특정 타깃을 정하고 목표한 정보를 빼내기 위해 고도의 공격기법을 적용하여 지속적으로 다양한 형태의 악성 코드를 활용한다.
특히 APT 공격은 초기 침입단계에서 탐지하지 못하는 경우가 많으며, 주로 악성 코드를 포함하는 비실행((Non-PE: Non-Portable Executable) 파일을 이용하는 경우가 많다.
비실행 파일의 악성 여부 검사 방법으로, 시그니처 기반의 검사 방법이 있다. 이것은 비실행 파일이 악성 코드의 시그니처를 포함하는지를 검사하는 방법이다. 그런데 대부분의 악성 비실행 파일은 악성 코드를 자바스크립트나 매크로스크립트와 같은 스크립트에 포함시키거나 경우에 따라서는 스크립트를 인코딩하여 이러한 진단을 회피하는데, 비실행 파일 자체로는 그 안에 어떤 스크립트가 존재하는지 알기 어렵다. 따라서 기존의 시그니처 기반 검사 방법으로는 비실행 파일의 악성 여부를 제대로 검사하는 것이 거의 불가능하다.
본 명세서의 목적은, PDF 및 HWP의 전체 구조를 유지하면서 JAVASCRIPT를 무해화 하기 위한 방법을 제안한다.
본 명세서가 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 이하의 명세서의 상세한 설명으로부터 본 명세서가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 명세서의 일 양상은, 서버가 비실행 파일을 무해화(Disarming) 시키는 방법에 있어서, 상기 비실행 파일의 문서 포맷(format)을 판단하는 단계; 상기 문서 포맷이 PDF인 것에 근거하여, 기본 요소(element)들을 기준으로 상기 비실행 파일을 순회하여 자료형(dictionary type)을 탐색하는 단계; 상기 자료형에 JS 엔트리가 포함되어 있는 지를 검사하는 단계; 및 상기 JS 엔트리의 값을 빈 문자열과 비교하여, 상기 빈 문자열로 상기 JS 엔트리의 값을 대체하는 단계; 를 포함할 수 있다.
또한, 상기 기본 요소는 Obj 개체이며, 상기 자료형은 JavaScript 액션(action) 개체를 포함할 수 있다.
또한, 상기 문서 포맷이 HWP인 것에 근거하여, 상기 무해화의 대상이 되는 제1 스트림 또는 제2 스트림을 확인하는 단계; 상기 제1 스트림 또는 상기 제2 스트림의 압축 저장 상태를 판단하는 단계; 및 상기 압축 저장 상태에 근거하여, 상기 제1 스트림 또는 상기 제2 스트림을 기본값과 비교하고, 상기 제1 스트림 또는 상기 제2 스트림을 상기 기본값으로 대체하는 단계; 를 포함할 수 있다.
또한, 상기 제1 스트림은 DefaultJScript 스트림이며, 상기 제2 스트림은 JScriptVersion 스트림일 수 있다.
또한, 상기 제1 스트림은 JavaScript 코드를 포함하고, 상기 제2 스트림은 상기 JavaScript의 버전(version) 정보를 포함할 수 있다.
또한, 상기 기본값은 상기 HWP 포맷을 갖는 새 문서의 상기 제1 스트림 또는 상기 제2 스트림에 대응되는 값일 수 있다.
또한, 상기 기본값은 상기 압축 저장 상태와 동일한 압축 저장 상태를 갖을 수 있다.
본 명세서의 또 다른 일 양상은, 비실행 파일을 무해화(Disarming) 시키는 서버에 있어서, 통신부; 상기 무해화를 수행하기 위한 CDR 엔진이 포함된 메모리; 및 상기 통신부 및 상기 메모리를 기능적으로 제어하는 프로세서;를 포함하고, 상기 프로세서는 상기 비실행 파일의 문서 포맷(format)을 판단하고, 상기 문서 포맷이 PDF인 것에 근거하여, 기본 요소(element)들을 기준으로 상기 비실행 파일을 순회하여 자료형(dictionary type)을 탐색하며, 상기 자료형에 JS 엔트리가 포함되어 있는 지를 검사하고, 상기 JS 엔트리의 값을 빈 문자열과 비교하여, 상기 빈 문자열로 상기 JS 엔트리의 값을 대체할 수 있다.
본 명세서의 실시예에 따르면, PDF 및 HWP의 전체 구조를 유지하면서 JAVASCRIPT를 무해화를 수행할 수 있다.
본 명세서에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 명세서가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 명세서와 관련된 서버 또는 클라이언트를 나타내는 도면이다.
도 2는 본 명세서에 적용될 수 있는 비정상 입력의 예시이다.
도 3은 본 명세서가 적용될 수 있는 무해화 방법을 예시한다.
도 4는 본 명세서가 적용될 수 있는 PDF 파일의 무해화 방법을 예시한다.
도 5는 본 명세서가 적용될 수 있는 HWP 파일의 무해화 방법을 예시한다.
본 명세서에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 명세서에 대한 실시예를 제공하고, 상세한 설명과 함께 본 명세서의 기술적 특징을 설명한다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 또한, 본 명세서에 개시된 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 실시예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 실시예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 명세서에 개시된 기술적 사상이 제한되지 않으며, 본 명세서의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 명세서에서, "포함한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 명세서에서 사용되는 "부"라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, "부"는 어떤 역할들을 수행한다. 그렇지만 "부"는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부"는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부"들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부"들로 결합되거나 추가적인 구성요소들과 "부"들로 더 분리될 수 있다.
또한, 본 명세서의 일 실시예에 따르면 "부"는 프로세서 및 메모리로 구현될 수 있다. 용어 "프로세서"는 범용 프로세서, 중앙 처리 장치 (CPU), 마이크로프로세서, 디지털 신호 프로세서 (DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서는, "프로세서"는 주문형 반도체 (ASIC), 프로그램가능 로직 디바이스 (PLD), 필드 프로그램가능 게이트 어레이 (FPGA) 등을 지칭할 수도 있다. 용어 "프로세서"는, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다.
용어 "메모리"는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. 용어 메모리는 임의 액세스 메모리 (RAM), 판독-전용 메모리 (ROM), 비-휘발성 임의 액세스 메모리 (NVRAM), 프로그램가능 판독-전용 메모리 (PROM), 소거-프로그램가능 판독 전용 메모리 (EPROM), 전기적으로 소거가능 PROM (EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 명세서에서 사용되는 "비실행 파일"이란 실행 파일 또는 실행 가능한 파일과 반대되는 개념으로서 자체적으로 실행되지 않는 파일을 의미한다. 예를 들어, 비실행 파일은 PDF 파일, 한글 파일, 워드 파일과 같은 문서 파일, JPG 파일과 같은 이미지 파일, 동영상 파일, 자바 스크립트 파일, HTML 파일 등이 될 수 있으나, 이에 한정되지 않는다.
아래에서는 첨부한 도면을 참고하여 실시예에 대하여 본 명세서가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그리고 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분들은 생략될 수 있다.
도 1은 본 명세서와 관련된 서버 또는 클라이언트를 나타내는 도면이다.
본 명세서에서 서버(또는 클라우드 서버) 또는 클라이언트는 제어부(100) 및 통신부(130)를 포함할 수 있다. 제어부(100)는 프로세서(110) 및 메모리(120)를 포함할 수 있다. 프로세서(110)는 메모리(120)에 저장된 명령어들을 수행할 수 있다. 프로세서(110)는 통신부(130)를 제어할 수 있다.
프로세서(110)는 메모리(120)에 저장된 명령어에 기초하여 서버 또는 클라이언트의 동작을 제어할 수 있다. 서버 또는 클라이언트는 하나의 프로세서를 포함할 수 있고, 복수의 프로세서를 포함할 수 있다. 서버 또는 클라이언트가 복수의 프로세서를 포함하는 경우, 복수의 프로세서 중 적어도 일부는 물리적으로 이격된 거리에 위치할 수 있다. 또한, 서버 또는 클라이언트는 이에 한정되지 않고 알려진 다양한 방식으로 구현될 수 있다.
통신부(130)는, 서버 또는 클라이언트와 무선 통신 시스템 사이, 서버 또는 클라이언트와 다른 서버 또는 클라이언트 사이, 또는 서버 또는 클라이언트와 외부서버 사이의 무선 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다. 또한, 통신부(110)는, 서버 또는 클라이언트를 하나 이상의 네트워크에 연결하는 하나 이상의 모듈을 포함할 수 있다.
제어부(100)는 메모리(120)에 저장된 응용 프로그램을 구동하기 위하여, 서버 또는 클라이언트의 구성요소들 중 적어도 일부를 제어할 수 있다. 나아가, 제어부(100)는 상기 응용 프로그램의 구동을 위하여, 서버 또는 클라이언트에 포함된 구성요소들 중 적어도 둘 이상을 서로 조합하여 동작 시킬 수 있다.
본 명세서에서 서버는 리버싱 엔진 또는/및 CDR 서비스를 제공하는 CDR 엔진을 포함할 수 있다.
리버싱(Reversing) 엔진
리버싱 엔진이란, 악성 비실행 파일에 대한 리버스 엔지니어링(리버싱) 과정을 자동화 한 분석/진단 엔진이다.
예를 들어, 리버싱 엔진은 다음의 단계를 수행할 수 있다.
1.파일 분석: 비실행 파일 자체의 외관(예를 들어, 속성, 작성자, 작성 날짜, 파일 타입)을 분석하는 단계로서, 일반 백신 프로그램과 유사하게 비실행 파일 자체의 정보만으로 악성여부를 진단할 수 있다.
2.정적 분석: 비실행 파일 내의 데이터를 추출, 분석해서 정상, 악성 여부를 판별하는 단계로서, 비실행 파일은 실행하지 않고 파일 구조에 맞게 내부 데이터를 추출하여 비교 분석하여 악성여부를 진단할 수 있다. 이는 매크로, URL 추출 분석 등에 적합할 수 있다.
3.동적 분석: 비실행 파일을 실행하고 모니터링하면서 행위를 분석하여 악성 여부를 판별하는 단계로서, 매크로, 하이퍼링크, DDE 등 정상기능을 이용한 악성 행위를 탐지하기에 용이하다.
4.디버깅 분석: 비실행 파일을 실행하고 디버깅하여 취약점, 익스플로잇 등을 분석하는 단계로서, 매크로, 하이퍼링크, DDE를 포함하여 문서 내 본문, 표, 폰트, 그림 등을 이용한 응용프로그램의 취약점을 탐지하기에 적합하다.
리버싱 엔진은 디버깅 분석에 사용될 수 있는 디버깅 엔진을 포함할 수 있다. 디버깅 엔진은 비실행 파일의 열람 과정을 디버깅하여 문서 입력, 처리, 출력단계에서 발생하는 취약점을 진단할 수 있다. 여기서 취약점이란, 응용프로그램이 응용프로그램의 개발자가 개발한 코드(로직)에서 예상하지 못한 값을 입력 받았을 때, 발생하는 오류, 버그 등을 이용하는 것으로서, 공격자는 취약점을 통해 비정상 종료로 인한 서비스 거부, 원격 코드 실행 등의 악성 행위를 실행할 수 있다.
도 2는 본 명세서에 적용될 수 있는 비정상 입력의 예시이다.
도 2를 참조하면, 응용프로그램은 비실행 파일을 통해, 비정상적인 값(예를 들어, 입력값이 정상범위인 2를 초과하는 경우)을 입력 받는 경우, 개발자가 의도하지 않은 실행흐름으로 변경되어 취약점이 동작될 수 있다. 디버깅 엔진은 문서 열람 과정을 자동 디버깅하여 취약점과 관련된 특정 지점에 브레이크 포인트를 설정하고 입력값과 관련된 특정값을 확인하여 입력값이 취약점을 일으키는 값인지 아닌지 판별하여 악성 여부를 진단할 수 있다.
보다 자세하게, 디버깅 엔진은 비실행 파일을 확인하고 이를 열람하기 위한 응용프로그램을 실행하여 디버깅을 시작할 수 있다. 비실행 파일을 열람하는 과정에서 모듈이 로드되면, 디버깅 엔진은 해당 모듈이 분석 대상 모듈인지 확인하고, 분석 대상이라면 지정된 주소에 브레이크 포인트를 설정할 수 있다.
예를 들어, 악성 비실행 파일은 응용프로그램의 버전이나 운영체제 환경 등의 특정 조건이 만족하지 않으면 응용프로그램을 종료하거나 아무런 악성 행위가 발생하지 않는 흐름으로 분기하는 분기 지점들을 가질 수 있다. 서버는 사전에 분석가에 의해 분석되어 이러한 가능성을 가지는 분기 지점에 브레이크 포인트를 설정할 수 있다.
또한, 서버는 해당 분기 지점과 연관되어, 응용프로그램을 종료하지 않고 계속 실행하거나 악성 행위가 발생할 수 있는 흐름으로 유도할 수 있는 조건들을 설정할 수 있다.
응용프로그램의 프로세스 실행 중 해당 브레이크 포인트 지점에서 프로세스가 멈춘 경우, 서버는 탐지 로직에 따라 취약점 여부를 탐지한 후, 결과를 분석 리포트에 저장하는 단계를 수행할 수 있다.
서버에 포함된 자동화 리버싱 엔진은 전술한 단계들을 자동으로 수행하면서 분석하여 분석가가 연구, 개발한 진단 알고리즘을 통해, 악성 비실행 파일을 진단하고 차단할 수 있다.
CDR(Contents Disarm and Reconstruction)
CDR 서비스는 비실행 파일을 분해해 악성파일 혹은 불필요한 파일을 제거하고 콘텐츠는 원본과 최대한 동일하게 하여, 새로운 파일을 만드는 솔루션이다.
즉, Contents Disarm and Reconstruction(CDR)은 문서 내의 컨텐츠를 무해화(Disarm)하고 재조합(Reconstruction)하여 안전한 문서를 만들어 고객에게 제공하는 서비스를 의미하며, 무해화 대상 파일은 비실행 파일 일체(예를 들어, 워드, 엑셀, 파워포인트, 한글, PDF)를 대상으로 할 수 있으며, 무해화 대상 컨텐츠는 액티브 컨텐츠(예를 들어, 매크로, 하이퍼링크, OLE 객체 등)일 수 있다.
도 3는 본 명세서가 적용될 수 있는 무해화 방법을 예시한다.
도 3을 참조하면, 서버는 비실행 파일의 문서 포맷을 판단할 수 있다(S3010). 예를 들어, 서버는 비실행 파일의 문서 포맷을 판단하기 위해, 비실행 파일을 열고 바이너리 코드 상의 식별(Signature) 타입을 확인하여, 문서의 포맷이 무엇인지 확인할 수 있다.
예를 들어, 비실행 파일들은 각각 고유한 포맷을 가지고 있는데 포맷의 기본이 되는 내용이 파일 시그니처(File Signature)이다. 파일 시그니처는 파일의 가장 처음에 위치하는 특정 바이트들도 파일 포맷을 구분하기 위해 사용될 수 있다.
예를 들어, HWP 파일은 “D0 CF 11 E0 A1 B1 1A E1″의 시그니처를 갖을 수 있고, PDF 파일은 “25 50 44 46”의 시그니처를 갖을 수 있다.
서버는 비실행 파일의 포맷을 PDF 파일로 판단한 경우, PDF 파일의 무해화를 수행하고(S3020), 비실행 파일의 포맷을 HWP 파일로 판단한 경우, HWP 파일의 무해화를 수행할 수 있다(S3030).
본 명세서에서는 JavaScript 무해화 방법을 예시로 하고 있으나, 이와 유사한 형태를 갖는 객체 기반의 스크립트 언어(Macro)의 무해화에도 유사하게 적용될 수 있다. 예를 들어, HWP에는 Macro 기능이 있으며. 이 Macro가 JavaScript 언어로 구현될 수 있다.
도 4는 본 명세서가 적용될 수 있는 PDF 파일의 무해화 방법을 예시한다.
도 4를 참조하면, 서버가 비실행 파일의 포맷을 PDF 파일로 판단한 경우, PDF 파일의 무해화 방법을 예시한다.
서버는 PDF 파일의 기본 요소(element)들을 기준으로 순회하여 자료형(dictionary type)을 탐색한다(S4010). 예를 들어, 서버는 PDF 파일의 기본 요소로서 obj를 기준으로 순회할 수 있다. obj에 설정된 값에 따라, 당해 요소의 실제 역할과 기능이 정의될 수 있다.
만일, 각 페이지를 기준으로 순회하여 페이지 내부의 요소를 확인하는 일반적인 방법의 경우, 실제 문서에서는 Action obj가 자기 자신을 순환 참조하는 등, 많은 예외가 존재할 수 있으므로, 예외 처리가 누락될 위험이 있다.
예를 들어, PDF는 indirect obj를 참조하는 일이 빈번하기 때문에, obj 기준으로 순회하는 것이 시간복잡도 측면에서도 안정적이다.
또한, 하나의 obj를 여러 페이지에서 각각 참조할 수 있기 때문에, 중복 탐색의 문제도 고려해야 한다. Obj를 기준으로 순회하는 방식은 일정한 문서의 모든 obj를 순회할 수 있으므로, 한 번의 순회로 모든 obj에 대한 탐색을 보장할 수 있다.
이러한 obj는 dictionary type을 갖을 수 있다. 예를 들어, dictionary type은 8가지 기본 데이터 형식(Boolean values, Integer and Real numbers, Strings, Names, Arrays, Dictionaries, Streams, and the null object) 중 하나로서, {key}-{value} 한 쌍의 대응관계를 갖는 하나의 엔트리로 포함할 수 있다.
서버는 탐색된 자료형에 JS entry가 포함되어 있는 지 검사한다(S4020).
예를 들어, 자료형은 JavaScript 액션 개체를 포함할 수 있다. 예를 들어, 서버는 Obj → Array → Dictionary → Action 순서로 호출하는 경우, 해당 obj는 단순한 형태의 JavaScript Action 이라고 판단할 수 있습니다.
다음의 표 1은 JavaScript 액션 개체의 예시이다.
o62 0 obj<< /JS (app.alert("JS TEST");) /Next 63 0 R /S/JavaScript >>endobj
표 1을 참조하면, << >> 형식은 dictionary type을 의미하며, 이는 JS, Next, S 라는 세 가지 엔트리로 구성될 수 있다.서버는 JS entry의 값을 빈 문자열과 비교하여, 빈 문자열로 대체한다(S4030). 예를 들어, 서버는 JS entry의 값이 빈 문자열이 아니라면, 빈 문자열로 이를 대체할 수 있다.
다음의 표 2는 표 1에서 JS entry 값이 빈 문자열로 대체된 결과를 예시한다.
o62 0 obj<< /JS () /Next 63 0 R /S/JavaScript >>endobj
만일, 서버가 필수 요소를 제거하는 경우, JavaScript Action과 연결된 Next Action 동작이 수행되지 않을 수 있다. 따라서, 서버는 JS entry 값을 빈 문자열로 대체하여, 다른 기능에 영향을 미치지 않고, 정확히 제거대상에 대해서만 무해화를 진행할 수 있다.이를 통해, 서버는 문서의 전체 구조를 그대로 유지하며, JavaScript의 변경된 내용에 대해서만 무해화를 진행할 수 있다.
도 5는 본 명세서가 적용될 수 있는 HWP 파일의 무해화 방법을 예시한다.
도 5를 참조하면, 서버가 비실행 파일의 포맷을 HWP 파일로 판단한 경우, HWP 파일의 무해화 방법을 예시한다.
HWP 파일을 비롯한 CFB 계열의 파일에 대해 압축을 해제하면, 디렉토리와 파일 구조를 확인할 수 있습니다. 이 때 디렉토리 형태를 스토리지(storage), 파일 형태를 스트림(stream)이라고 한다.
다음의 표 3은 일반적인 HWP 파일의 구조를 예시한다.
Figure PCTKR2022007429-appb-img-000001
DefaultJScript 스트림은 본 명세서에서 JavaScript 무해화 대상으로서, JavaScript 코드가 저장된 파일일 수 있다.
JScriptVersion 스트림
JScriptVersion 스트림은 본 명세서에서 JavaScript 무해화 대상으로서, JavaScript Version 정보가 저장된 파일일 수 있다.
이러한 스트림들은 파일 크기를 줄이기 위해 압축 저장(예를 들어, zlib 방식)될 수 있다.
서버는 HWP 파일에서 무해화 대상인 제1 스트림 및/또는 제2 스트림을 확인한다(S5010). 예를 들어, 제1 스트림은 DefaultJScript 스트림, 제2 스트림은 JScriptVersion 스트림 일 수 있다.
서버는 제1 스트림 및/또는 제2 스트림이 압축 저장 상태를 판단한다(S5020). 예를 들어, 서버는 제1 스트림 및/또는 제2 스트림의 헤더(header) 정보를 추출하여, 제1 스트림 또는 제2 스트림이 압축되어 있는지 여부를 판단할 수 있다.
서버는 제1 스트림 및/또는 제2 스트림의 압축 저장 상태에 근거하여, 제1 스트림 및/또는 제2 스트림을 기본값과 비교하고, 제1 스트림 및/또는 제2 스트림을 기본값으로 대체한다(S5030). 예를 들어, 기본값은 HWP 새문서의 해당 스트림에 대응되는 값을 의미할 수 있다.
보다 자세하게, 제1 스트림 및/또는 제2 스트림이 압축 저장된 상태인 경우, 기본값은 HWP 새문서의 압축된 제1 스트림 및/또는 제2 스트림 값일 수 있다.
만일, 제1 스트림 및/또는 제2 스트림이 압축 저장되지 않은 상태인 경우, 기본값은 HWP 새문서의 압축되지 않은 제1 스트림 및/또는 제2 스트림 값일 수 있다.
즉, 기본값은 제1 스트림 및/또는 제2 스트림의 압축 저장 상태와 동일한 압축 저장 상태를 갖을 수 있다.
다음의 표 4는 본 명세서에 적용될 수 있는 기본값들을 예시한다.
일반 JScriptVersion기본값 offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F00000000 01 00 00 00 00 00 00 00
일반 DefaultVersion기본값 Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F00000000 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000000010 FF FF FF FF
압축 JScriptVersion기본값 Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F00000000 63 64 80 00 00 F7 DF 99 A9 08 00 00 00
압축 DefaultVersion기본값 Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F00000000 63 60 40 05 FF 81 00 00 6E BB 6E D1 14 00 00 00
서버는 제1 스트림 및/또는 제2 스트림과 기본값을 비교하여, 차이가 있는 경우, 기본값으로 제1 스트림 및/또는 제2 스트림을 대체할 수 있다.이를 통해, 서버는 무조건 무해화 대상 스트림을 제거하거나 빈 파일로 만드는 것이 아니라, 기본값을 기준으로 무해화 동작할 수 있다. 이는 원본 문서에서 발생할 수 있는 오류의 가능성을 낮춰주는 효과가 있다.
또한, 서버는 무해화 대상을 빈 문자열과 같은 기본값과 비교하여, JavaScript 코드가 실제로 삽입 및 편집되었는지를 판단할 수 있다. 따라서, 서버는 악성 코드 여부를 판단하기 용이하다.
전술한 본 명세서는, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터 시스템에 의하여 읽혀 질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 명세서의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 명세서의 등가적 범위 내에서의 모든 변경은 본 명세서의 범위에 포함된다.
또한, 이상에서 서비스 및 실시 예들을 중심으로 설명하였으나 이는 단지 예시일 뿐 본 명세서를 한정하는 것이 아니며, 본 명세서가 속하는 분야의 통상의 지식을 가진 자라면 본 서비스 및 실시 예의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시 예들에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부한 청구 범위에서 규정하는 본 명세서의 범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (8)

  1. 서버가 비실행 파일을 무해화(Disarming) 시키는 방법에 있어서,
    상기 비실행 파일의 문서 포맷(format)을 판단하는 단계;
    상기 문서 포맷이 PDF인 것에 근거하여, 기본 요소(element)들을 기준으로 상기 비실행 파일을 순회하여 자료형(dictionary type)을 탐색하는 단계;
    상기 자료형에 JS 엔트리가 포함되어 있는 지를 검사하는 단계; 및
    상기 JS 엔트리의 값을 빈 문자열과 비교하여, 상기 빈 문자열로 상기 JS 엔트리의 값을 대체하는 단계;
    를 포함하는, 무해화 방법.
  2. 제1항에 있어서,
    상기 기본 요소는 Obj 개체이며,
    상기 자료형은
    JavaScript 액션(action) 개체를 포함하는, 무해화 방법.
  3. 제1항에 있어서,
    상기 문서 포맷이 HWP인 것에 근거하여, 상기 무해화의 대상이 되는 제1 스트림 또는 제2 스트림을 확인하는 단계;
    상기 제1 스트림 또는 상기 제2 스트림의 압축 저장 상태를 판단하는 단계; 및
    상기 압축 저장 상태에 근거하여, 상기 제1 스트림 또는 상기 제2 스트림을 기본값과 비교하고, 상기 제1 스트림 또는 상기 제2 스트림을 상기 기본값으로 대체하는 단계;
    를 포함하는, 무해화 방법.
  4. 제3항에 있어서,
    상기 제1 스트림은 DefaultJScript 스트림이며,
    상기 제2 스트림은 JScriptVersion 스트림인, 무해화 방법.
  5. 제3항에 있어서,
    상기 제1 스트림은
    JavaScript 코드를 포함하고,
    상기 제2 스트림은
    상기 JavaScript의 버전(version) 정보를 포함하는,
    무해화 방법.
  6. 제3항에 있어서,
    상기 기본값은
    상기 HWP 포맷을 갖는 새 문서의 상기 제1 스트림 또는 상기 제2 스트림에 대응되는 값인, 무해화 방법.
  7. 제6항에 있어서,
    상기 기본값은
    상기 압축 저장 상태와 동일한 압축 저장 상태를 갖는, 무해화 방법.
  8. 비실행 파일을 무해화(Disarming) 시키는 서버에 있어서,
    통신부;
    상기 무해화를 수행하기 위한 CDR 엔진이 포함된 메모리; 및
    상기 통신부 및 상기 메모리를 기능적으로 제어하는 프로세서;를 포함하고,
    상기 프로세서는
    상기 비실행 파일의 문서 포맷(format)을 판단하고, 상기 문서 포맷이 PDF인 것에 근거하여, 기본 요소(element)들을 기준으로 상기 비실행 파일을 순회하여 자료형(dictionary type)을 탐색하며, 상기 자료형에 JS 엔트리가 포함되어 있는 지를 검사하고, 상기 JS 엔트리의 값을 빈 문자열과 비교하여, 상기 빈 문자열로 상기 JS 엔트리의 값을 대체하는, 서버.
PCT/KR2022/007429 2022-05-25 2022-05-25 Pdf 또는 hwp에서 javascript의 무해화를 위한 방법 및 장치 WO2023229061A1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/KR2022/007429 WO2023229061A1 (ko) 2022-05-25 2022-05-25 Pdf 또는 hwp에서 javascript의 무해화를 위한 방법 및 장치
KR1020227017736A KR102468428B1 (ko) 2022-05-25 2022-05-25 PDF 또는 HWP에서 JavaScript의 무해화를 위한 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2022/007429 WO2023229061A1 (ko) 2022-05-25 2022-05-25 Pdf 또는 hwp에서 javascript의 무해화를 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
WO2023229061A1 true WO2023229061A1 (ko) 2023-11-30

Family

ID=84237969

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/007429 WO2023229061A1 (ko) 2022-05-25 2022-05-25 Pdf 또는 hwp에서 javascript의 무해화를 위한 방법 및 장치

Country Status (2)

Country Link
KR (1) KR102468428B1 (ko)
WO (1) WO2023229061A1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120078030A (ko) * 2010-12-31 2012-07-10 주식회사 안랩 비 pe파일의 악성 컨텐츠 포함 여부를 판단하는 방법 및 시스템
KR101860546B1 (ko) * 2017-04-28 2018-05-23 (주)지란지교시큐리티 파일 내 포함된 콘텐츠 무력화 장치 및 방법, 그 기록매체
KR20190138093A (ko) * 2018-06-04 2019-12-12 고려대학교 산학협력단 문서 파일의 악성 코드 무력화 서비스 제공 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120078030A (ko) * 2010-12-31 2012-07-10 주식회사 안랩 비 pe파일의 악성 컨텐츠 포함 여부를 판단하는 방법 및 시스템
KR101860546B1 (ko) * 2017-04-28 2018-05-23 (주)지란지교시큐리티 파일 내 포함된 콘텐츠 무력화 장치 및 방법, 그 기록매체
KR20190138093A (ko) * 2018-06-04 2019-12-12 고려대학교 산학협력단 문서 파일의 악성 코드 무력화 서비스 제공 방법 및 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "[FORMAT] OLE #04. HWP - DEFAULTJSCRIPT", GHOSTKEI, 1 July 2016 (2016-07-01), XP093112544, Retrieved from the Internet <URL:https://ghostkei.blogspot.com/2016/01/format-ole-4-hwp-defaultjscript.html> [retrieved on 20231215] *
BRANDIS R, STELLER L: "Threat Modelling Adobe PDF", DEFENCE SCIENCE AND TECHNOLOGY ORGANISATION - DSTO FORMAL REPORTS TR-2730, 1 August 2012 (2012-08-01), XP093112533, [retrieved on 20231215] *

Also Published As

Publication number Publication date
KR102468428B1 (ko) 2022-11-18

Similar Documents

Publication Publication Date Title
US7861305B2 (en) Method and system for hardware based program flow monitor for embedded software
US10181026B2 (en) Methods, media, and systems for detecting attack on a digital processing device
US7849509B2 (en) Detection of security vulnerabilities in computer programs
Halfond et al. Preventing SQL injection attacks using AMNESIA
RU2607231C2 (ru) Системы и способы защиты от вредоносного программного обеспечения на основе нечеткого вайтлистинга
US8352484B1 (en) Systems and methods for hashing executable files
WO2013168951A1 (ko) 악성 파일 검사 장치 및 방법
US20200012793A1 (en) System and Method for An Automated Analysis of Operating System Samples
US9038161B2 (en) Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor
WO2014021190A1 (ja) プログラム実行装置及びプログラム解析装置
WO2019160195A1 (ko) 파일 내 포함된 악성 위협 탐지 장치 및 방법, 그 기록매체
Li et al. FEPDF: a robust feature extractor for malicious PDF detection
WO2018016671A2 (ko) 보안 취약점 점검을 위한 위험성 코드 검출 시스템 및 그 방법
WO2023229063A1 (ko) 무해화(disarming) 동작에서 차이점(delta) 추출 방식을 이용한 원본 파일 백업 공간을 효율화하는 방법 및 이를 위한 장치
KR20230084584A (ko) 코드 유사성 검색
WO2024063184A1 (ko) Pdf 또는 hwp에서 link의 무해화를 위한 방법 및 장치
WO2023229062A1 (ko) Ms-ooxml에서 ole object 무해화를 위한 방법 및 장치
WO2023229061A1 (ko) Pdf 또는 hwp에서 javascript의 무해화를 위한 방법 및 장치
WO2023229066A1 (ko) 리버싱 엔진 기반의 문서 행위를 판단하기 위한 방법 및 이를 위한 장치
Levine et al. A methodology to characterize kernel level rootkit exploits that overwrite the system call table
WO2023229068A1 (ko) Ms excel 문서 포맷에서 dde 무해화를 위한 방법 및 장치
WO2024063171A1 (ko) 자식 프로세스의 악성 행위를 검사하기 위한 방법 및 이를 위한 장치
WO2024071461A1 (ko) 난독화 된 자바스크립트를 탐지하고 복호화하기 위한 방법 및 이를 위한 장치
WO2024071451A1 (ko) Ocr 기술을 이용하여 비실행 파일의 악성 매크로를 탐지하기 위한 방법 및 이를 위한 장치
KR102494838B1 (ko) MS-CFB의 DocumentSummaryInformation 스트림에서 Link의 무해화를 위한 방법 및 장치

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 17780139

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22943868

Country of ref document: EP

Kind code of ref document: A1