Title: Information device, program, method for preventing execution of unauthorized program code, and computer readable recording medium.Abstract: An unauthorized access relating to buffer overflow is prevented reliably and easily, without dependence on the function that a CPU processes. An information device (1) performs data processing in cooperation with a central control unit and each program code developed in a memory; performs a hook process to detect a time when the program code is called; and performs a stack layout check process to sequentially acquire a return address of each program code developed in a RAM (30), detect an unauthorized access on the basis of a destination address indicated by the acquired return address, and stop the data processing when an unauthorized access is detected. ...

BACKGROUND ART

Generally, on information devices such as PC (Personal Computer) and WS (Work Station) there exists a control unit such as CPU (Central Processing Unit) which executes various types of data processing by sequentially executing program codes loaded in a working area of a storage unit such as a RAM (Random Access Memory). In recent years, illegal accesses to the information devices has been occurring by way of unauthorized execution using program codes created by malicious users.

Data managed by the information devices are generally assigned with access rights. Accordingly, the illegal accesses will not occur as long as the user has no access right. The illegal accesses will be possible if an unauthorized operation is made using a general program code assigned with the access rights to data. One known technique of this sort is using the so-called buffer overflow, allowing data at the time of execution of the program codes overflow out from a predetermined area allocated in the RAM or anything similar to RAM.

The illegal access using the buffer overflow will now be described in detail by showing comparison between the case where the program codes are properly ran and the case where the program codes are ran with an illegal action.

First, a model case where the program codes are properly ran will be explained referring to FIG. 9 and FIG. 10.

FIG. 9 is an illustration of an example source code of a program code. The program code in FIG. 9 starts with main( ) function, wherein strcpy_helloworld( ) function is called in main( ) function. In the program code, a character string “Hello!” is prepared in strcpy_helloworld( ) function, and is displayed on a monitor and the like with the aid of printf( ) function in main( ) function. Note that the function herein means a subroutine or a subprogram having predetermined functionalities gathered into a module, and can be called in the main program as required.

The data for the running the program code illustrated in FIG. 9 are stored in a stack area allocated in the RAM. In the stack area, the data are stored according to a LIFO (Last In First Out) or FILO (First In Last Out) structure.

FIG. 10 is an illustration example of an outline of the stack area when the program code is running. As illustrated in FIG. 10, data for the running the program code is stored downward into sequentially allocated areas.

For example, in the program code based on the source code illustrated in FIG. 9, Return Address1, ebp backup, char buf[8] and so forth are stored as a single stack frame, when main( ) function is processed. Next, when strcpy_helloworld( ) function in main( ) function is called, ReturnAddress2, ebp backup2, int i and so forth are also stored as a single stack frame.

ReturnAddress (return address) indicates an address value to which the process is to return upon the completion of a program. Return address is also an address value to which the process is to return upon the completion subprogram when the subprogram is called by the function or the like. ReturnAddress is automatically stored in the stack area by the CPU immediately after the execution of the program or immediately after the subprogram is called by the function or the like.

ebp is one type of CPU register, and indicates an address located just before a temporary memory area currently being used. In the example illustrated in FIG. 10, ebp indicates addresses before char buf[8] and int i, and ReturnAddresses in the stack frame correspond to ebp. Accordingly, in the stack frame, by backing up the register value as ebp backup, an area in the stack frame can be easily used as a memory area for storing temporary data (variables and arrays).

char buf[8] stores buf which is an array used in main( ) function. buf is an array for storing eight char-type (1 byte) variables, and 8-byte data can be stored in buf. int i stores i which is an int-type variable used in strcpy_helloworld( ) function.

Accordingly, by execution of the program code, a stack frame of main( ) function is allocated and a stack frame of strcpy_helloworld( ) function is allocated in the stack area. Then, a value of int i is sequentially incremented and the 6-byte character string “Hello!” is stored in char buf[8]. Next, upon completion of strcpy_helloworld( ) function, ReturnAddress2 is read out and returned to main( ) function, and upon completion of main( ) function, ReturnAddress1 is read out and the program terminates normally.

