WO2015044993A1 - プロセッサ、処理装置、プログラム作成方法 - Google Patents
プロセッサ、処理装置、プログラム作成方法 Download PDFInfo
- Publication number
- WO2015044993A1 WO2015044993A1 PCT/JP2013/075601 JP2013075601W WO2015044993A1 WO 2015044993 A1 WO2015044993 A1 WO 2015044993A1 JP 2013075601 W JP2013075601 W JP 2013075601W WO 2015044993 A1 WO2015044993 A1 WO 2015044993A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- area
- return
- address
- program
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000012545 processing Methods 0.000 title claims description 81
- 238000001514 detection method Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 4
- 238000003780 insertion Methods 0.000 description 15
- 230000037431 insertion Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000001174 ascending effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000010485 coping Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000001343 mnemonic effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2123—Dummy operation
Definitions
- the present invention relates to a technique for preventing execution of an illegal program due to a buffer overflow.
- a startup routine operates to allocate a stack area on the memory.
- the stack area is a memory area for storing temporarily used variables such as return values of functions.
- data other than the buffer area can be written.
- Data in the stack area may be overwritten. This is called buffer overflow.
- a buffer overflow attack is a process in which an illegal program indicated by the rewritten return address is executed by rewriting the return address stored in the stack area by intentionally causing a buffer overflow. The following techniques are disclosed as techniques for dealing with buffer overflows and buffer overflow attacks.
- Patent Document 1 describes an analysis method for collecting analysis information necessary for correcting a program that overflows a buffer and providing it to a program developer.
- Patent Document 2 describes a method of detecting a buffer overflow by assigning dummy memory areas to addresses before and after adjacent to the buffer memory area.
- the method of detecting buffer overflow by assigning dummy memory areas to the addresses before and after the buffer memory area described in Patent Document 2 is effective for attacks that continuously modify the memory area. There is a problem in certainty because it cannot cope with a sophisticated attack that rewrites the return address.
- the source program is analyzed before compilation, and processing is added to the program. Since this method depends on the high-level language used to create the program, it is necessary to deal with each high-level language individually. At the same time, there is a problem that it is necessary to follow the modification of high-level languages.
- the present invention has been made in view of such circumstances, and does not depend on a high-level language used in a program without performing a program correction work by a program developer for coping with it.
- An object of the present invention is to provide a technique for reliably preventing the execution of a complicated program.
- the present invention has a function of allocating a process space to a memory before executing a main process, and a process including a return instruction that can return a return destination to an arbitrary area of the process space.
- the processor to be executed means for acquiring first specification information for specifying the first area in the process space, first storage means for storing the first specification information, and return for detecting a return instruction in advance from the processing Whether the location specified by the address information is within the first area based on the first specification information, the command detection means, the means for acquiring the address information specifying the location returned by the return command And means for interrupting the processing when the determining means determines that the specified location is in the first area. And wherein the door.
- the present invention is characterized in that the first storage means includes a register.
- the present invention is characterized in that the first area is in a process space and is an area other than a text area or a shared library.
- the present invention is characterized in that the first area is in a process space and is a stack area.
- the present invention is a processing device including a processor having the above characteristics, the memory, and a communication unit that enables communication between the processor and the memory.
- the present invention has a function of allocating a process space to a memory before executing a main process, and a process including a return instruction that can return a return destination to an arbitrary area of the process space.
- a method for creating, using a computer a program executable by a method to be performed by a processor, a step of obtaining first specific information for specifying a first area in the process space; and the first specific information
- a method of creating a program comprising: a step of causing the processor to suspend the processing when it is determined that it is within an area; and a step of rewriting the return instruction so that the computer performs the processing.
- the step of converting the executable program into an assembly language by the computer and the step of rewriting the return instruction in the rewriting step are performed in an assembly language
- the step of converting the converted executable program into an executable format is included.
- the present invention it is possible to reliably prevent an illegal program from being executed due to a buffer overflow without performing a program correction work by a program developer for coping and without depending on a high-level language used in the program. it can.
- FIG. 1 is a logical schematic diagram of a process space when a program written in the C language runs on a computer.
- FIG. 2 is a schematic diagram of a stack area showing an example in which a return address is rewritten to an illegal program code address due to a buffer overflow.
- FIG. 3 is an example of a memory map using Linux (registered trademark) as an example.
- FIG. 4 is a block diagram showing the configuration of the processing apparatus. (Example 1, Example 2)
- FIG. 5 is a conceptual diagram of a kernel that links hardware and an application program in a general computer.
- FIG. 6 is a flowchart showing a procedure for acquiring the text area and the start address and end address of the shared library in the startup routine. (Example 1)
- FIG. 1 is a logical schematic diagram of a process space when a program written in the C language runs on a computer.
- FIG. 2 is a schematic diagram of a stack area showing an example in which a return address is rewritten to an illegal
- FIG. 7 is a flowchart illustrating a procedure of processing performed by the arithmetic unit.
- Example 1 is a flowchart showing a procedure for acquiring the start address and end address of the stack area in the startup routine.
- Example 2 is a flowchart showing a procedure for acquiring the start address and end address of the stack area in the startup routine.
- Example 2 is a flowchart showing a procedure of processing performed by the arithmetic unit.
- FIG. 10 is a block diagram illustrating the configuration of the processing apparatus.
- Example 3 Example 4
- FIG. 11 is a flowchart illustrating a procedure in which the memory map acquisition unit acquires the start address and end address of the text area and the shared library.
- Example 3 FIG.
- FIG. 12 is a flowchart illustrating a procedure of processing performed by the disassembler, the instruction insertion unit, and the assembler.
- FIG. 13 is a flowchart illustrating a procedure of processing performed by the disassembler, the instruction insertion unit, and the assembler.
- FIG. 14 is a flowchart showing a procedure by which the memory map acquisition unit acquires the start address and end address of the stack area.
- FIG. 15 is a flowchart illustrating a procedure of processing performed by the disassembler, the instruction insertion unit, and the assembler.
- FIG. 1 is a logical schematic diagram of a process space when a program written in the C language runs on a computer.
- the process space refers to a virtual address space allocated to a process by the operation system processing in the processor.
- the address space is a memory space that can be accessed by a series of memory addresses.
- a text area, a static area, a heap area, a shared library, and a stack area are secured from a low address to a high address.
- a program translated in machine language is stored in the text area.
- Static variables such as global variables are stored in the static area.
- the heap area is used for dynamic management of memory.
- the shared library stores a library that is used in common by a plurality of programs.
- the stack area stores data temporarily used in the function such as a return value of the function or a local variable.
- FIG. 2 is a schematic diagram of a stack area showing an example in which a return address is rewritten to an illegal program code address due to a buffer overflow.
- a buffer area is reserved to store data temporarily used by functions such as local variables. However, if data is written exceeding the upper limit of the buffer area by the program operation, the buffer area is not the buffer area. The data in the stack area is overwritten. This is called buffer overflow.
- buffer overflow attack Many data stored in the buffer area are read from outside the program, such as input from a file, input via a network, and input from a keyboard. As shown in Fig. 2, the return address stored in the stack area is rewritten by intentionally causing a buffer overflow by reading data including an illegal program from the outside into the buffer area exceeding the upper limit of the buffer area. This is called buffer overflow attack.
- the return address Since the destination indicated by the return address is an executable program or library, the return address must be a text area or a shared library range as described in FIG. On the other hand, the return address rewritten by the buffer overflow attack indicates an area where the program should not exist.
- FIG. 2 shows an example in which an illegal program is overwritten in a stack area where a program should not exist.
- the start address and end address of each area in the process space are acquired from the information shown in the memory map.
- the memory map indicates a file in which data structure information indicating a process state is mapped in the kernel of the operating system. For example, in Linux (registered trademark), the memory map exists for each process ID under the / proc directory.
- FIG. 3 is an example of a memory map in Linux (registered trademark).
- a start address is indicated by symbol a
- an end address is indicated by symbol b.
- the stack area is set as a continuous area from a certain address to the highest address (symbol f).
- the text area (symbol d) and the shared library (symbol e) can be distinguished from each other because the access authority (symbol c) is rx (readable, writable, executable). Since the accurate start address and end address of each area of the process space can be obtained by the memory map, the certainty of processing is improved.
- Linux registered trademark
- the operation system may be based on another operation system capable of acquiring a memory map.
- the present embodiment is a processing apparatus in which an area other than a text area or a shared library is a first area.
- a memory map is acquired by executing a startup routine, and a text area acquired from the information indicated in the memory map and a plurality of dedicated register sets for storing the start address and end address of the shared library are provided, and processing means are implemented.
- a processor having an internal instruction.
- the internal instruction is a machine language instruction that implements the processing flow shown in FIG. 7 corresponding to a mnemonic for a return instruction (RET instruction) in assembly language.
- RET instruction return instruction in assembly language
- FIG. 4 is a block diagram illustrating a configuration of the processing apparatus 1.
- the processor 100 includes a dedicated register set 122 including a plurality of sets of a start register 123 that stores a start address of a text area and a shared library and an end register 124 that stores an end address.
- the processing device 1 can include an external input / output device, a storage device, a display device, and the like.
- FIG. 5 is a conceptual diagram of a kernel that links hardware and an application program in a general computer.
- the startup routine is a kind of kernel, and is linked to the execution file of the application program before the main processing of the application program is executed to set the stack and initialize the library.
- the present embodiment is characterized in that the text area on the memory and the start address and end address of the shared library are acquired from the information shown in the memory map by the startup routine before execution of the main process of the application program.
- FIG. 6 is a flowchart showing a procedure by which the processing apparatus 1 shown in FIG. 4 acquires the text region and the start address and end address of the shared library by the startup routine.
- the text information and the start address and end address of the shared library are the first specific information.
- the processing device 1 acquires a memory map of the execution file of the application program by executing a startup routine linked to the execution file of the application program before executing the main process of the application program (step S100).
- the memory map is sorted in ascending order from the lowest starting address to the highest address (step S110).
- the memory map includes the information shown in FIG.
- the determination is performed in order from the top of the memory map (step S120).
- the access authority is rx (readable, not writable, executable)
- it is determined as a text area or a shared library (step S130)
- a start register 123 in the same dedicated register set 122 has a start address and an end address.
- end register 124 respectively (step S140).
- the register set is the first storage means.
- FIG. 7 is a flowchart showing a procedure of processing performed by the arithmetic unit 120 in the processor 100 shown in FIG. Compared with the processing of the RET instruction that allows the return destination to return to an arbitrary area in the process space, the processing of the portion indicated by a in FIG. 7 is added to the processing of the RET instruction in this embodiment.
- an application program loaded from an external input / output device or storage device is stored in a text area of the memory 150 as an execution instruction translated into a machine language.
- an execution instruction is acquired by the fetch 111, and control information is sent to the arithmetic unit 120 via the decoder 112.
- the arithmetic unit 120 detects a RET instruction, it acquires a return address indicated as an operand of the RET instruction.
- step S200 After the arithmetic unit 120 of the processing device 1 shown in FIG. 4 obtains the return address indicated as the operand of the RET instruction (step S200), the start register 123 and the end register 124 in the same dedicated register set 122 are obtained. It is determined whether or not it is within the range of the start address and end address stored in (step S220).
- step S250 If the return address is specified as a text area or shared library, the program jumps to the return address (step S250). If the return address is specified as an area other than the text area or shared library (first area), the program Execution is forcibly terminated (step S240). When the return address is pointed to by a text area or an area other than the shared library (first area), the return address is in the range from the start address of the text area to the end address, but from the start address of the shared library to the end address. It is a case that is not a range.
- the program when the return address is illegally rewritten, the program is executed if the return address is pointed to by an area other than the text area or the shared library (first area).
- the program By forcibly terminating the program, it is possible to prevent an illegal program from being executed due to a buffer overflow. Further, since it is performed by the internal processing of the processor, high-speed processing is possible, correction work for each application program is unnecessary, and it does not depend on a high-level language used for creating the program.
- the present embodiment is a processing apparatus in which the stack area is the first area.
- An internal instruction for executing the processing means having a set of dedicated registers for storing the start address and end address of the stack area acquired from the information shown in the memory map by acquiring a memory map by executing a startup routine It is characterized by including the processor which has.
- the internal instruction is a machine language instruction that implements the processing flow shown in FIG. 9 corresponding to a mnemonic for the RET instruction.
- FIG. 4 is a block diagram illustrating a configuration of the processing apparatus 1.
- the processor 100 includes a dedicated register set 122 including a set of a start register 123 that stores a start address of a stack area and an end register 124 that stores an end address. Since the stack area is one continuous area, a single dedicated register set 122 is sufficient.
- the processing device 1 can include an external input / output device, a storage device, a display device, and the like.
- This embodiment is characterized in that the start address and the end address of the stack area on the memory are acquired from the information shown in the memory map by the start-up routine before executing the main process of the application program.
- FIG. 8 is a flowchart showing a procedure by which the processing apparatus 1 shown in FIG. 4 acquires the start address and end address of the stack area by the startup routine.
- the processing device 1 acquires a memory map of the execution file of the application program by executing a startup routine linked to the execution file of the application program before executing the main process of the application program (step S300).
- the memory map is sorted in ascending order from the low start address to the high start address (step S310).
- the memory map includes the information shown in FIG. The determination is made in order from the top of the memory map (step S320).
- step S330 Since the stack area is set as a continuous area up to the highest address, the last line of the memory map is referred to (step S330).
- the end address is stored in the end register 124 (step S330).
- the register set is the first storage means.
- the processing device 1 acquires the stack size upper limit value of the process (step S350). In the case of Linux (registered trademark), it can be confirmed by an instruction such as limit-a (when the shell script is “bash”).
- a difference value (stack area lower limit value) of the stack size upper limit value from the end address of the stack area obtained by the hexadecimal arithmetic operation is stored in the start register 123 as the stack area start address (step S360).
- the stack area lower limit value and the end address of the stack area are the first specifying information.
- FIG. 9 is a flowchart showing a procedure of processing performed by the arithmetic unit 120 in the processor 100 shown in FIG. Compared with the processing of the RET instruction that can return to an arbitrary area in the process space, the processing of the portion indicated by a in FIG. 9 is added to the processing of the RET instruction in this embodiment.
- an application program loaded from an external input / output device or storage device is stored in a text area of the memory 150 as an execution instruction translated into a machine language.
- an execution instruction is acquired by the fetch 111, and control information is sent to the arithmetic unit 120 via the decoder 112.
- the arithmetic unit 120 detects a RET instruction, it acquires a return address indicated as an operand of the RET instruction.
- Step S400 After the arithmetic unit 120 of the processing device 1 obtains the return address indicated as the operand of the RET instruction (step S400), it determines whether the values of the start address and the return address stored in the start register 123 are large or small ( Step S410) is performed. If the return address is greater than or equal to the lower limit value of the stack area, it is determined that the stack area is indicated.
- step S430 If the return address is smaller than the lower limit value of the stack area, the program jumps to the return address (step S430). If the return address is greater than or equal to the lower limit value of the stack area, the program execution is forcibly terminated (step S420).
- the return address when the return address is illegally rewritten, if the return address is pointed to the stack area, the program execution is forcibly terminated to cause an illegal operation due to a buffer overflow. Execution of a simple program can be prevented. Further, since it is performed by the internal processing of the processor, high-speed processing is possible, correction work for each application program is unnecessary, and it does not depend on a high-level language used for creating the program. Compared to the first embodiment, it is limited to the case where an illegal program is written in the stack area, but it has a feature that a single dedicated register set is sufficient.
- This embodiment is a processing apparatus in which an area other than a text area or a shared library is a first area.
- This embodiment is characterized in that an instruction is added to the assembly code of an application program so as to prevent the execution of an illegal program before the return address is illegally rewritten due to a buffer overflow.
- FIG. 10 is a block diagram showing the configuration of the processing apparatus 3 according to this embodiment.
- the processing device 3 includes a processor 300, a memory map acquisition unit 310, a disassembler 320, a return instruction detection unit 330, an instruction insertion unit 340, an assembler 350, and a memory 360.
- the memory map acquisition unit 310 acquires the start address and end address of the text area and the shared library from the information indicated in the memory map.
- the text information and the start address and end address of the shared library are the first specific information.
- the return command detection unit 330 detects a RET command.
- the instruction insertion unit 340 includes a return address acquisition instruction for acquiring a return address indicated as an operand of the RET instruction, a determination instruction for determining which area on the memory the return address indicates, and a return If the address indicates an illegal area in the memory, a forced termination instruction is inserted to prevent unauthorized program execution.
- FIG. 11 is a flowchart illustrating a procedure in which the memory map acquisition unit 310 acquires the text region and the start address and end address of the shared library in the processing device 3.
- the processing device 3 acquires a memory map of the execution file of the application program to be executed (step S500).
- the memory map is sorted in ascending order from the lowest starting address to the highest address (step S510).
- the memory map includes the information shown in FIG.
- the determination is made in order from the top of the memory map (step S520).
- the access authority is rx (readable, not writable, executable)
- it is determined as a text area or a shared library (step S720)
- an area for storing a return address is secured in the memory 360 and started.
- the address and end address are stored (step S540).
- the memory is the first storage means.
- FIG. 12 and FIG. 13 are flowcharts showing a procedure of processes performed by the disassembler 320, the return instruction detection unit 330, the instruction insertion unit 340, and the assembler 350.
- the processing device 3 disassembles the target application program by the disassembler 320 (step S600). Thereafter, the return command detection unit 330 determines whether the command is a RET command (step S620). If it is a RET instruction, the process is transferred to the instruction insertion unit 340.
- the processing device 3 inserts the following three instructions before the RET instruction of the assembly code of the application program in the instruction insertion unit 340.
- a return address acquisition instruction for acquiring a return address indicated as an operand of the RET instruction is inserted (step S630).
- a determination instruction for determining whether the return address indicates a text area or a shared library is inserted (step S640). Whether the return address indicates a text area or a shared library is determined by whether the return address is in the range of the text area stored in the area for storing the return address and the start address and end address of the shared library by.
- a forced termination command for forcibly terminating the program is inserted (step S650).
- the return address When the return address is pointed to by a text area or an area other than the shared library (first area), the return address is in the range from the start address of the text area to the end address, but from the start address of the shared library to the end address. It is a case that is not a range.
- the text area is expanded by inserting an instruction by the instruction insertion unit 340 according to the procedure shown in FIG. 12 (steps S640 and S650). For this reason, as shown in FIG. 13, after the assembly code into which the instruction is inserted is made into an execution file by assembling (step S700), the assembly code that has been disassembled again (step S740) is obtained from the memory map obtained again. The update is performed with the start address and end address of the text area (step S750). Thereafter, the program is assembled by the assembler 350 to complete an execution file of the target application program (step S760).
- the program execution is forcibly terminated if the return address is not designated by either the text area or the shared library.
- the program is converted into a program that can prevent an illegal program from being executed due to a buffer overflow.
- the processing apparatus automatically adds instructions to the assembly code, the application program does not need to be individually corrected, and does not depend on a high-level language used for creating the program.
- the present embodiment is a processing apparatus in which the stack area is the first area.
- FIG. 10 is a block diagram showing the configuration of the processing apparatus 3 according to this embodiment.
- the processing device 3 includes a processor 300, a memory map acquisition unit 310, a disassembler 320, a return instruction detection unit 330, an instruction insertion unit 340, an assembler 350, and a memory 360.
- the memory map acquisition unit 310 acquires the start address and end address of the stack area from the information shown in the memory map.
- the return command detection unit 330 detects a RET command.
- the instruction insertion unit 340 includes a return address acquisition instruction for acquiring a return address indicated as an operand of the RET instruction, a determination instruction for determining which area on the memory the return address indicates, and a return If the address indicates an illegal area in the memory, a forced termination instruction is inserted to prevent unauthorized program execution.
- FIG. 14 is a flowchart illustrating a procedure in which the memory map acquisition unit 310 acquires the start address and the end address of the stack area in the processing device 3.
- the processing device 3 acquires a memory map of the execution file of the application program to be executed (step S800).
- the memory map is sorted in ascending order from the lowest starting address to the highest address (step S810).
- the memory map includes the information shown in FIG.
- the determination is made in order from the top of the memory map (step S820). Since the stack area is set as a continuous area up to the highest address, the last line of the memory map is referred to (step S830).
- An area for storing the return address is secured in the memory 360, and the end address is stored (step S840).
- the processing device 3 acquires the stack size upper limit value of the process (step S850).
- it can be confirmed by an instruction such as limit-a (when the shell script is “bash”).
- An area for storing the difference value (stack area lower limit value) of the stack size upper limit value from the end address of the stack area obtained by the hexadecimal calculation is secured in the memory 360 and stored (step S860).
- the memory is the first storage means. The reason why the start address shown in the memory map is not stored in the area for storing the return address as it is is that the size of the stack area is dynamically changed but not changed beyond the upper limit value.
- the stack area lower limit value and the end address of the stack area are the first specifying information.
- FIG. 15 is a flowchart showing a procedure of processing performed by the disassembler 420, the instruction insertion unit 430, and the assembler 440.
- the processing device 3 disassembles the target application program by the disassembler 420 (step S900). Thereafter, the return command detection unit 330 determines whether the command is a RET command (step S920). If it is a RET instruction, the process is transferred to the instruction insertion unit 430. In the processing device 3, the instruction insertion unit 430 inserts the following three instructions before the RET instruction of the assembly code of the application program. First, a return address acquisition instruction for acquiring a return address indicated as an operand of the RET instruction is inserted (step S930).
- a determination instruction for determining whether the return address indicates the stack area is inserted (step S940). Whether or not the return address indicates the stack area is determined that the return address indicates the stack area if the return address is greater than or equal to the lower limit value of the stack area. Next, if the return address indicates the stack area, a forced termination instruction for forcibly terminating the program is inserted (step S950). As a result, if the return address indicates an illegal area in the memory, execution of an illegal program is prevented in advance.
- the application program when the return address is illegally rewritten, if the return address is pointed to in the stack area, the application program is forcibly terminated. By adding, illegal program execution due to buffer overflow can be prevented in advance.
- the processing apparatus automatically adds instructions to the assembly code, the application program does not need to be individually corrected, and does not depend on a high-level language used for creating the program. Compared to the third embodiment, it is limited to the case where an illegal program is written in the stack area, but has a feature that the update process is fast because the execution size of the program is small.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
Description
また意図的にバッファオーバーフローを生じさせることによりスタック領域に記憶されたリターンアドレスを書き換えることで、書き換えられたリターンアドレスで指示される不正なプログラムを実行させることをバッファオーバーフロー攻撃という。
バッファオーバーフローやバッファオーバーフロー攻撃に対処する技術として次のような技術が開示されている。
加えて、プログラム開発者によるプログラムの修正作業が適宜必要であるとの課題がある。
加えて、コンパイルの前にソースプログラムを解析して処理をプログラムに追加するが、このような方法はプログラムの作成に使用される高級言語に依存するために高級言語ごと個別に対応が必要であるとともに高級言語の改変にも追従する必要があるとの課題がある。
図1は、C言語により記述されたプログラムがコンピュータ上で動作する場合のプロセス空間の論理的な模式図である。プロセス空間とは、アドレス空間のうちプロセッサ内でのオペレーションシステムの処理によってプロセスに割り当てられた仮想的なアドレス空間をいう。また、アドレス空間とは、一連のメモリアドレスによってアクセス可能なメモリ空間をいう。図1に示すように、プロセス空間は低位アドレスから高位アドレスへ、テキスト領域、静的領域、ヒープ領域、共有ライブラリ、スタック領域が確保される。テキスト領域には、機械語で翻訳されたプログラムが格納される。静的領域には、グローバル変数などの静的変数が格納される。ヒープ領域は、メモリの動的管理で用いられる。共有ライブラリには、複数のプログラムが共通して利用するライブラリが格納される。スタック領域には、関数の戻り値やローカル変数などの関数で一時的に使用されるデータが格納される。
なお、ここではC言語によりプログラムが記述された例を示したが、C言語と同様のメモリ操作を行う他の言語によって記述された場合も同じである。
一方、バッファオーバーフロー攻撃によって書き換えられたリターンアドレスは本来プログラムが存在すべきではない領域を指示している。本来プログラムが存在すべきではないスタック領域に不正なプログラムが上書きされて実行される例を図2に示す。
メモリマップによってプロセス空間の各領域の正確な開始アドレスと終了アドレスを得ることができるために処理の確実性が向上する。
以下、実施例では、オペレーションシステムとしてLinux(登録商標)を例として説明するが、メモリマップが取得できる他のオペレーションシステムによるものであってもよい。
内部命令は、アセンブリ言語のよるリターン命令(RET命令)にニーモニックに対応する図7に示す処理フローを実施する機械語命令である。なお、以下、実施例の記述においては、アセンブリ言語のよるリターン命令をRET命令と記述する。
処理装置1は、図示しないが外部との入出力装置や記憶装置や表示装置などを含むことができる。
図5は、一般的なコンピュータにおいてハードウェアとアプリケーションプログラムを結び付けるカーネルの概念図である。例えば、アプリケーションプログラムがプロセッサにプログラムの実行を指示する際には、システムコールによってカーネルに処理が渡り、処理が終了すると処理を戻す(exit)。スタートアップルーチンはカーネルの一種で、アプリケーションプログラムの主処理の実行前にアプリケーションプログラムの実行ファイルにリンクされてスタックの設定やライブラリの初期化などを行う。
本実施例は、スタートアップルーチンによって、アプリケーションプログラムの主処理の実行前にメモリマップに示される情報からメモリ上のテキスト領域と共有ライブラリの開始アドレスと終了アドレスを取得されることを特徴とする。
図6は、図4で示される処理装置1がスタートアップルーチンによりテキスト領域と共有ライブラリの開始アドレスと終了アドレスを取得する手順を示すフローチャートである。本実施例では、テキスト領域と共有ライブラリの開始アドレスと終了アドレスが第1特定情報である。
処理装置1は、アプリケーションプログラムの主処理の実行前にアプリケーションプログラムの実行ファイルにリンクされたスタートアップルーチンを実行することで、アプリケーションプログラムの実行ファイルのメモリマップを取得する(ステップS100)。メモリマップは開始アドレスの低位から高位へ昇順にソートする(ステップS110)。
メモリマップには図3で示された情報が含まれている。メモリマップの先頭から順に判定を行う(ステップS120)。アクセス権限がr-x(読込可、書込不可、実行可)の場合にテキスト領域又は共有ライブラリと判定し(ステップS130)、開始アドレスと終了アドレスを同一の専用レジスタセット122にある開始レジスタ123と終了レジスタ124にそれぞれ格納する(ステップS140)。本実施例では、レジスタセットが第1記憶手段である。
図4で示される処理装置1において、外部との入出力装置や記憶装置からロードされたアプリケーションプログラムは機械語に翻訳された実行命令としてメモリ150のテキスト領域に格納される。プロセッサ100の制御ユニット110では、フェッチ111により実行命令が取得されデコーダ112を経て演算ユニット120へ制御情報が送られる。この際、演算ユニット120がRET命令を検出した場合、RET命令の被演算子として指示されるリターンアドレスを取得する。
図4で示される処理装置1の演算ユニット120が、RET命令の被演算子として指示されるリターンアドレスを取得(ステップS200)した後、同一の専用レジスタセット122にある開始レジスタ123と終了レジスタ124に格納されている開始アドレスと終了アドレスの範囲かどうかの判定(ステップS220)を行う。
リターンアドレスの指示先がテキスト領域又は共有ライブラリである場合はリターンアドレスにジャンプ(ステップS250)し、リターンアドレスの指示先がテキスト領域又は共有ライブラリ以外の領域(第1の領域)の場合はプログラムの実行を強制的に終了する(ステップS240)。リターンアドレスの指示先がテキスト領域又は共有ライブラリ以外の領域(第1の領域)の場合とは、リターンアドレスがテキスト領域の開始アドレス以上終了アドレス以下の範囲でも共有ライブラリの開始アドレス以上終了アドレス以下の範囲でもない場合である。
また、プロセッサの内部処理で行うために高速な処理が可能であるとともに、アプリケーションプログラム個別の修正作業が不要であり、プログラムの作成に使用される高級言語に依存しない。
内部命令は、RET命令にニーモニックに対応する図9に示す処理フローを実施する機械語命令である。
処理装置1は、図示しないが外部との入出力装置や記憶装置や表示装置などを含むことができる。
図8は、図4で示される処理装置1がスタートアップルーチンによりスタック領域の開始アドレスと終了アドレスを取得する手順を示すフローチャートである。
処理装置1は、アプリケーションプログラムの主処理の実行前にアプリケーションプログラムの実行ファイルにリンクされたスタートアップルーチンを実行することで、アプリケーションプログラムの実行ファイルのメモリマップを取得する(ステップS300)。メモリマップは開始アドレスの低位から高位へ昇順にソートする(ステップS310)。
メモリマップには図3で示された情報が含まれている。メモリマップの先頭から順に判定を行う(ステップS320)。スタック領域は最高位アドレスまでの連続した領域として設定されるためにメモリマップの最終行を参照する(ステップS330)。終了アドレスを終了レジスタ124に格納する(ステップS330)。本実施例では、レジスタセットが第1記憶手段である。
処理装置1は、当該プロセスのスタックサイズ上限値を取得する(ステップS350)。Linux(登録商標)の場合はulimit-a(シェルスクリプトがbashの場合)などの命令で確認することができる。16進数の演算により得たスタック領域の終了アドレスからスタックサイズ上限値の差分値(スタック領域下限値)を開始レジスタ123にスタック領域の開始アドレスとして格納する(ステップS360)。
メモリマップに示された開始アドレスをそのまま開始レジスタ123に格納しないのはスタック領域のサイズは動的に変更されるが上限値をこえて変更されることはないためである。本実施例では、スタック領域のスタック領域下限値と終了アドレスが第1特定情報である。
図4で示される処理装置1において、外部との入出力装置や記憶装置からロードされたアプリケーションプログラムは機械語に翻訳された実行命令としてメモリ150のテキスト領域に格納される。プロセッサ100の制御ユニット110では、フェッチ111により実行命令が取得されデコーダ112を経て演算ユニット120へ制御情報が送られる。この際、演算ユニット120がRET命令を検出した場合、RET命令の被演算子として指示されるリターンアドレスを取得する。
処理装置1の演算ユニット120が、RET命令の被演算子として指示されるリターンアドレスを取得(ステップS400)した後、開始レジスタ123に格納されている開始アドレスとリターンアドレスの値の大小について判定(ステップS410)を行う。リターンアドレスがスタック領域下限値よりも大きい又は等しいならばスタック領域を指示していると判定する。
リターンアドレスがスタック領域下限値よりも小さければリターンアドレスにジャンプ(ステップS430)し、リターンアドレスがスタック領域下限値よりも大きい又は等しいならばプログラムの実行を強制的に終了する(ステップS420)。
また、プロセッサの内部処理で行うために高速な処理が可能であるとともに、アプリケーションプログラム個別の修正作業が不要であり、プログラムの作成に使用される高級言語に依存しない。
実施例1と比べると、不正なプログラムがスタック領域に書き込まれている場合に限定されるが、専用レジスタセットが一組で足りるとの特徴を有する。
メモリマップ取得部310は、メモリマップに示される情報からテキスト領域と共有ライブラリの開始アドレスと終了アドレスを取得する。本実施例では、テキスト領域と共有ライブラリの開始アドレスと終了アドレスが第1特定情報である。
リターン命令検出部330は、RET命令を検出する。
命令挿入部340は、RET命令の被演算子として指示されるリターンアドレスを取得するためのリターンアドレス取得命令、リターンアドレスがメモリ上のいずれの領域を指示しているか判定するための判定命令、リターンアドレスがメモリ上の不正な領域を指示している場合には不正なプログラムの実行を未然に阻止する強制終了命令を挿入する。
処理装置3は、逆アセンブラ320によって対象となるアプリケーションプログラムを逆アセンブルする(ステップS600)。
その後、リターン命令検出部330ではRET命令かを判定する(ステップS620)。RET命令ならば命令挿入部340へ処理を渡す。
まず、RET命令の被演算子として指示されるリターンアドレスを取得するリターンアドレス取得命令を挿入(ステップS630)する。
次に、リターンアドレスがテキスト領域又は共有ライブラリを指示しているかを判定する判定命令を挿入(ステップS640)する。
リターンアドレスがテキスト領域又は共有ライブラリを指示しているかの判定は、リターンアドレスがリターンアドレスを保存するための領域に格納されているテキスト領域及び共有ライブラリの開始アドレスと終了アドレスの範囲かどうかの判定による。
次に、リターンアドレスがテキスト領域又は共有ライブラリを指示していなければプログラムを強制的に終了する強制終了命令を挿入(ステップS650)する。リターンアドレスの指示先がテキスト領域又は共有ライブラリ以外の領域(第1の領域)の場合とは、リターンアドレスがテキスト領域の開始アドレス以上終了アドレス以下の範囲でも共有ライブラリの開始アドレス以上終了アドレス以下の範囲でもない場合である。
また、処理装置が、自動的にアセンブリコードへの命令追加を行うために、アプリケーションプログラム個別の修正作業が不要であり、プログラムの作成に使用される高級言語に依存しない。
メモリマップ取得部310は、メモリマップに示される情報からスタック領域の開始アドレスと終了アドレスを取得する。
リターン命令検出部330は、RET命令を検出する。
命令挿入部340は、RET命令の被演算子として指示されるリターンアドレスを取得するためのリターンアドレス取得命令、リターンアドレスがメモリ上のいずれの領域を指示しているか判定するための判定命令、リターンアドレスがメモリ上の不正な領域を指示している場合には不正なプログラムの実行を未然に阻止する強制終了命令を挿入する。
処理装置3は、実行しようとするアプリケーションプログラムの実行ファイルのメモリマップを取得する(ステップS800)。メモリマップは開始アドレスの低位から高位へ昇順にソートする(ステップS810)。メモリマップには図3で示された情報が含まれている。メモリマップの先頭から順に判定を行う(ステップS820)。スタック領域は最高位アドレスまでの連続した領域として設定されるためにメモリマップの最終行を参照する(ステップS830)。リターンアドレスを保存するための領域をメモリ360に確保したうえで終了アドレスを格納する(ステップS840)。
次に、処理装置3は、当該プロセスのスタックサイズ上限値を取得する(ステップS850)。Linux(登録商標)の場合はulimit-a(シェルスクリプトがbashの場合)などの命令で確認することができる。16進数の演算により得たスタック領域の終了アドレスからスタックサイズ上限値の差分値(スタック領域下限値)を保存するための領域をメモリ360に確保したうえで格納する(ステップS860)。本実施例では、メモリが第1記憶手段である。
メモリマップに示された開始アドレスをそのままリターンアドレスを保存するための領域に格納しないのはスタック領域のサイズは動的に変更されるが上限値をこえて変更されることはないためである。本実施例では、スタック領域のスタック領域下限値と終了アドレスが第1特定情報である。
処理装置3は、逆アセンブラ420によって対象となるアプリケーションプログラムを逆アセンブルする(ステップS900)。
その後、リターン命令検出部330ではRET命令かを判定する(ステップS920)。RET命令ならば命令挿入部430へ処理を渡す。
処理装置3は、命令挿入部430ではアプリケーションプログラムのアセンブリコードのRET命令の前に次の3つの命令を挿入する。
まず、RET命令の被演算子として指示されるリターンアドレスを取得するリターンアドレス取得命令を挿入(ステップS930)する。
次に、リターンアドレスがスタック領域を指示しているかを判定する判定命令を挿入(ステップS940)する。
リターンアドレスがスタック領域を指示しているかの判定は、リターンアドレスがスタック領域下限値よりも大きい又は等しいならばリターンアドレスがスタック領域を指示していると判定する。
次に、リターンアドレスがスタック領域を指示していればプログラムを強制的に終了する強制終了命令を挿入(ステップS950)する。これにより、リターンアドレスがメモリ上の不正な領域を指示している場合には不正なプログラムの実行を未然に阻止する。
また、処理装置が、自動的にアセンブリコードへの命令追加を行うために、アプリケーションプログラム個別の修正作業が不要であり、プログラムの作成に使用される高級言語に依存しない。
実施例3と比べると、不正なプログラムがスタック領域に書き込まれている場合に限定されるが、プログラムの実行サイズが小さいので更新処理が速いとの特徴を有する。
100 プロセッサ
110 制御ユニット
111 フェッチ
112 デコード
120 演算ユニット
121 汎用レジスタ
122 専用レジスタセット
123 開始レジスタ
124 修了レジスタ
125 演算器
150 メモリ
3 処理装置
300 プロセッサ
310 メモリマップ取得部
320 逆アセンブラ
330 リターン命令検出部
340 命令挿入部
350 アセンブラ
Claims (7)
- 主処理実行の前にメモリにプロセス空間を割り当てる機能を有し、戻り先が前記プロセス空間の任意の領域に戻ることができるリターン命令を含む処理を行うプロセッサにおいて、
前記プロセス空間内の第1の領域を特定する第1特定情報を取得する手段と、
前記第1特定情報を記憶する第1記憶手段と、
前記処理からリターン命令を予め検出するリターン命令検出手段と、
前記リターン命令によって戻される所を特定するアドレス情報を取得する手段と、
前記第1特定情報に基づき、前記アドレス情報により特定される所が前記第1の領域内にあるか否かを判定する手段と、
前記判定する手段が、前記特定される所が前記第1の領域内にあると判定した場合に、前記処理を中断する手段と、
を備えるプロセッサ。 - 前記第1記憶手段は、レジスタを含むこと
を特徴とする請求項1に記載のプロセッサ。 - 前記第1の領域は、プロセス空間内であって、テキスト領域又は共有ライブラリ以外の領域であること
を特徴とする請求項1又は請求項2に記載のプロセッサ。 - 前記第1の領域は、プロセス空間内であって、スタック領域であること
を特徴とする請求項1又は請求項2に記載のプロセッサ。 - 請求項1から請求項4のいずれか1項に記載のプロセッサと、
前記メモリと、
前記プロセッサ及び前記メモリの間を通信可能にする通信手段と、
を備える処理装置。 - 主処理実行の前にメモリにプロセス空間を割り当てる機能を有し、戻り先が前記プロセス空間の任意の領域に戻ることができるリターン命令を含む処理を行うプロセッサに行わせる方法が実行可能なプログラムを、コンピュータを用いて作成する方法において、
前記プロセス空間内の第1の領域を特定する第1特定情報を取得するステップと、
前記第1特定情報を記憶するステップと、
前記処理からリターン命令を予め検出するステップと、
前記リターン命令によって戻される所を特定するアドレス情報を取得するステップと、
前記第1特定情報に基づき、前記アドレス情報により特定される所が前記第1域内にあるか否かを判定するステップと、
前記判定する手段が、前記特定される所が前記第1の領域内にあると判定した場合に、前記プロセッサが前記処理を中断するステップと、
を前記プロセッサに行わせるように、前記コンピュータが前記リターン命令を書き換えるステップを含む、
プログラム作成方法。 - 前記書き換えるステップの前に、前記実行可能なプログラムを前記コンピュータがアセンブリ言語に変換するステップと、
前記書き換えるステップにおいて、前記リターン命令を書き換えるステップは、アセンブリ言語において行われ、
前記書き換えるステップの後に、変換された前記実行可能なプログラムを実行形式に変換するステップと、
を含むことを特徴とする請求項6に記載のプログラム作成方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/892,568 US20160300056A1 (en) | 2013-09-24 | 2013-09-24 | Processor, Processing Device, and Method for Creating Program |
JP2015517519A JP5777843B1 (ja) | 2013-09-24 | 2013-09-24 | プロセッサ、処理装置、プログラム作成方法 |
PCT/JP2013/075601 WO2015044993A1 (ja) | 2013-09-24 | 2013-09-24 | プロセッサ、処理装置、プログラム作成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/075601 WO2015044993A1 (ja) | 2013-09-24 | 2013-09-24 | プロセッサ、処理装置、プログラム作成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2015044993A1 true WO2015044993A1 (ja) | 2015-04-02 |
Family
ID=52742207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2013/075601 WO2015044993A1 (ja) | 2013-09-24 | 2013-09-24 | プロセッサ、処理装置、プログラム作成方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160300056A1 (ja) |
JP (1) | JP5777843B1 (ja) |
WO (1) | WO2015044993A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107667372A (zh) * | 2015-06-26 | 2018-02-06 | 英特尔公司 | 用于保护影子栈的处理器、方法、系统和指令 |
US11029952B2 (en) | 2015-12-20 | 2021-06-08 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US11176243B2 (en) | 2016-02-04 | 2021-11-16 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
CN112988624B (zh) * | 2015-06-26 | 2024-10-29 | 英特尔公司 | 用于保护影子栈的处理器、方法、系统和指令 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10904291B1 (en) * | 2017-05-03 | 2021-01-26 | Hrl Laboratories, Llc | Low-overhead software transformation to enforce information security policies |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11161548A (ja) * | 1997-11-28 | 1999-06-18 | Nec Corp | 暴走検知機能付きコンピュータ |
WO2005024630A1 (ja) * | 2003-09-04 | 2005-03-17 | Science Park Corporation | 不正コード実行の防止方法および防止プログラム |
JP2013131157A (ja) * | 2011-12-22 | 2013-07-04 | Fourteenforty Research Institute Inc | プログラム、情報機器、及び不正アクセス検出方法 |
JP2013196512A (ja) * | 2012-03-21 | 2013-09-30 | Ntt Data Corp | 変換装置、変換方法、変換プログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155741B2 (en) * | 2002-05-06 | 2006-12-26 | Symantec Corporation | Alteration of module load locations |
US7716495B2 (en) * | 2003-12-31 | 2010-05-11 | Microsoft Corporation | Protection against runtime function attacks |
US20080120604A1 (en) * | 2006-11-20 | 2008-05-22 | Morris Robert P | Methods, Systems, And Computer Program Products For Providing Program Runtime Data Validation |
US9176754B2 (en) * | 2008-07-16 | 2015-11-03 | Google Inc. | Method and system for executing applications using native code modules |
US8561198B2 (en) * | 2010-05-07 | 2013-10-15 | Mcafee, Inc. | Detection of malicious system calls |
-
2013
- 2013-09-24 JP JP2015517519A patent/JP5777843B1/ja active Active
- 2013-09-24 WO PCT/JP2013/075601 patent/WO2015044993A1/ja active Application Filing
- 2013-09-24 US US14/892,568 patent/US20160300056A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11161548A (ja) * | 1997-11-28 | 1999-06-18 | Nec Corp | 暴走検知機能付きコンピュータ |
WO2005024630A1 (ja) * | 2003-09-04 | 2005-03-17 | Science Park Corporation | 不正コード実行の防止方法および防止プログラム |
JP2013131157A (ja) * | 2011-12-22 | 2013-07-04 | Fourteenforty Research Institute Inc | プログラム、情報機器、及び不正アクセス検出方法 |
JP2013196512A (ja) * | 2012-03-21 | 2013-09-30 | Ntt Data Corp | 変換装置、変換方法、変換プログラム |
Non-Patent Citations (1)
Title |
---|
HIROAKI ETO ET AL.: "propolice: Improved Stack-smashing Attack Detection", TRANSACTIONS OF INFORMATION PROCESSING SOCIETY OF JAPAN, vol. 43, no. 12, 15 December 2002 (2002-12-15), pages 4034 - 4041 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107667372A (zh) * | 2015-06-26 | 2018-02-06 | 英特尔公司 | 用于保护影子栈的处理器、方法、系统和指令 |
CN112988624A (zh) * | 2015-06-26 | 2021-06-18 | 英特尔公司 | 用于保护影子栈的处理器、方法、系统和指令 |
US11656805B2 (en) | 2015-06-26 | 2023-05-23 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
CN112988624B (zh) * | 2015-06-26 | 2024-10-29 | 英特尔公司 | 用于保护影子栈的处理器、方法、系统和指令 |
US11029952B2 (en) | 2015-12-20 | 2021-06-08 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US11663006B2 (en) | 2015-12-20 | 2023-05-30 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US12001842B2 (en) | 2015-12-20 | 2024-06-04 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US11176243B2 (en) | 2016-02-04 | 2021-11-16 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
US11762982B2 (en) | 2016-02-04 | 2023-09-19 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
Also Published As
Publication number | Publication date |
---|---|
JP5777843B1 (ja) | 2015-09-09 |
JPWO2015044993A1 (ja) | 2017-03-02 |
US20160300056A1 (en) | 2016-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10353687B2 (en) | Application virtualization | |
CN107563201B (zh) | 基于机器学习的关联样本查找方法、装置及服务器 | |
JP6469028B2 (ja) | オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法 | |
JP5777843B1 (ja) | プロセッサ、処理装置、プログラム作成方法 | |
US20140359773A1 (en) | Intra stack frame randomization for protecting applications against code injection attack | |
US20160274878A1 (en) | Methods and systems for removing plt stubs from dynamically linked binaries | |
US20080222622A1 (en) | Isolating, managing and communicating with user interface elements | |
EP2985716B1 (en) | Information processing device and identifying method | |
KR101837337B1 (ko) | 네이티브코드에서 기본 블록들 간의 모든 상대주소 점프를 간접 점프로 변환하여 분석도구의 cfg 생성을 방해하는 방법 및 장치 | |
US20180052667A1 (en) | Emulation device, emulation method, and recording medium storing emulation program | |
US9367686B1 (en) | System and method for antivirus checking of native images of software assemblies | |
US8769498B2 (en) | Warning of register and storage area assignment errors | |
KR20220113724A (ko) | 서브필드 최소 및 최대 클램핑을 갖는 콘텐트 주소 지정 가능한 메모리 | |
CN112182516A (zh) | 基于relro安全保护的检测方法、终端及存储介质 | |
JP6827244B1 (ja) | 監査装置、監査方法、監査プログラムおよび監査システム | |
JP6541912B2 (ja) | 情報処理装置およびアクセス管理プログラム | |
JP2006048186A (ja) | 動的コンパイラの生成コードを保護する言語処理系 | |
JP5820754B2 (ja) | 変換装置、変換方法、変換プログラム | |
KR101225577B1 (ko) | 어셈블리 언어 코드의 분석 장치 및 방법 | |
CN112541188B (zh) | 阻止应用程序代码被静态分析的方法及装置 | |
US20130318509A1 (en) | Generating object code from a conjoined assembler directive | |
CN113760345A (zh) | 一种应用程序生成方法、装置、设备和存储介质 | |
US20170139828A1 (en) | Out-of-range reference detection device, method, and recording medium | |
WO2017125711A1 (en) | A method for allocating memory | |
JP2001273150A (ja) | プログラム変換装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2015517519 Country of ref document: JP Kind code of ref document: A |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 13894063 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 14892568 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 13894063 Country of ref document: EP Kind code of ref document: A1 |