WO2005024630A1 - 不正コード実行の防止方法および防止プログラム - Google Patents
不正コード実行の防止方法および防止プログラム Download PDFInfo
- Publication number
- WO2005024630A1 WO2005024630A1 PCT/JP2004/012858 JP2004012858W WO2005024630A1 WO 2005024630 A1 WO2005024630 A1 WO 2005024630A1 JP 2004012858 W JP2004012858 W JP 2004012858W WO 2005024630 A1 WO2005024630 A1 WO 2005024630A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- program
- return address
- address
- execution
- stack
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
Definitions
- the present invention relates to a method for preventing execution of an unauthorized code, a program for preventing the execution of an unauthorized code, and a program for preventing the execution of an unauthorized code, in which a program operating on a computer protects against a malfunction due to an unauthorized code or an external attack.
- the present invention relates to a recording medium for an application program.
- the present invention relates to a method for preventing unauthorized code execution, a program for preventing unauthorized code execution, and a recording medium for a program for preventing unauthorized code execution, which detects a buffer overflow and improves deficiencies in program operation.
- a security hole is a structure of vulnerabilities caused by flaws or bugs in software design. Malicious users can use this security hole in the operating system to gain unauthorized access to the operating system and perform malicious activities such as hacking and cracking. One way to do this is to use buffer overflow in the memory.
- a program running on a computer consists of two parts: program code and program data.
- the program code is a read-only code written in a machine language.
- the program data is an information portion such as a position on a memory of a program code executed by an execution instruction of the operating system.
- the program is usually stored on a hard disk of an electronic computer.
- a program is called and executed by an operating system, the whole or a part of the program is stored and operated in a random access memory (RAM), which is a main memory of a computer.
- Main memory stores data directly from the CPU (central processing unit) of the computer. This is a memory that can read and write data, and is managed by assigning an address number to each unit capacity for storing data.
- the smaller address number of the main memory is defined as an upper address (High Memory) area, and the larger address number is defined as a lower address (Low Memory) area.
- the main memory will be simply described as a memory.
- a program When a program is read by the operating system, a part of the memory is allocated to the program, the program data is stored in an upper address (High Memory) area of the allocated memory, and a lower address (Low Memory) is stored.
- the program code is stored in the (Memory) area.
- Program data is divided into three data areas: stack data, heap data, and static data. These three areas are located in memory independently of each other.
- FIG. 5 is a conceptual diagram showing a structure of a memory of an electronic computer.
- the upper address side of the memory is a stack memory area.
- the stack memory area In the stack memory area, each time a program is executed, the stack memory for the program and the subroutines in the program is secured here, and the stack memory area is sequentially stored in a lower address of the memory.
- the stack memory includes an argument (Argument) area, a return address (Return Address) area, a stack data area, and the like.
- the lower address side of the memory includes areas such as a heap data area, a static data area, and a program code area.
- the static data area is located at a higher address than the program code area and is a memory area where global variables and static C ++ class members are reserved.
- the heap data area is located at a higher address than the static data area.
- the heap data area is allocated to the C language malloc () and allocO functions, and the C ++ language new operator.
- the stack memory area is accessed by a LIFO (Last-in, first-out) method.
- the stack memory stores function parameters such as a return address at which the next instruction after the execution instruction is executed, local variables, and the like. This return address is an important value at all.
- FIG. 6 illustrates a program written in C language.
- the program runs Then, the main () function is executed first (lines 13), sub (Datal) of the subroutine on the fourth line is called, and the processing of the program is shifted to the tenth line.
- the return instruction on the 16th line moves the processing to the position where sub () was called. At this time, how data is stored in the memory will be described.
- Non-patent literature describes a method for providing a mechanism for preventing a buffer overflow in a compiler.
- the GCC compiler has a protection section at the lower address of the stack memory to detect overwriting of data.
- Patent Document 1 an area of a protected numerical value is defined in a storage device, data in a stack memory is stored and protected in the protected numerical value area, and a processing command is executed. Since the return address is protected in the protected numerical value area, the program counter is protected even if processing instructions such as subroutines are executed.
- Non-Noon Document 1 Openwall Linux kernel patch project
- Non-Patent Document 2 StackGuard: Simple Stack Smash Protection go GCC, URL:
- Patent document 1 US published patent number US2001013094? Al?-? 2001-08_09, "Memory device, stack protection system, computer system, compiler, stack protection method, storage medium and program transmission apparatus.
- An object of the present invention is to provide a method for preventing falsification of data stored in an address of a memory of a computer and detecting data falsification, a program thereof, and a recording medium of the program.
- An object of the present invention is to provide a method for preventing and detecting return address in a stack memory during execution of a program.
- Still another object of the present invention is to provide a function for effectively preventing execution of malicious code even when application software and kernel mode software are vulnerable to buffer overflow.
- Still another object of the present invention is to detect an unauthorized code before it is executed, and to suppress execution of the unauthorized code.
- the present invention employs the following means in order to achieve the above object.
- the method for preventing unauthorized code execution according to the first aspect of the present invention is characterized in that when a program stored in a storage medium of a computer is executed by a central processing unit, the program is stored in a stack memory area of a memory. Return address capability This is a method for detecting a buffer overflow of the memory, which is overwritten by execution of an illegal code, and preventing the occurrence of the buffer overflow.
- the return address is backed up, and when the return address is altered by execution of the illegal code, the alteration is detected by a debugging function of the central processing unit. It is characterized by.
- a memory address where the return address is stored is recorded in a debug register used for the debug function, and when the value of the memory address recorded in the debug register is falsified, The central processing unit outputs an error signal and It is good to perform detection.
- the backup is performed by storing the return address in a memory area where the data of the execution program is not stored.
- the apparatus further comprises means for detecting the buffer overflow by comparing the return address stored in the stack memory area with the backed up address.
- control means for rewriting the memory address with the stored return address when the return address is falsified it is preferable to have a control means for rewriting the memory address with the stored return address when the return address is falsified.
- ttmp the return address is specified in the ttmp stack memory command, and the ttmp, the return address address, and the treasure maker is told.
- ttmRttmp stack memory area enter: To perform the above-mentioned play, enter the following message: “Processing error” >> ttmp n »fi, ttmp, error message, ttmp, program
- the return address may be a process called when the program is executed, and at least one return address of a thread called from the process. It is good to be.
- the program for preventing execution of unauthorized code according to the second invention of the present invention is stored in a stack memory area of a memory when a program stored in a storage medium of a computer is executed by a central processing unit.
- the program for preventing illegal code execution includes an analysis step for acquiring and analyzing a branch instruction in the program when the program is called from the storage medium; An extraction step for extracting a return address, a registration step for registering an address where the return address is stored in the stack memory area as a debug address of a debug function of the central processing unit, and an operation of the program.
- An extraction step for extracting a return address
- a registration step for registering an address where the return address is stored in the stack memory area as a debug address of a debug function of the central processing unit, and an operation of the program.
- a backup step for registering and backing up the return address and the address.
- the central processing unit is debugged by the debug function. Outputting an error signal, interrupting the execution of the program, and moving the flow of the program to the control step.
- control step may include a step of stopping the program.
- control step may include a step of rewriting the return address with the backed-up return address.
- control step may include a step of storing the rewritten value.
- the central processing unit When performing a check, the central processing unit outputs an error signal to perform the detection, and the program is stopped or stopped after receiving the error signal. And the control step for controlling the flow of the program.
- program is preferably at least one selected from application software, operating system software modules, kernel mode software, functions used in these, and subroutines.
- a recording medium for a program for preventing unauthorized code execution according to the third invention of the present invention is a recording medium on which the above-described program for preventing unauthorized code execution is recorded.
- the illegal code prevention method of this invention can prevent execution of an illegal code without changing hardware, an operating system, kernel mode software, and application software.
- the illegal code prevention method of the present invention can effectively cope with a case where application software and kernel mode software have vulnerabilities due to buffer overflow.
- the unauthorized code prevention method of this invention can detect an unauthorized code before it is executed, and can suppress execution of an unauthorized code.
- An object of the present invention is to provide a method for detecting an operation in which data stored in a main memory of a computer is rewritten and falsified.
- data stored in the main memory of the electronic computer is rewritten, and a program for detecting the falsification of the data and restoring the rewritten or falsified data is provided.
- the present invention provides a recording medium on which the program is recorded. An outline of the embodiment of the present invention will be described.
- the debug function of the CPU is a function for detecting an error that occurs when an application program is executed.
- the CPU has multiple memories called debug registers, which are used to monitor the operation of specific addresses in the main memory. The address of the monitored address and the CPU operation are registered in this debug register, and when the value of this address is changed, the CPU detects this and issues an error signal. Then, another program can be operated by interrupting the execution of the application program.
- an operation of a program for detecting execution of an illegal code due to a buffer overflow and preventing data tampering or the like will be described.
- the return address is stored in the stack memory area every time a program, subprogram, or function is called, as described in the related art.
- In the debug register of the computer CPU specify and record the main memory address where the return address is stored. At the same time, the return address is backed up in another area of the main memory. If the data at this address is tampered with, an error is detected by the CPU, interrupting the program being executed, and transferring control to another program to prevent data tampering and execution of illegal code. it can. Rewrite the backup return address to the original address, and return the program to normal operation. It is also possible to back up the rewritten address and use it for pattern analysis of computer virus attacks due to buffer overflow.
- the unauthorized code prevention method uses driver software to realize a method of detecting data tampering using the debug register and restoring the tampered data. It provides layers and error routines.
- This driverware layer has a function of grasping the above-mentioned return address, registering it in a debug register, and backing up.
- the error routine provides a function to repair the alteration if the return address data is altered.
- Embodiment 1 of the present invention will be described in detail.
- FIG. 1 shows an outline of an embodiment of the present invention.
- FIG. 1 shows software 1, driverware 2, file system driver 3, and hard disk 4 operating on the computer.
- the executable program is stored as an executable file 5 on the hard disk 4, read out by an operating system call command, and stored in the memory 6.
- Software 1 means an application program running on a computer. This application program may be any program that operates in the kernel mode or user mode of the operating system.
- the driverware 2 is located between the file system driver 3 and a service provided by the operating system, and performs control when reading / writing from / to each device of the computer from the operating system. It is a program.
- the file system driver 3 is a driver for reading data stored in a storage device built in or connected to the computer and writing the data to the storage device.
- the hard disk 4 is usually a hard disk built into the computer. But software 1 is stored and called from the operating system
- An external storage device such as an external hard disk, a flash memory, or a CD-ROM may be used as long as it can be executed.
- an instruction for calling a program (executable file 5 in FIG. 1) from the operating system takes a format transmitted to the file system driver 3 via the driverware 2.
- the file system driver 3 calls the program from the hard disk 4 and passes it to the driver 2.
- the driverware 2 analyzes the program, grasps the main routine and subroutine, obtains the return address of each, and performs control to detect a buffer overflow.
- the return address is the address that is output by a branch instruction such as the CALL instruction, stored in the stack memory, and returned by the RET, RETxx instruction.
- the driverware 2 detects the start of the program (step 2).
- the driverware 2 analyzes the program, grasps the main routine and subroutine, and obtains the respective return addresses.
- Driverware 2 checks the arguments, local variables, and function addresses generated when the program is started (step 3), and stores the function addresses. Specifically, it checks the events executed by branch instructions such as calls (CALL), returns (RET, RETN), and jumps (JMP) executed in the program, acquires the return address, and saves it (step 4).
- branch instructions such as calls (CALL), returns (RET, RETN), and jumps (JMP) executed in the program, acquires the return address, and saves it (step 4).
- the driverware 2 hooks a branch instruction such as a call instruction (Call instruction) so that control can be transferred to the driverware 2 (step 5).
- a branch instruction such as a call instruction (Call instruction)
- PsSetLoadlmageNotifyRoutineO provided by the OS is called, and a callback function (LoadlmageNotifyRoutine) called at the time of process startup is registered.
- a callback function LoadlmageNotifyRoutine
- Driverware 2 incorporates protection of return addresses on the stack memory and detection of tampering during program execution (Step 6).
- the above-described debug function of the CPU is used for the protection of the return address.
- the CPU debugging functions there is a function that outputs an error when a specific memory address is rewritten, and control can be moved to a specified address.
- the operating system issues an interrupt instruction and transfers control to the driverware 2. Apply this function to the return address. Therefore, when the return address is rewritten, an error is detected by the debug function, and control is transferred to the driverware 2.
- Driverware 2 executes the program specified in step 1 (step 7).
- FIG. 4 is a flowchart showing a procedure for detecting a buffer overflow when the program is activated and executed.
- call instruction When a call instruction (Call instruction) is executed from the operating system or the application program when executing the program, an interrupt of the CPU occurs, and control is transferred to the driver 2 (steps 10-11).
- the driverware 2 checks the arguments, local variables, and function addresses generated by the execution of the program (step 12), and protects or stores the return address on the stack 2 ⁇ during execution by the debug function (step 12). 13).
- This corruption is performed by setting the stack memory in which the return address is stored to a read-only attribute, and when writing to this stack memory and making an entry, the CPU generates an error and generates an interrupt of the CPU. Since the control is transferred to the driverware 2, the return address cannot be changed and tampered with, and it is possible to corrupt the memory.
- the above memory stores the return address on the stack memory in a separate area of the memory. If the return address has been tampered with, this backup can be compared to the return address and the tampering can be performed.
- the driverware 3 issues an instruction (IRET) (Step 14), returns control to the execution address interrupted in Step 11 (Step 15), and executes (Step 16).
- ITT instruction
- Step 14 the driverware 3 issues an instruction (IRET) (Step 14)
- Step 15 returns control to the execution address interrupted in Step 11 (Step 15)
- Step 16 executes
- the driverware compares the return address stored in step 13 with the return address on the stack (step 1719).
- Driverware 2 detects an error (step 20).
- the execution of the program is interrupted, and control is transferred to the error routine (step 21).
- the error routine (not shown) is executed when an error is detected.
- the error routine stops the execution of the program, saves the contents of the stack memory, and rewrites the return address with the previously saved data. It is a program that has This error routine allows you to stop, continue, and save malicious code (step 22).
- FIG. 2 illustrates an example in which the computer is attacked from the outside.
- Network card
- External data having a virus, an unauthorized code, and the like is transmitted via the communication device 10.
- External data is stored in the memory 6 via the network card 10, NDIS 11, and Winsockl 2.
- the CPU outputs an error and the control shifts to the driverware 2.
- Driver way 2 receives this error detection and hooks an error routine to respond.
- the present embodiment is applicable not only to an application program that operates only in the user mode, but also to a program that operates in the kernel mode.
- the same method can be applied to any program that uses the buffer overflow method.
- Embodiment 1 of the present invention An example of Embodiment 1 of the present invention will be described.
- a processor having a 32-bit architecture of Intel (registered trademark) and having an instruction trace function is implemented.
- Intel registered trademark
- it is a processor developed after PentkimPro (registered trademark) or a processor compatible with this processor.
- the operating system is Microsoft Windows 2000 (registered trademark).
- the driverware 2 operates, performs initialization processing in preparation for buffer overflow detection, detects processes and threads generated when a program is executed, and Understand routines and subroutines. Then, when the driverware 2 detects a buffer overflow, a process interruption process is operated as an error routine to take measures. These operations will be described in detail.
- the flowchart in FIG. 8 shows the outline of the initialization processing.
- the driverware starts and reads the process name for monitoring buffer overflow from the registry (Step 100).
- the process creation callback of the process to be monitored is registered (step 101). Details of the registration of this process generation callback are shown in the flowchart of FIG.
- the stack recorder is initialized to secure a memory area (step 102).
- a hook for the thread generation event of the monitored thread is set (step 103).
- trace the execution instruction is set.
- LoadlmageNotifyRoutine is registered. This callback function is defined by the following prototype:
- FIG. 9 shows a procedure of registering a process generation callback.
- the LoadlmageNotifyRoutine function is called (step 110).
- the operation in LoadlmageNotifyRoutine is shown below.
- It is determined whether the process is to be monitored (step 111). At this time, it is checked whether the target process module name exists in the argument FulllmageName of LoadlmageNotifyRoutine. If it does exist, move on to the next process.
- the entry point address of the process module is obtained (step 112). Examine the beginning (header) of the executable module file used in Windows and obtain the address of the function (entry point) to be executed first. Then, a break point is set at the entry point (step 113).
- An example of the program code at this time is as follows.
- PVOID ImageBase (PVOID) lmagelnfo-> lmageBase
- MZ-HEADER * mz_Header (MZ—HEADER *) lmageBase;
- MZ_NE * mz one ne (MZ_NE *) ((char *) ImageBase + siz8of (MZ_HEADER));
- Oldt (PIDTENTRY) MAKELONG (idtr ⁇ owlDTbase, idtr.HilDTbase);
- gOldlNTOI H_Handler MAKELONG (Oldt [IGATE01] .OffsetLow, Oldt [IGATE01] .OffsetHigh);
- MOV DR7, EAX; II Set DE7 Initialization of the stack recorder (see step 102) is performed dynamically each time a thread of the specified monitored process is created.
- Each stack of the stack recorder is defined as follows.
- the flowchart of FIG. 10 shows a procedure for setting a hook for a thread generation event (see step 103).
- a thread is created (step 120)
- Oldt (PIDTENTRY) MAKELONG (idtr.LowlDTbase, idtr.HilDTbase);
- g0ldlNT2EH_Handler M AKE LONG (01 d t [IG AT E2 E]. Of f set Low, 0ldt [IGATE2E] .0ffsetHigh);
- the program is executed, and a branch instruction such as CALL or RET is traced.
- a branch instruction such as CALL or RET is traced.
- the processing during tracing is shown in the flowcharts of FIGS.
- the trace processing is started (step 150)
- the trace flag of DR6 is cleared (step 151), and the CALL instruction and the RET instruction are determined.
- the CALL, RET, and RETN instructions are discriminated, and “CALL processing”, “RET processing”, and “RENT processing”, respectively. It has become.
- “To the CALL processing”, “to the RET processing”, and “to the RENT processing” are shown in the flowcharts of FIGS. 13, 14, and 15, respectively.
- the program code for determining the CALL, RET, and RETN instructions is as follows.
- MOV ECX, 0x000001DB; II MSR 0x01DB (LastBranchFromlp)
- CALL, RET, and RETN are determined by CALL_FOUND and RET.FOUND, respectively. Coded as RETN_FOUND.
- FIG. 13 shows the processing when the CALL instruction is executed.
- the execution of the CALL instruction is started (step 200)
- the address of the stack segment (CS) in the stack memory allocated to the CALL instruction is obtained (step 201).
- the stack point of the return address stored by the CALL instruction is obtained (step 202).
- the return address is obtained from the stack memory (step 203).
- the program code at this time is as follows.
- MOV AX, 0x001 B // Usermode Only
- KeRaiselrql (HIGH_LEVEL, &Oldlrql);
- PASO-STACK-UST StackList (PASO_STACK_LIST) gStackList [Threadld];
- FIG. 14 shows the processing when the RET instruction is executed.
- the execution of the RET instruction is started (step 250)
- the address of the stack segment (CS) of the stack memory allocated to the RET instruction is obtained (step 251).
- the stack pointer of the return address specified by the RET instruction is obtained (step 252).
- the return address is obtained from the stack memory (step 253).
- the program code at this time is as follows.
- the return address is the one registered in the stack recorder at the time of the CALL instruction corresponding to this RET instruction. However, if the return address has been tampered with, the stack recorder will be able to find the same address. In this case, the process proceeds to the process interruption processing (Terminate_VirusCodeO of the next code) (step 260). If the same address is found, one record is deleted from the stack recorder (step 255).
- the program code at this time is as follows.
- KeRaiselrql HGH—LEVEL, &Oldlrql
- PASO— STACK_LIST StackList (PASO_STACK_LIST) gStackList [Threadld];
- Terminate_VirusCode (Fromlp, Tolp, ExpectedRetlp);
- FIG. 15 shows processing when the RETN instruction is executed.
- execution of the RETN instruction starts (step 300) the RETN instruction is harmed.
- the address of the client (CS) is obtained (step 301). Then, the stack point of the return address specified by the RETN instruction is obtained (step 302). Then, the return address is obtained from the stack memory (step 303).
- the program code at this time is as follows.
- a search is made from the stack recorder as to whether there is the same value as the return address (step 304).
- the return address is the one registered in the stack recorder at the time of the CALL instruction corresponding to this RETN instruction. However, if the return address has been tampered with, the power of the stack recorder will not be able to find the same address. In this case, the process proceeds to the process interruption processing (Terminate_VirusCodeO of the next code) (step 310). Find the same address Then, one record is deleted from the stack recorder (step 305).
- the program code at this time is as follows.
- KeRaiselrql HGH—LEVEL, &Oldlrql
- PASO-STACK-LIST StackList (PASO_STACK_LIST) gStackList [Threadld];
- Terminate_VirusCode (Fromlp, Tolp, ExpectedRetlp);
- FIG. 16 shows a process when the JMP ESP process is executed.
- JMP ESP is an instruction necessary for, for example, a virus or the like invading via a network to execute the program code on the stack memory. Therefore, execution modules that use the JMPESP instruction that do not depend on the search result of the stack return address are rare and are prohibited.
- a process interruption process is performed (step 351). In the process interruption processing in steps 260, 310, and 351, the address of the instruction executed next to the RET and RETN instructions is obtained, and the address is rewritten to an invalid instruction (such as INT3). Continue the execution of the process and stop it with an illegal instruction.
- the program code at this time is as follows.
- MOV SS [EDX], AL
- the present invention is used in all fields where computer virus countermeasures, prevention of unauthorized intrusion from outside, and security are required. In particular, use it for systems that use computers, supercomputers, and servers connected to a network. It is used for e-government, military, and defense-related systems that require protection of personal information and security of electronic files. Also, it is preferable to use this function when detecting a defect of a program or use of an illegal code.
- FIG. 1 is a conceptual diagram showing an outline of the present invention.
- FIG. 2 is a conceptual diagram showing error detection due to a buffer overflow according to the present invention.
- FIG. 3 is a flowchart showing a procedure at the time of loading an executable file.
- FIG. 4 is a flowchart showing a procedure when executing an execution file.
- FIG. 5 is a diagram showing a structure of a memory.
- FIG. 6 is a diagram illustrating a main routine and a subroutine of a program.
- FIG. 7 is a diagram showing a structure of a stack memory.
- FIG. 8 is a flowchart showing a procedure of an initialization process when the driverware is started.
- FIG. 9 is a flowchart showing a procedure of registering a process generation callback.
- FIG. 10 is a flowchart showing a procedure for setting a hook for a thread generation event.
- FIG. 11 is a flowchart showing a processing flow when tracing a branch instruction such as CALL and RET.
- FIG. 12 is a flowchart showing a processing procedure of the CALLorJMP processing of FIG.
- FIG. 13 is a flowchart showing processing when a CALL instruction is executed.
- FIG. 14 is a flowchart showing processing when an RET instruction is executed.
- FIG. 15 is a flowchart showing a process when a RET instruction is executed.
- FIG. 16 is a flowchart showing the procedure of JPM ESP processing.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Description
Claims
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/570,502 US8042179B2 (en) | 2003-09-04 | 2004-09-03 | False code execution prevention method, program for the method, and recording medium for recording the program |
EP04772807A EP1662379A4 (en) | 2003-09-04 | 2004-09-03 | FALSE COORDINATE PROCEDURE AND PREVENTION PROGRAM |
JP2005513686A JP4518564B2 (ja) | 2003-09-04 | 2004-09-03 | 不正コード実行の防止方法、不正コード実行の防止用プログラム、及び不正コード実行の防止用プログラムの記録媒体 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003-312517 | 2003-09-04 | ||
JP2003312517 | 2003-09-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2005024630A1 true WO2005024630A1 (ja) | 2005-03-17 |
Family
ID=34269739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2004/012858 WO2005024630A1 (ja) | 2003-09-04 | 2004-09-03 | 不正コード実行の防止方法および防止プログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US8042179B2 (ja) |
EP (1) | EP1662379A4 (ja) |
JP (1) | JP4518564B2 (ja) |
KR (1) | KR100777938B1 (ja) |
CN (1) | CN1886728A (ja) |
WO (1) | WO2005024630A1 (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008083382A1 (en) * | 2006-12-29 | 2008-07-10 | Microsoft Corporation | Automatic vulnerability detection and response |
JP2010224908A (ja) * | 2009-03-24 | 2010-10-07 | Fujitsu Semiconductor Ltd | 情報処理装置およびデータ修復方法 |
JP4572259B1 (ja) * | 2009-04-27 | 2010-11-04 | 株式会社フォティーンフォティ技術研究所 | 情報機器、プログラム及び不正なプログラムコードの実行防止方法 |
US8141163B2 (en) * | 2007-07-31 | 2012-03-20 | Vmware, Inc. | Malicious code detection |
WO2015044993A1 (ja) * | 2013-09-24 | 2015-04-02 | 株式会社 エーティーティーコンサルティング | プロセッサ、処理装置、プログラム作成方法 |
JP2017123119A (ja) * | 2016-01-08 | 2017-07-13 | 株式会社デンソー | 電子制御装置 |
JPWO2021059478A1 (ja) * | 2019-09-27 | 2021-04-01 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7971255B1 (en) * | 2004-07-15 | 2011-06-28 | The Trustees Of Columbia University In The City Of New York | Detecting and preventing malcode execution |
JP3768516B1 (ja) * | 2004-12-03 | 2006-04-19 | 株式会社ソニー・コンピュータエンタテインメント | マルチプロセッサシステムとそのシステムにおけるプログラム実行方法 |
US7849444B2 (en) * | 2004-12-21 | 2010-12-07 | National Instruments Corporation | Test executive with buffer overwrite detection for parameters of user-supplied code modules |
US7607122B2 (en) * | 2005-06-17 | 2009-10-20 | Microsoft Corporation | Post build process to record stack and call tree information |
US7930733B1 (en) * | 2006-04-10 | 2011-04-19 | At&T Intellectual Property Ii, L.P. | Method and system for execution monitor-based trusted computing |
US20080148399A1 (en) * | 2006-10-18 | 2008-06-19 | Microsoft Corporation | Protection against stack buffer overrun exploitation |
FR2910144A1 (fr) * | 2006-12-18 | 2008-06-20 | St Microelectronics Sa | Procede et dispositif de detection errones au cours de l'execution d'un programme. |
CN101241464B (zh) * | 2007-02-05 | 2010-08-18 | 中兴通讯股份有限公司 | 一种检测堆栈帧破坏的方法 |
CN101295278B (zh) * | 2007-04-23 | 2010-08-11 | 大唐移动通信设备有限公司 | 定位被改写代码段所在进程的方法及装置 |
CN101414340B (zh) * | 2007-10-15 | 2015-12-02 | 北京瑞星信息技术有限公司 | 一种防止远程线程启动的方法 |
WO2009055914A1 (en) * | 2007-11-02 | 2009-05-07 | Klocwork Corp. | Static analysis defect detection in the presence of virtual function calls |
US8099636B2 (en) * | 2008-07-15 | 2012-01-17 | Caterpillar Inc. | System and method for protecting memory stacks using a debug unit |
CA2806368C (en) * | 2009-07-29 | 2019-04-30 | Reversinglabs Corporation | Portable executable file analysis |
US20120227033A1 (en) * | 2011-03-02 | 2012-09-06 | Lei Yu | Method and apparatus for evaluating software performance |
US8935674B2 (en) * | 2012-08-15 | 2015-01-13 | International Business Machines Corporation | Determining correctness conditions for use in static analysis |
US20140283060A1 (en) * | 2013-03-15 | 2014-09-18 | Oracle International Corporation | Mitigating vulnerabilities associated with return-oriented programming |
CN103514405B (zh) * | 2013-07-08 | 2016-08-10 | 北京深思数盾科技股份有限公司 | 一种缓冲区溢出的检测方法及系统 |
CN103559439A (zh) * | 2013-11-19 | 2014-02-05 | 浪潮(北京)电子信息产业有限公司 | 一种缓冲区溢出检测方法及系统 |
US9245110B2 (en) | 2013-12-17 | 2016-01-26 | International Business Machines Corporation | Stack entry overwrite protection |
US9703948B2 (en) * | 2014-03-28 | 2017-07-11 | Intel Corporation | Return-target restrictive return from procedure instructions, processors, methods, and systems |
CN105426752A (zh) * | 2015-11-24 | 2016-03-23 | 无锡江南计算技术研究所 | 缓冲区溢出保护方法 |
CN106203069B (zh) * | 2016-06-27 | 2019-10-15 | 珠海豹趣科技有限公司 | 一种动态链接库文件的拦截方法、装置及终端设备 |
US10540498B2 (en) * | 2016-08-12 | 2020-01-21 | Intel Corporation | Technologies for hardware assisted native malware detection |
US10481999B2 (en) | 2016-12-05 | 2019-11-19 | Microsoft Technology Licensing, Llc | Partial process recording |
US10467407B2 (en) * | 2017-03-30 | 2019-11-05 | Check Point Advanced Threat Prevention Ltd. | Method and system for detecting kernel corruption exploits |
US10613864B2 (en) | 2018-03-16 | 2020-04-07 | Texas Instruments Incorporated | Processor with hardware supported memory buffer overflow detection |
CN109033821A (zh) * | 2018-07-12 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种栈溢出攻击防护系统及方法 |
JP2022502723A (ja) * | 2018-10-18 | 2022-01-11 | スターナム リミテッドSternum Ltd. | スタック破損のエクスプロイトに対する中間コードファイルにおけるセキュリティ緩和手段の適用 |
US11182472B2 (en) * | 2019-09-30 | 2021-11-23 | Vmware, Inc. | Security in a computing environment by monitoring expected operation of processes within the computing environment |
CN112784261B (zh) * | 2021-01-04 | 2023-10-27 | 北京蓝军网安科技发展有限责任公司 | 用于程序运行的方法及相应的系统、计算机设备和介质 |
US11900154B2 (en) * | 2021-03-08 | 2024-02-13 | Dell Products L.P. | Enabling modern standby for unsupported applications |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02304635A (ja) * | 1989-05-19 | 1990-12-18 | Pfu Ltd | プログラム暴走検知方法 |
JPH09128267A (ja) * | 1995-10-31 | 1997-05-16 | Nec Corp | データ処理装置およびデータ処理方法 |
JP2001511271A (ja) * | 1997-01-15 | 2001-08-07 | シーメンス アクチエンゲゼルシヤフト | ソフトウェアプログラムの規定通りの実行を監視するための方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03175537A (ja) * | 1989-12-04 | 1991-07-30 | Nec Corp | デバッグ用マイクロプロセッサのエラー制御装置 |
JPH05216717A (ja) * | 1992-01-31 | 1993-08-27 | Nec Corp | デバッガのトレース機能 |
JPH09128277A (ja) * | 1995-10-27 | 1997-05-16 | Nec Software Ltd | 複数os搭載システムにおけるファイル管理方式 |
JPH11120028A (ja) * | 1997-10-13 | 1999-04-30 | Nec Corp | プログラム移植サポート方式 |
JP3339482B2 (ja) * | 1999-12-15 | 2002-10-28 | 日本電気株式会社 | 分散デバッグ装置及びデバッグ方法並びに制御プログラムを記録した記録媒体 |
JP3552627B2 (ja) * | 2000-02-04 | 2004-08-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体 |
US6915416B2 (en) * | 2000-12-28 | 2005-07-05 | Texas Instruments Incorporated | Apparatus and method for microcontroller debugging |
CA2345416C (en) * | 2001-04-27 | 2005-05-03 | Ibm Canada Limited-Ibm Canada Limitee | High performance debugging in a message flow environment |
US6947047B1 (en) * | 2001-09-20 | 2005-09-20 | Nvidia Corporation | Method and system for programmable pipelined graphics processing with branching instructions |
US7853803B2 (en) * | 2001-09-28 | 2010-12-14 | Verizon Corporate Services Group Inc. | System and method for thwarting buffer overflow attacks using encrypted process pointers |
US7243340B2 (en) * | 2001-11-15 | 2007-07-10 | Pace Anti-Piracy | Method and system for obfuscation of computer program execution flow to increase computer program security |
US20030126590A1 (en) * | 2001-12-28 | 2003-07-03 | Michael Burrows | System and method for dynamic data-type checking |
US6996677B2 (en) * | 2002-11-25 | 2006-02-07 | Nortel Networks Limited | Method and apparatus for protecting memory stacks |
-
2004
- 2004-09-03 CN CNA2004800289891A patent/CN1886728A/zh active Pending
- 2004-09-03 JP JP2005513686A patent/JP4518564B2/ja not_active Expired - Lifetime
- 2004-09-03 EP EP04772807A patent/EP1662379A4/en not_active Withdrawn
- 2004-09-03 WO PCT/JP2004/012858 patent/WO2005024630A1/ja active Application Filing
- 2004-09-03 US US10/570,502 patent/US8042179B2/en active Active
- 2004-09-03 KR KR1020067003788A patent/KR100777938B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02304635A (ja) * | 1989-05-19 | 1990-12-18 | Pfu Ltd | プログラム暴走検知方法 |
JPH09128267A (ja) * | 1995-10-31 | 1997-05-16 | Nec Corp | データ処理装置およびデータ処理方法 |
JP2001511271A (ja) * | 1997-01-15 | 2001-08-07 | シーメンス アクチエンゲゼルシヤフト | ソフトウェアプログラムの規定通りの実行を監視するための方法 |
Non-Patent Citations (4)
Title |
---|
COWAN C.: "Darpa Information Survivability Conference and Exposition, 2000, DISCE X '00, Proceedings Hilton Head, SC, USA 25-27 Jan. 2000, Las Alamitos, CA, USA, IEEE Comput. SOC", vol. 2, 25 January 2000, article "Buffer Overflows: Attacks and Defenses for the Vulnerability of the Decade", pages: 119 - 129 |
JUN XU ET AL.: "Architecture Support for Defending against Buffer-Overflow Attacks", CRHC TECHNICAL REPORT, July 2002 (2002-07-01), pages 1 - 18 |
See also references of EP1662379A4 |
SKADRON, E. ET AL.: "Improving Prediction for Procedure Returns with Re turn-Address-Stack Repair Mechanisms", MICRO-31. PROCEEDINGS OF THE 31ST. ANNUAL ACM/IEEE INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE, 30 November 1998 (1998-11-30) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008083382A1 (en) * | 2006-12-29 | 2008-07-10 | Microsoft Corporation | Automatic vulnerability detection and response |
US8453245B2 (en) | 2006-12-29 | 2013-05-28 | Microsoft Corporation | Automatic vulnerability detection and response |
US8141163B2 (en) * | 2007-07-31 | 2012-03-20 | Vmware, Inc. | Malicious code detection |
JP2010224908A (ja) * | 2009-03-24 | 2010-10-07 | Fujitsu Semiconductor Ltd | 情報処理装置およびデータ修復方法 |
JP4572259B1 (ja) * | 2009-04-27 | 2010-11-04 | 株式会社フォティーンフォティ技術研究所 | 情報機器、プログラム及び不正なプログラムコードの実行防止方法 |
JP2010257275A (ja) * | 2009-04-27 | 2010-11-11 | Fourteenforty Research Institute Inc | 情報機器、プログラム及び不正なプログラムコードの実行防止方法 |
WO2015044993A1 (ja) * | 2013-09-24 | 2015-04-02 | 株式会社 エーティーティーコンサルティング | プロセッサ、処理装置、プログラム作成方法 |
JP2017123119A (ja) * | 2016-01-08 | 2017-07-13 | 株式会社デンソー | 電子制御装置 |
JPWO2021059478A1 (ja) * | 2019-09-27 | 2021-04-01 | ||
WO2021059478A1 (ja) * | 2019-09-27 | 2021-04-01 | 日本電気株式会社 | 情報処理装置、情報処理方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体 |
JP7283552B2 (ja) | 2019-09-27 | 2023-05-30 | 日本電気株式会社 | 情報処理装置、情報処理方法、及び、プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20070101317A1 (en) | 2007-05-03 |
US8042179B2 (en) | 2011-10-18 |
KR100777938B1 (ko) | 2007-11-21 |
JPWO2005024630A1 (ja) | 2007-11-08 |
EP1662379A4 (en) | 2008-12-03 |
EP1662379A1 (en) | 2006-05-31 |
CN1886728A (zh) | 2006-12-27 |
JP4518564B2 (ja) | 2010-08-04 |
KR20060056998A (ko) | 2006-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2005024630A1 (ja) | 不正コード実行の防止方法および防止プログラム | |
US11106792B2 (en) | Methods and systems for performing a dynamic analysis of applications for protecting devices from malwares | |
RU2637997C1 (ru) | Система и способ обнаружения вредоносного кода в файле | |
US7996904B1 (en) | Automated unpacking of executables packed by multiple layers of arbitrary packers | |
Castro et al. | Fast byte-granularity software fault isolation | |
Guo et al. | A study of the packer problem and its solutions | |
US9275229B2 (en) | System to bypass a compromised mass storage device driver stack and method thereof | |
Volckaert et al. | Cloning your gadgets: Complete ROP attack immunity with multi-variant execution | |
Wojtczuk | Subverting the Xen hypervisor | |
Lanzi et al. | K-Tracer: A System for Extracting Kernel Malware Behavior. | |
US8510828B1 (en) | Enforcing the execution exception to prevent packers from evading the scanning of dynamically created code | |
US8104089B1 (en) | Tracking memory mapping to prevent packers from evading the scanning of dynamically created code | |
JP2018041438A5 (ja) | ||
US7284276B2 (en) | Return-to-LIBC attack detection using branch trace records system and method | |
Kawakoya et al. | Api chaser: Anti-analysis resistant malware analyzer | |
Böhne | Pandora’s bochs: Automatic unpacking of malware | |
WO2004075060A1 (ja) | コンピュータウィルス検出装置 | |
US8819822B1 (en) | Security method for detecting intrusions that exploit misinterpretation of supplied data | |
CN117725583A (zh) | 基于虚拟机自省的Linux恶意代码检测方法与系统 | |
Gupta et al. | Dynamic code instrumentation to detect and recover from return address corruption | |
Bacs et al. | System-level support for intrusion recovery | |
Shields | Anti-debugging–a developers view | |
Singh | Breaking the sandbox | |
Harbour | Stealth secrets of the malware ninjas | |
EP3293660A1 (en) | System and method of detecting malicious code in files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200480028989.1 Country of ref document: CN |
|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2005513686 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020067003788 Country of ref document: KR |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2004772807 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 2004772807 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2007101317 Country of ref document: US Ref document number: 10570502 Country of ref document: US |
|
WWP | Wipo information: published in national office |
Ref document number: 10570502 Country of ref document: US |