Next, a case where an illegal act took place when the program code is executed will be described with reference to FIG. 11 and FIG. 12.

FIG. 11 is a schematic diagram illustrating an example of source code of the program code. The program code illustrated in FIG. 11 is different from the program code illustrated in FIG. 9, in that a 12-byte data (11 characters+character string terminal) “Hello World” is written in the array buf.

FIG. 12 is a schematic diagram illustrating an outline of the stack area when the program codes are executed. As illustrated in FIG. 12, in the stack area, an 8-byte area is allocated as an area for storing the buf array. Accordingly, when strcpy_helloworld( ) function is executed, data having a size larger than the allocated size to be is written. Buffer overflow thus occurs when data having a size larger than the allocated size of memory is to be written. Note that the buffer overflow which occurs in the stack area is referred to as the stack-based buffer overflow.

In the stack area illustrated in FIG. 12, allocation of areas is sequentially carried out downward, and writing of data into the allocated areas is carried out upward. Accordingly, ReturnAddress1 and ebp backup are illegally overwritten with the 12-byte data “Hello World”, if strcpy_helloworld( ) function is executed. When a content of ReturnAddress1 is rewritten with an address where an executable program code is located, ReturnAddress1 is read out upon completion of main( ) function and the program code is executed.

According to the source code illustrated in FIG. 11, the overflow is caused by the character string named “Hello World” which is defined in advance. However, in practice, there is a case where data received through a network port of a mail server or Web server, or data entered through a console or files, is stored into the buf array. In such case, an arbitrary program code may be executed by a malicious user through network, entry through a console, or entry through files, and thereby illegal access such as data theft and falsification may occur.

As a method of detecting such illegal access, one possible method is by detecting whether any illegal access is executed or not by inspecting the return addresses stored in the stack area and comparing an arrangement pattern of the return addresses under execution of the normal program and an arrangement pattern of the return addresses under operation of an attack code. For example, the program may be judged as normal, if a destination memory attribute pointed by the return address has a program code attribute, or if the memory areas have a non-writable attribute.

However, return-to-libc attack (see Non-Patent Document 1) may not be detected by the above-described method of detecting illegal access. The return-to-libc attack refers to a technique of making an illegal access by calling a function preliminarily stored in a computer without adding any malicious code into the program code.

FIG. 13 is a schematic diagram illustrating an example of an outline of the stack area under the return-to-libc attack, when executing the program codes illustrated in FIG. 11. As illustrated in FIG. 13, in the return-to-libc attack, the value pointed by the above-described return address, that is, the content of ReturnAddress1, is set to the top address of the normal function such as OS (Operating System) standard functions. If the return addresses in the stack area indicate memory areas for the program code, or if the memory areas have a non-writable attribute, the program including the return-to-libc attack may not be distinguishable from the normal program.

A possible attack using the return-to-libc attack is such as executing a predetermined program code by combining program codes of programs which are stored in a storage unit of an information device in advance. Also in this method of attack, the return addresses in the stack area seem to have similar pattern as those in the return-to-libc attack, so that the program including the attack using the return-to-libc attack may not be distinguishable from the normal program.

Patent Document 1 discloses a technique using branch trace which is one of the CPU functions so as to detect an action of returning back to the top address of the OS standard function, when returning from the function which is being executed to the process of the function at a caller.

DISCLOSURE OF THE INVENTION

However, while the technique described in Patent Document 1 might successfully detect the return-to-libc attack making use of the function called branch trace, the technique may increase process load of the CPU since it uses the function owned by the CPU, and may also restrict the use of other applications (such as performance measurement tool and so forth) which make use of the branch trace function. In other words, the technique may increase the process load of the computer in a period over which the process for detecting the return-to-libc attack continues, and may thereby degrade the usability of the computer.

The present invention was conceived after considering the above-described problems in the prior art, and an object of which is therefore to provide a technique of preventing an illegal access using buffer overflow in a reliable and simple manner, without depending on the OS functions owned by CPU.

Means for Solving the Problem

In order to solve the above problems, the invention described in claim 1 is An information device which processes data based on cooperation of program codes loaded in a memory with a central control unit including detection unit which detects a timing when any one of the program codes is called, a return address acquisition unit which sequentially acquires return addresses of the program codes loaded in the memory, when the program code detected by the detection unit is called and a termination unit which detects an illegal access based on destination addresses pointed by the return addresses sequentially acquired by the return address acquisition unit when the program code detected by the detection unit is called, and terminates the data processing when the illegal access is detected.

The invention described in claim 2 is the invention described in claim 1, wherein the memory has a stack area used for storing the return addresses of the program codes, and the return address acquisition unit traces and acquires the return addresses stored in the stack area.

The invention described in claim 3 is the invention described in claim 1 or 2, wherein the termination unit detects the illegal access when the destination addresses pointed by the return addresses acquired by the attribute acquisition unit is a starting address of a function, and terminates the data processing when the illegal access is detected.

The invention described in claim 4 is the invention described in any one of claims 1 to 3, wherein the termination unit detects the illegal access when an instruction located just before the destination addresses pointed by the return addresses acquired by the attribute acquisition unit is not a call instruction, and terminates the data processing when the illegal access is detected.

The invention described in claim 5 makes a computer, which executes program codes loaded in a memory, function as a detection unit which detects a timing when any one of the program codes is called, a return address acquisition unit which sequentially acquires return addresses of the program codes loaded in the memory, when the program code detected by the detection unit is called and a termination unit which detects an illegal access based on destination addresses pointed by the return addresses sequentially acquired by the return address acquisition unit when the program code detected by the detection unit is called, and terminates the data processing when the illegal access is detected.

The invention described in claim 6 is a method for preventing execution of a malicious program code in a computer which executes program codes loaded in a memory including detecting a timing when any one of the program codes is called, sequentially acquiring return addresses of the program codes loaded in the memory when the detected program code is called, detecting an illegal access based on destination addresses pointed by the acquired return addresses and terminating data processing when the illegal access is detected.

The invention described in claim 7 is a computer-readable recording medium which stores a program configured to make a computer, which executes program codes loaded in a memory, function as detection unit which detects a timing when any one of the program codes is called, a return address acquisition unit which sequentially acquires return addresses of the program codes loaded in the memory, when the program code detected by the detection unit is called and a termination unit which detects an illegal access based on destination addresses pointed by the return addresses sequentially acquired by the return address acquisition unit when the program code detected by the detection unit is called, and terminates the data processing when the illegal access is detected.

Advantageous Effect of the Invention

According to the present invention, an illegal access using buffer overflow can be prevented in a reliable and simple manner, without depending on the CPU functions.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 This is a block diagram schematically illustrating a functional configuration of an information device according to an embodiment of the present invention.

FIG. 2A This is a diagram illustrating an example of a stack area allocated in a predetermined area in a RAM (30) under the return-to-libc attack.

FIG. 2B This is a diagram illustrating an example of a stack area allocated in a predetermined area in a RAM (30) under an attack based on an applied technique of the return-to-libc attack.

FIG. 3 This is a flow chart illustrating a hook process of the information device.

FIG. 4 This is a flow chart illustrating an example of a stack layout check process executed by an information device.

FIG. 5 This is a schematic diagram illustrating an example of a code in a case where the return address is located near the starting address of a function.

FIG. 6 This is a schematic diagram illustrating an example of a code in a case where the return address is set to an address of a program code totally different from the starting address of a function and the program is executed.

FIG. 7 This is a diagram illustrating contents of a stack when CreateFile is called under the return-to-libc attack.

FIG. 8 This is a diagram illustrating contents of a stack when URLDownloadTofile is called under the return-to-libc attack.

FIG. 9 This is a schematic diagram illustrating an example of a source code of the program code.

FIG. 10 This is a schematic diagram illustrating an example of an outline of the stack area when the program code is running.

FIG. 11 This is a schematic diagram illustrating an example of a source code of the program code.

FIG. 12 This is a schematic diagram illustrating an example of an outline of the stack area when the program code is running.

FIG. 13 This is a schematic diagram illustrating an example of an outline of the stack area when the program code is running under the return-to-libc attack.

EMBODIMENTS FOR CARRYING OUT THE INVENTION

Embodiments of the present invention will be described below referring to the attached diagrams. However, the scope of the present invention is not limited to the embodiments described below.

First, a configuration of the information device according to an embodiment will be explained.

FIG. 1 schematically illustrates a functional configuration of an information device 1. As illustrated in FIG. 1, the information device 1 has a CPU (10), a storage unit (20), a RAM (30), an operation unit (40), a display unit (50), and an I/F unit (60). The individual units of the information device 1 are electrically connected through a bus (70). More specifically, the information device 1 is a PC, WS, PDA (Personal Digital Assistant), mobile phone, and the like.

The CPU (10) controls operations of the information device 1 in a centralized manner. The CPU (10) loads program codes and various data, which are stored in the storage unit (20) in a work area of the RAM (30), and outputs control signals to the individual units in cooperation with the data loaded in the RAM (30).

The storage unit (20) stores data which includes program codes and various setting information, wherein the data is readable and writable by the CPU (10). The storage unit (20) is a HDD (Hard Disk Drive), semiconductor memory, and the like, for example. The storage unit (20) may alternatively be configured to store the data in a ROM (Read Only Memory). The program codes stored by the storage unit (20) includes basic software such as OS (Operating System), various application programs provided by vendors, and programs relevant to the processing described later.

In the RAM (30), a stack area for storing information about the running the program code is allocated.

FIG. 2A illustrates an example of a stack frame in the stack area in the RAM (30) under the return-to-libc attack. As illustrated in FIG. 2A, the stack area stores data which includes an argument of ExitProcess, ReturnAddress, arguments 2 and 1 of WinExec, a starting address of ExitProcess, and ebp backup. In the return-to-libc attack, the starting address of ExitProcess( ) is occasionally set as a the return address after execution of WinExec( ). The example illustrated in FIG. 2A shows a stack area under the return-to-libc attack and when WinExec( ) is executed.

ExitProcess( ) is a function for terminating the program, and a termination code of the program to be terminated is set to the argument of ExitProcess. WinExec( ) is a function for allowing execution of a designated program. Since ReturnAddress is located just before ebp backup, ReturnAddress can sequentially be traced and acquired by following ebp backup.

The stack frames contained in the stack area are sequentially allocated with execution of the program codes, when the individual program codes are sequentially executed. For a model case where the main program code is executed, a program code relevant to a subroutine is called in the program code and still another program code is called, areas corresponded to the individual program codes are allocated according to the order of the stack frames. When processes relevant to the individual program codes terminate, return to the main program code or processes after termination of the program will occur upon read-out of ReturnAddress in the stack frame.

FIG. 2B illustrates an example of stack frames in a stack area allocated in a predetermined area of the RAM (30) in the applied technique of return-to-libc attack described in the above. In the area of the “existing program code”, a code for calling ExitProcess in the existing program code is stored.

The operation unit (40) accepts an entry of operation made by a user and outputs an operation signal corresponding to the operation to the CPU (10). The operation unit (40) herein is a keyboard having character keys, numeral keys and other keys assigned to various functions, or a pointing device such as mouse, for example.

The display unit (50) displays an image on a screen, the image being based on a display control signal output from the CPU (10). The display unit (50) may be a CRT (Cathode Ray Tube), LCD (Liquid Crystal Display), and the like.

The I/F unit (60) has a data network IC (Integrated Circuit), connectors and so forth (all of them not illustrated), and is connected to external devices and a communication network so as to communicated with each other. The I/F unit (60) may typically be a USB (Universal Serial Bus) network port, or a network interface card (NIC) which allows connection with LAN (Local Area Network), WAN(Wide Area Network) or the Internet, for example.

Next, operations of the information device (1) when detecting execution of malicious program code will be explained. In order to prevent execution of malicious program code in the information device (1), it is necessary to insert a process for checking a malicious program code execution by detecting an API, library function, system call and so forth which are required for the execution of the malicious program code. In the information device (1) of this embodiment, detecting of malicious code used for calling a predetermined library function and inserting of a process for checking illegality are realized by using hooks.

The hook process is a mechanism for enabling a user to insert his or her unique process at a specific position in any program. In other words, it is a mechanism used when the programmer who created the program code to be hooked and the programmer who created the program code used for the hook process are different persons, and where the source codes relevant to their program codes are not created by the same programmer. Accordingly, the mechanism is used for modifying OS or functions provided by the vendor, or for adding arbitrary processes.

The hook process may be used also when the programmer himself or herself is able to modify subprograms such as functions to be checked. Note that, for the case where the programmer himself or herself is able to modify subprograms and he or she modified the subprograms so as to enable checking of illegality upon execution of the subprogram, it is no longer necessary to use the hook process and the existing functions and library can be used as safer ones.

First, a model case for checking whether the malicious program code is executed or not by using API hook process (hook process of library function) will be explained with reference to FIG. 3.

Hereinafter, a hook process (FIG. 3) of a library function named WinExec( ), provided by the vendor, and a stack layout check process (FIG. 4) executed upon calling of the library function will be shown as examples. Note that the following examples will apply to the hook process for other library functions (ExitProcess( ), for example).

FIG. 3 is a flow chart illustrating the hook process executed in the information device (1). The hook process is executed in cooperation with the CPU (10) and the program stored in the storage unit (20).

As illustrated in FIG. 3, first the starting address of a function of WinExec( ) is acquired (step S1). The acquisition of address of the function is enabled by calling the function provided from a vendor.

Next, a small function (temporary function) for hooking execution of API is dynamically generated (step S2). The dynamically-generated function is a function for calling the stack layout check process described later.

Next, the top code of WinExec( ) is rewritten and modified so as to enable execution of the function generated in step S2 (step S3).

By virtue of the hook process described above, it is now capable of inserting a process of detecting a call of the subprogram code, and checking any illegality, in the information device (1). In general cases where a subprogram of the function is called, a function called by a certain function is executed as it is. In contrast, in the information device (1), by performing the above-described hook process which takes place before the subprogram code is called, the stack layout check process may be executed upon calling of the subprogram code.

FIG. 4 illustrates a flow chart of the stack layout check process executed in the information device (1). The stack layout check process is called from the function dynamically generated by the hook process, by the CPU (10) and the program stored in the storage unit (20) cooperating with each other. In the stack layout check process, while a stack trace is carried out using the StackWalk( ) function, the stack trace may alternatively be carried out without using StackWalk( ).

You can also Monitor Keywords and Search for tracking patents relating to this Information device, program, method for preventing execution of unauthorized program code, and computer readable recording medium patent application.
###

How KEYWORD MONITOR works... a FREEservice from FreshPatents1. Sign up (takes 30 seconds). 2. Fill in the keywords to be monitored. 3. Each week you receive an email with patent applications related to your keywords. Start now! - Receive info on patent apps like Information device, program, method for preventing execution of unauthorized program code, and computer readable recording medium or other areas of interest.###

Data source: patent applications published in the public domain by the United States Patent and Trademark Office (USPTO). Information published here is for research/educational purposes only. FreshPatents is not affiliated with the USPTO, assignee companies, inventors, law firms or other assignees. Patent applications, documents and images may contain trademarks of the respective companies/authors. FreshPatents is not responsible for the accuracy, validity or otherwise contents of these public document patent application filings. When possible a complete PDF is provided, however, in some cases the presented document/images is an abstract or sampling of the full patent application for display purposes. FreshPatents.com Terms/Support -g2-0.5099