USO0H002196H

(19) United

States

(12) Statutory Invention Registration (10) Reg. No.: (43) Published:

Tester (54)

Jul. 3, 2007

Primary ExamineriDan Pihulic

METHOD FOR INTERCEPTING SPECIFIC SYSTEM CALLS IN A SPECIFIC APPLICATION FROM APPLICATIONS SPACE FOR SECURITY

(74) Attorney, Agent, or Firm%}unnison, McKay & Hodgson, L.L.P.; Lisa A. Norris

(57)

(75) Inventor: Jonathan Tester, Encinitas, CA (US)

ABSTRACT

One or more speci?ed system calls of a running process are trapped in kernel space from user space. While the process is stopped, information associated With the process is read and a security analysis is performed on the information to

(73) Assignee: Symantec Corporation, Cupertino, CA (Us)

determine Whether malicious code activity is detected, such

(21) Appl. No.: 10/956,716 Sep. 30, 2004 (22) Filed: (51) Int. Cl. G06F 12/14 (2006.01) (52) (58)

US H2196 H

as a buffer over?ow. If malicious code activity is detected,

protective action is taken, such as killing the speci?ed system call. Otherwise, if malicious code activity is not detected, the speci?ed system call is restarted. 15 Claims, 4 Drawing Sheets

US. Cl. ............................ .. 726/22; 726/23; 726/24 Field of Classi?cation Search ................. .. 726/22,

726/23, 24; 713/164, 165 See application ?le for complete search history.

(56)

A statutory invention registration is not a patent. It has the defensive attributes of a patent but does not have the enforceable attributes of a patent. No article or adver

References Cited

tisement or the like may use the term patent, or any term

U.S. PATENT DOCUMENTS 2006/0143707 A1 *

6/2006

Song et a1. ................. .. 726/22

* cited by examiner

suggestive of a patent, When referring to a statutory invention registration. For more speci?c information on the rights associated With a statutory invention registra tion see 35 U.S.C. 157.

100 HOST COMPUTER SYSTEM 102

PROCESSOR 108 L SECURITY APPLICATION 106

N ETWORK 126

OPERATING SYSTEM MEMORY 114

HO INTERFACE 110

KEY BOARD 1 16

HO PRINTER 120

MOUSE 118

DEVICE

NETWORK INTERFACE 138

DISPLAY DEVICE 122

PROCESSOR 134 DISPLAY DEVICE 132

MEMORY '1 36

SERVER COMPUTER SYSTEM

130

U.S. Patent

Jul. 3, 2007

Sheet 1 014

US H2196 H

100

FIG. 1

K HOST COMPUTER SYSTEM 102

PROCESSOR 108



SECURITY

NETWORK 126

APPLICATION 106

OPERATING SYSTEM 104

MEMORY114 I/O INTERFACE 110

KEYBOARD 116

PRINTER 120

MOusE 118

l/O DEVICE

NETWORK INTERFACE 13a

DISPLAY DEVICE 122

PROCEssOR 134 DISPLAY DEVICE 132 MEMORY ‘136

SERVER COMPUTER SYSTEM

130

U.S. Patent

Jul. 3, 2007

Sheet 2 of4

200

US H2196 H

202

FIG. 2

204 OPEN IPROC FILE

/

l

206

MODIFY CTL FILE

/

l ESTABLISH POLL

/

208

l STOP PROCESS

/

l READ DATA

/

210

212

214

MALICIOUS CODE DETECTED?

PROTECTIVE ACTION /

216 RESTART

U.S. Patent

Jul. 3, 2007

Sheet 3 of4

US H2196 H

FIG. 3 300

/

302

/ 308

security application 106 write to

.

lproc/250/ctl FORK and

.

mm P'd-25°

ENTRY for exec

V

/ 304

4_



USER SPACE

lproc flle system?le/

P'°°/25°/°"

,

KERNEL SPACE 306 /

pre_syscall

U.S. Patent

Jul. 3, 2007

Sheet 4 of4

US H2196 H

FIG. 4 400

/ 402 security application 106

poII/proc/250/ctl

/ 408 .

.

'md p'd'25o

F

/ 410

A

ftpd % / 404

USER SPACE 4—_

lproc ?le system

» KERNEL SPACE

/406 pre_syscall

US H2196 H 1

2

METHOD FOR INTERCEPTING SPECIFIC SYSTEM CALLS IN A SPECIFIC APPLICATION FROM APPLICATIONS SPACE FOR SECURITY

user space and to perform a security analysis on information

associated with a parent process of the speci?ed system call(s) for the presence of malicious code activity. In particular, the present invention utiliZes the application

debugging feature provided by many operating systems that allows the applications debugger to break on, also termed BACKGROUND OF THE INVENTION

herein trap, a system call from user space.

For purposes of description, the present invention is

1. Field of the Invention The present invention relates to the protection of com

described with reference to a Solaris operating system and

the /proc ?le system. However, the present invention is not

puter systems. More particularly, the present invention

limited to the present example, and can be used on other operating systems on which an applications debugger can be run. For example, gdb on Unix, Linux and Windows oper

relates to a method for intercepting calls in a running process from user space to allow security analysis to be performed.

2. Description of Related Art

ating systems traps system calls in the kernel space. The /proc ?le system is similar on Solaris and AIX operating

Most operating systems currently provide debugging support, such as through special debugging APIs

systems, but other operating system platforms may require

(Application Program Interfaces). Typically, a debugging

a port.

API allows a software developer to halt the execution of a running program from user space and to examine the state of the process, such as the variables and the stack, in order to

is a ?le system that provides access to the state of each

With reference to Solaris, generally, the /proc ?le system 20

identify and correct programming errors in the program code.

as a debugging API from user space. Herein the term user

space refers to application space that is external to the kernel

SUMMARY OF THE INVENTION In accordance with one embodiment of the invention, a method includes establishing a break upon entry into one or more speci?ed system calls of a process running in user space, wherein the break stops the one or more speci?ed

system calls in kernel space prior to execution. Upon the break, information associated with the process is dynami cally read, and a security analysis is performed on the information to determine whether malicious code activity is

25

30

detected.

If malicious code activity is detected, protective action is taken, such as killing the speci?ed system call. Otherwise, if malicious code activity is not detected, the speci?ed system call is restarted. Embodiments in accordance with the present invention can be used to protect privileged processes from malicious code attacks, such as bulfer over?ow attacks

process running on the Solaris operating system and serves

35

space. In the /proc ?le system, each running process is identi?ed using a PID (process identi?er). Debuggers, the /proc ?le system, user space, and kernel space are all terms well-known to those of skill in the art and so are only brie?y

discussed to avoid detracting from the principles of the invention. Referring generally, to FIG. 2, in one embodiment, a method includes opening a /proc ?le for a speci?ed process

that is running in user space (operation 204) and modifying the /proc ?le for the speci?ed process to break, i.e., stop execution, on entry to a speci?ed system call(s) (operation 206). A poll is established on the /proc ?le for the speci?ed (operation 208) to alert when the polls are set so that information associated with the speci?ed process can be

read once the speci?ed process is stopped. When the speci ?ed process is stopped on entry to the speci?ed system 40

or return to LIBC attacks.

call(s) (operation 210), the information associated with the speci?ed process is read (operation 212) and analyZed to

Embodiments in accordance with the present invention are best understood by reference to the following detailed

determine whether malicious code is detected in the process

description when read in conjunction with the accompany

activity is detected, protective action is taken (operation

ing drawings.

(operation 214). Upon a determination that malicious code 45

provided (operation 220). Otherwise, if a determination is made that malicious code activity is not detected, the trapped system call is restarted (operation 216).

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of a client-server system that includes a security application executing on a host computer system in accordance with one embodiment of the present inven tion. FIG. 2 illustrates a ?ow diagram of a process imple

50

sometimes called a client or user device, typically includes

with one embodiment of the invention. 55

modi?ed to break for a system call in accordance with one

embodiment of the invention. FIG. 4 illustrates a block diagram of a poll being set in accordance with one embodiment of the invention. Common reference numerals are used throughout the

a central processing unit (CPU) 108, hereinafter processor 108, an operating system 104, such as Solaris, an input/ output (I/O) interface 110, and a memory 114. In the present embodiment, operating system 104 includes a debugging interface which can break on a system call of a running

60

process from user space, for example, a /proc ?le system

debugging API.

drawings and detailed description to indicate like elements.

Host computer system 102 may further include standard devices like a keyboard 116, a mouse 118, a printer 120, and

DETAILED DESCRIPTION

Embodiments in accordance with the present invention utiliZe application debugging features of an operating sys tem to trap a speci?ed system call(s) in the kernel space from

In particular, FIG. 1 is a diagram of a client-server system 100 that includes a security application 106 executing on a host computer system 102 in accordance with one embodi

ment of the present invention. Host computer system 102,

mented by the security application of FIG. 1 in accordance FIG. 3 illustrates a block diagram of a /proc ?le being

218), such as killing or aborting the trapped system call. Optionally, a noti?cation of the protective action taken is

a display device 122, as well as, one or more standard 65

input/output (I/O) devices 124, such as a compact disk (CD) or DVD drive, ?oppy disk drive, or other digital or wave

form port for inputting data to and outputting data from host

US H2196 H

3

4

computer system 102. In one embodiment, security appli

application 106 when the ?le descriptors POLLWRNORM

cation 106 is loaded into host computer system 102 via I/O

and POLLPRI are set for the /proc/ctl ?le. Processing

device 124, such as from a CD, DVD or ?oppy disk

waits, e.g., sleeps, until the speci?ed system call is initiated, and from ESTABLISH POLL operation 208, processing

containing security application 106. In one embodiment, security application 106 is run as a daemon application.

transitions to a STOP PROCESS operation 210. In STOP PROCESS operation 210, when a break on the

In the present illustration, host computer system 102 is coupled to a server computer system 130 by a network 126.

speci?ed process is made on entry to the speci?ed system call, e.g., exec, the speci?ed process is stopped. From STOP PROCESS operation 210, processing transitions to a READ DATA operation 212.

Server computer system 130 typically includes a display device 132, a processor 134, a memory 136, and a network interface 138. Network 126 can be any network or network system that is of interest to a user. In various embodiments,

In READ DATA operation 212, once the process is

network interfaces 138 and I/O interface 110 include analog modems, digital modems, or a network interface card.

stopped and the poll conditions set, e.g., POLLWRNORM and POLLPRI are set and security application 106 is alerted, data is read from selected /proc ?les of the speci?ed process, such as the /proc//status and /proc//info ?les, e.g., /proc/250/status and /proc/250/info ?les. The following

In the present embodiment, security application 106 is stored in memory 114 of host computer system 102 and executed on host computer system 102. The particular type and con?guration of host computer system 102 and server

is an example of information available from the status ?le about a speci?ed process:

computer system 130 are not essential to this embodiment of

the present invention. More particularly, FIG. 2 illustrates a ?ow diagram of a

20

process 200 implemented by security application 106 in

typedef struct pstatus { mt pri?ags;

accordance with one embodiment of the invention. Refer

ring now to FIGS. 1 and 2 together, execution of security

application 106 by processor 108 results in the operations of process 200, in which, in one embodiment, a speci?ed process that is running on host computer system 102 is located by security application 106 from user space, and process 200 is entered at ENTER operation 202. In one embodiment, the speci?ed process is a privileged process, such as telnetd, however, other processes which are desirable to protect from malicious code activity can also be

speci?ed. For purposes of description it is assumed that the PID assigned this speci?ed process is 250. From ENTER operation 202, processing transitions to an OPEN /PROC FILE operation 204. In OPEN /PROC FILE operation 204, the /proc ?le for the

25

30

35

speci?ed running process, e.g., /proc/250, is opened and processing transitions from OPEN /PROC FILE operation 204 to a MODIFY CTL FILE operation 206.

40

In MODIFY CTL FILE operation 206, the ctl ?le of the

int pidit pidit pidit pidit idit idit

sigsetit uintptr t sizeit uintptr_t sizeit

/* ?ags (see below) */

prinwlp; pripid; prippid; pripgid; prisid; priaslwpid; priagentid;

/* /* /* /* /* /* /* prisigpend; /* pribrkbase; /* pribrksize; /* pr_stkbase; /* pristksize; /*

number of lwps in the process */ process id */ parent process id */ process group id */ session id */ lwp-id of the aslwp, if any */ lwp-id of the agent lwp, if any */ set of process pending signals */ virtual address of the process heap*/ size of the process heap, in bytes */ virtual address of the process stack */ size of the process stack, in bytes */

timestrucit

priutime;

/* process user cpu time */

timestrucit

pristime;

/* process system cpu time */

timestrucit

pricutime;

/* sum of children’s user times */

timestrucit

pricstime;

/* sum of children’s system times */

sigsetit

prisigtrace; /* set of traced signals */

?tsetit syssetit syssetit

pri?ttrace; /* set of traced faults */ prisysentry; /* set of system calls traced on entry */ prisysexit; /* set of system calls traced on exit */

lwpstatusit

prilwp;

/* status of the representative lwp */

} pstatusit;

/proc ?le for the speci?ed process, e.g., /proc/250/ctl, is modi?ed to break on a speci?ed system call(s). The ctl ?le is a write-only ?le to which control messages can be written to direct the operating system to change some aspect of the process’ state or control its behavior. To break on a system call during a running process, typically root permission is required. In one embodiment, a PCSENTRY structure is written to the /proc//ctl ?le of the speci?ed process. The PCSENTRY command message

Additionally, the folllowing is an example of information available for each thread of a speci?ed process: 45

typedef struct lwpstatus { short

priwhy;

/* reason for lwp stop, if stopped */

instructs a process to stop on entry to, i.e., break on, a

short

priwhat;

/* more detailed reason */

speci?ed system call(s). This command message changes

short siginfoit

pricursig; priinfo;

/* current signal, if any */ /* info associated with signal or fault */

sigsetit sigsetit struct

prilwppend; /* set of signals pending to the lwp */ prilwphold; /* set of signals blocked by the lwp */ priaction; /* signal action for current signal */

50

the /proc ctl ?le and modi?es the system calls for that process.

For example, in one embodiment, the /proc/250/ctl ?le is modi?ed by writing /proc/250/ctl FORK and ENTRY for

55

sigaction stackit uintptrit

exec such that process 250 will stop on entry to the system

call to exec, and the system call will be trapped in the kernel space prior to execution. In some embodiments, a PCSET with PRiFORK can be written to the /proc//ctl so that

all the children inherit the same debug ?ags and trap on the same system calls. From MODIFY CTL FILE operation 206, processing transitions to an ESTABLISH POLL opera tion 208. In ESTABLISH POLL operation 208, in one embodiment, a poll is established on the /proc ?le of the speci?ed system call. In one embodiment, the poll is set to alert security

prialtstack; pri

/* alternate signal stack info */ /* address of previous ucontext */

oldcontext; 60

short

prisyscall;

/* system call number (if in syscall) */

short

prinsysarg;

/* number of arguments to this syscall

int

prierrno;

/* errno for failed syscall */

long

prisysarg

/* arguments to this syscall */

long long

prirvall; prirval2;

/* primary syscall return value */ /* second syscall return value, if any */

char

priclname

/* scheduling class name */

[PRSYSARGS]; 65

[PRCLSZ];

US H2196 H

6

5

Once the data is read, from READ DATA operation 212, processing transitions to a MALICIOUS CODE

-continued uilon g

pritstamp; priinstr;

prgregsetit

prireg;

timestrucit

prfpregsetit prifpreg;

DETECTED check operation 214. In MALICIOUS CODE DETECTED check operation

/* real-time time stamp of stop */ /* current instruction */

/* general registers */

214, a security analysis is performed utilizing information

/* ?oating-point registers */

read from the /proc ?le system in operation 210, such as the

} lWpstatusit;

/proc ?les status and info, as Well as other /proc ?les. In one

Further, the following is an example of information available from the info ?le about a speci?ed process:

10

embodiment, a security analysis is performed on the infor mation read during operation 210 to determine Whether malicious code activity is detected. For example, in one embodiment, stack information is analyzed for buffer over ?oW as the stack should not have changed during a system call. Additionally, in one embodiment, return from LIBC

typedef struct psinfo {

attacks can be detected by opening the /proc//object

rnt int pidit pidit pidit pidit

pri?ag; prinlWp; pripid; prippid; pripgid; prisid;

/* /* /* /* /* /*

process flags */ number of lWps in the process */ process id */ process id of parent */ process id of process group leader */ session id */

uidit uidit gid t gid t

priuid; prieuid; prigid; priegid;

/* /* /* /*

real user id */ effective user id */ real group id */ effective group id */

uintptrit sizeit sizeit

priaddr; prisize; prirssize;

/* address of process */ /* size of process image in Kbytes */ /* resident set size in Kbytes */

devit

prittydev;

/* controlling tty device (or PRNODEV) */

uishort

pripctcpu;

/* % of recent cpu time used by all

uishort

pripctmem; /* % of system memory used by process

timestrucit

pristart;

?les and the preceding command from the return can be checked to determine if it is a call. Further, the return address can also be mapped to ensure it is associated With a mapped page. Upon a determination that malicious code activity is 20

TIVE ACTION operation 218.

In PROTECTIVE ACTION operation 218, protective action is taken, such as blocking completion of the trapped 25

system call. For example, in some embodiments, PCKILL or

PCSABORT (abort system call) are Written to the /proc ctl ?le or the process can be left in a STOP state for further

lWps */ /* process start time, from the epoch

detected (“YES”), processing transitions from MALICIOUS CODE DETECTED check operation 214 to a PROTEC

analysis. From PROTECTIVE ACTION operation 218, pro 30

*/

cessing optionally transitions to a NOTIFY operation 220, or directly to an EXIT operation 222 if optional NOTIFY operation 220 is not performed. In optional NOTIFY operation 220, a noti?cation of the

timestruc_t timestrucit

pr_time; prictime;

/* cpu time for this process */ /* cpu time for reaped children */

char

prifname

/* name of exec’ed ?le */

protective action taken is provided to a user or other

/* initial characters of arg list */

recipient, such as a system administrator. From optional

[PRFNSZ]; char

pripsargs

35

[PRARGSZ];

NOTIFY operation 220, processing transitions to EXIT

int

priWstat;

/* if zombie, the Wait ( ) status */

operation 222, With processing exiting method 200.

int uintptrit uintptrit

priargc; priargv; prienvp;

/* initial argument count */ /* address of initial argument vector */ /* address of initial environment vector */

Referring again to MALICIOUS CODE DETECTED check operation 214, upon a determination that malicious code is not detected (“NO”), processing transitions from

lWpsinfoit

prilWp;

/* information for representative lWp */

MALICIOUS CODE DETECTED check operation 214 to a

} psinfoit;

RESTART operation 216. In RESTART operation 216, the trapped system call, e.g., exec, is restarted, and the system call is alloWed to complete.

typedef struct lWpsinfo { int idit uintptrit uintptrit

pri?ag; prilWpid; priaddr; priWchan;

/* /* /* /*

lWp ?ags */ lWp id */ internal address of lWp */ Wait addr for sleeping lWp */

char char char char short

pristype; pristate; prisname; prinice; prisyscall;

/* /* /* /* /*

synchronization event type */ numeric lWp state */ printable character for pristate */ nice for cpu usage */ system call number (if in syscall) */

char

prioldpri;

/* pre-SVR4, lOW value is high priority

char

pricpu;

int

pripri;

uishort

pripctcpu;

*/ /* pre-SVR4, cpu usage for scheduling */ /* priority, high value = high priority */ /* % of recent cpu time used by this

timestrucit timestrucit

pristart; pritime;

/* lWp start time, from the epoch */ /* cpu time for this lWp */

char

priclname

/* scheduling class name */

lWp */

For example, the process can be restarted by Writing a PCRUN to the /proc//ctl ?le. From RESTART opera

tion 216, processing transitions to EXIT operation 222, With

processing exiting method 200. In an alternative embodiment, a noti?cation can also be 50

to the /proc ctl ?le. FIG. 3 illustrates a block diagram of a /proc ctl ?le being modi?ed to break for a system call of process 250 in accordance With one embodiment of the invention. In FIG. 55

[PRCLSZ]; char

priname

306 as an uncompleted system call, preisyscall. FIG. 4 illustrates a block diagram of a poll being met for the /proc ?le of process 250 in accordance With one embodi ment of the invention. In FIG. 4, at block 408 the running

/* processor Which last ran this lWp */

t

processoridi pribindpro;

/* processor to Which lWp is bound */

t

psetidit

pribindpset; /* processor set to Which lWp is bound */

} lWpsinfoit;

3, at block 302 security application 106, from user space, Writes a modi?cation to the /proc ctl ?le of running process PID 250 (identi?ed at block 308) to break at a system call to exec. At block 304, the /proc ctl ?le is modi?ed to break

at the speci?ed system call, e.g., exec, represented by block

/* name of system lWp */

[PRFNSZ]; processoridi prionpro;

received before the system call exits, by Writing PCSEXIT

65

process PID 250 initiates an ftpd at block 410 in user land that enters a system call for exec in the kernel space, e.g.,

presyscall, at block 406. As the /proc ctl ?le Was earlier modi?ed to break at the entry to the system call and a poll

US H2196 H

8

7 placed on the /proc ?le, at block 404, when the poll

While embodiments in accordance with the present inven tion have been described for a client-server con?guration, an embodiment of the present invention may be carried out

conditions are set, e.g., POLLWRNORM and POLLPRI are

set, security application 106 is alerted and information associated with the process 250 is read by security applica tion 106 and used for determining whether malicious code activity is detected.

using any suitable means and/or hardware con?guration involving a personal computer, a workstation, a portable device, or a network of computer devices. Other network

con?gurations other than client-server con?gurations, e.g., peer-to-peer, web-based, intranet, internet network

Method 200 provides one embodiment of the present invention where speci?ed system calls in a running process are controlled from user space. In particular, speci?ed pro cesses are stopped from running when trapped on the execute system call.

con?gurations, are used in other embodiments. Herein, a computer program product comprises a medium con?gured to store or transport computer readable code in accordance with an embodiment of the present invention.

Other desired security features can also be included in accordance with the present invention. For example, a process can be stopped from removing a ?le, and one particular process can be stopped from making one particu

Some examples of computer program products are

CD-ROM discs, DVDs, ROM cards, ?oppy discs, magnetic tapes, computer hard drives, servers on a network and

signals transmitted over a network representing computer readable code. As illustrated in FIG. 1, this medium may belong to the

lar system call having speci?ed parameters. Additionally, all children of a process can be set to be monitored. If inetd is

monitored, control can be gained over all the network system calls on a computer system, providing a simple NIDS

20

(Network Intrusion Detection System) solution. Further, using nice, a process can be throttled dynamically

by raising and lowering its priority. Using syscall., the system call number just stopped on can be read. Using argc, the number of arguments to the system call can be read. Using argv, the value of arguments to the system call can be read. Using envp, the environment vector can be read. Using stkbase and stksiZe, the status of the stack before and after

a particular system call can be read (return from LIBC). Using brkbase and brksiZe, the status of the heap can be read. Using prireg[RiPC], the return address can be

25

30

35

Thus, as described herein, in accordance with the

invention, speci?ed system calls of speci?ed processes are trapped in the kernel space from user space. Information associated with the process is read and a security analysis is performed on the information to determine whether mali cious code activity is detected, such as a buffer over?ow. If

Embodiments in accordance with the invention permit other user space system call interception to be by-passed. Further, embodiments in accordance with the invention work independent of kernel space patch levels and are

portable to other operating systems. The binary of the

40

45

be implemented in a wide variety of computer system

con?gurations. In addition, the security functionality could be stored as different modules in memories of different devices.

For example, security application 106 could initially be 50

stored in server computer system 130, and then as necessary,

a portion of security application 106 could be transferred to host computer system 102 and executed on host computer

system 102. Consequently, part of the security functionality would be executed on processor 134 of server computer 55

combination of the two.

Although security application 106 is referred to as an

system 130, and another part would be executed on proces sor 108 of host computer system 102. In view of this disclosure, those of skill in the art can implement various embodiments of the present invention in a wide-variety of

physical hardware con?gurations using an operating system

application, this is illustrative only. Security application 106

and computer programming language of interest to the user.

should be capable of being called from an application or the

In yet another embodiment, security application 106 is

operating system. In one embodiment, an application is generally de?ned to be any executable code. Moreover, those of skill in the art

executing one or more instructions by a processor.

assistants, server computers, or any desired combination of these devices that are interconnected to perform, the meth

In view of this disclosure, the security functionality in

refers to a volatile memory, a non-volatile memory, or a

operation takes some action, the action is the result of

another embodiment, host computer system 102 and/or server computer system 130 is comprised of multiple dif

accordance with one embodiment of present invention can

Referring again to FIG. 1, security application 106 is in

will understand that when it is said that an application or an

assistant, a server computer, an Internet appliance, or any other device that includes components that can execute the worm blocking functionality in accordance with at least one of the embodiments as described herein. Similarly, in

ods as described herein.

process does need to be modi?ed, and the target processor does not need to be recompiled. computer memory 114. As used herein, a computer memory

computer, a workstation, a two-way pager, a cellular

telephone, a digital wireless telephone, a personal digital

ferent computers, wireless devices, cellular telephones, digi tal telephones, two-way pagers, or personal digital

malicious code activity is detected, protective action is taken, such as killing the speci?ed system call. Otherwise, if malicious code activity is not detected, the speci?ed system call is restarted.

application 106 may be stored in memory 136 that is physically located in a location different from processor 108. Processor 108 should be coupled to memory 136. This could be accomplished in a client-server system, or alternatively via a connection to another computer via modems and

analog lines, or digital interfaces and a digital carrier line. More speci?cally, in one embodiment, host computer system 102 and/or server computer system 130 is a portable

checked to check for a buffer or heap over?ow. Using prireg[RiSP], the current stack pointer can be checked

(return libc).

computer system itself. However, the medium also may be

removed from the computer system. For example, security

65

stored in memory 136 of server computer system 130. Security application 106 is transferred over network 126 to memory 114 in host computer system 102. In this embodiment, network interface 138 and I/O interface 110 would include analog modems, digital modems, or a net work interface card. If modems are used, network 126

US H2196 H

9

10

includes a communications network, and security applica

determining whether malicious code activity is detected

tion 106 is downloaded via the communications network.

based upon a security analysis of said information. 6. The method of claim 5, further comprising:

This disclosure provides exemplary embodiments of the

wherein upon a determination that said malicious code

present invention. The scope of the present invention is not

limited by these exemplary embodiments. Numerous

activity is detected, taking protective action.

variations, whether explicitly provided by the speci?cation

7. The method of claim 6, further comprising: providing a noti?cation of said protective action. 8. The method of claim 5, further comprising:

or implied by the speci?cation or not, may be implemented by one of skill in the art in view of this disclosure. What is claimed is:

wherein upon a determination that said malicious code

1. A method comprising:

activity is not detected, restarting said speci?ed system call. 9. The method of claim 5, wherein said information is read from a /proc status ?le. 10. The method of claim 5, wherein said information is read from a /proc info ?le.

establishing a break upon entry into one or more speci?ed system calls of a process running in user space, wherein said break traps said one or more speci?ed system calls

in kernel space prior to execution; upon said break, dynamically reading information asso ciated with said process; and performing a security analysis on said information to determine whether malicious code activity is detected. 2. The method of claim 1, further comprising:

11. A system comprising:

20

wherein upon a determination that said malicious code

activity is detected, taking protective action. 3. The method of claim 1, further comprising: wherein upon a determination that said malicious code

activity is not detected, restarting said system call. 4. The method of claim 1, further comprising:

25

establishing a poll on said process.

5. A method comprising: opening a /proc ?le for a speci?ed process that is running modifying a ctl ?le of said /proc ?le to break on one or

means for providing a noti?cation of said protective action.

establishing a poll on said /proc ?le, said poll alerting dynamically reading information associated with said speci?ed process; and

13. The system of claim 11, further comprising: means for taking protective action.

14. The system of claim 13, further comprising:

more speci?ed system calls of said speci?ed process; when one or more poll conditions are set;

means for dynamically reading information associated with said speci?ed process; and means for determining whether malicious code activity is detected based upon a security analysis of said infor mation. 12. The system of claim 11, further comprising: means for establishing a poll on said /proc ?le.

30

on a computer system in user space;

upon said break when said poll conditions are set,

means for opening a /proc ?le for a speci?ed process that is running on a computer system in user space; means for modifying a ctl ?le of said /proc ?le to break on one or more speci?ed system calls of said speci?ed process;

35

15. The system of claim 11, further comprising: means for restarting said speci?ed system call. *

*

*

*

*

Method for intercepting specific system calls in a specific application ...

Sep 30, 2004 - (12) Statutory Invention Registration (10) Reg. No.: Tester. States .... a security application executing on a host computer system in accordance ...

806KB Sizes 1 Downloads 309 Views

Recommend Documents

Method for intercepting specific system calls in a specific application ...
Jul 3, 2007 - NETWORK 126. APPLICATION. 106. OPERATING. SYSTEM. 104. MEMORY114 ..... recipient, such as a system administrator. From optional .... physically located in a location different from processor 108. Processor 108 ...

System and method for obtaining and using location specific information
(73) Assignee: Apple Inc., Cupertino, CA (US). (21) App1.No.: 12/874,155. (22) Filed: Sep. 1, 2010. Related US. Patent Documents. Reissue of: (64) Patent No.:.

System and method for obtaining and using location specific information
Sep 1, 2010 - supports the coordinate entry or linked to an existing Web ..... positions to any GPS receiver that is within the communica tion path and is tuned ...

Application-Specific Memory Management in ... - Semantic Scholar
The Stata Center, 32 Vassar Street, Cambridge, Massachusetts 02139. Computer Science and ... ware mechanism, which we call column caching. Column caching ..... in part by the Advanced Research Projects Agency of the. Department of ...

Application-Specific Integrated Circuits - Addison Wesley Michael ...
Application-Specific Integrated Circuits - Addison Wesley Michael John Sebastian Smith.pdf. Application-Specific Integrated Circuits - Addison Wesley Michael ...

TWO-STAGE METHOD FOR SPECIFIC AUDIO ...
based data [1]. This brings ... a histogram pruning algorithm [4, 5], whose block diagram is shown in Fig. ... the quantization bits, just like the µ-law transformation.

Excess Specific Heats in Miscible Binary Blends with Specific ...
(hydroxy ether of bisphenol A) (phenoxy resin) with polyesters and polyethers, where specific interactions are supposed to play a role in miscibility, and blends with stronger hydrogen-bond interactions, such as poly(vinyl phenol)/poly(methyl methacr

a specific gravity index for minerats - RRuff
A. MURSKyI ern R. M. THOMPSON,. Un'fuersity of Bri.ti,sh Col,umb,in, Voncouver, Canad,a. This work was undertaken in order to provide a practical, and as far.

Application Specific Parallel Architectures
an evaluation system that can help the designer in the ... A system for ASA development has to be ...... two neighbors and the host, the 2N memory loads and.

Coupling-Driven Bus Design for Low-Power Application-Specific ...
wire-to-wire spacing is shrinking for higher densities and the as- ... ing wire widths. For example of metal 3 layer in typical 0.35 µm. CMOS process, the lateral component of capacitance reaches 5 times the sum of fringing and vertical components w

Special Breed Specific Instructions
Nov 12, 2008 - German Boxer, Bullmastiff, Great Dane, Norwich. Terrier, Skye Terrier, Staffordshire Bull Terrier,. West Highland White Terrier, German Spitz/. Pomeranian, Artesian-Norman Basset, Italian. Pointing Dog, Italian Wire-haired Pointing Dog

Specific Heat - Mr. Loyacano
sample of lithium will increase by 7.69 K when 684.4 J of energy is added to it. What is lithium's .... If the initial temperature of the spoons is −15°C and their specific heat is the same as iron ... Of the four bodies of water on Earth that are

SPECIFIC PERFOMANCE.pdf
thereto but has also acknowledged the execution of Ext.A2. agreement regarding the sale of his property in Ext.A3 letter. addressed to the plaintiff. It is discernible from Ext.A2. agreement coupled with Ext.A3 letter that the purchase price. Page 3

Organ-Specific Warnings - FDA
U.S. Department of Health and Human Services. Food and Drug Administration. Center for .... identity on the PDP, either as part of the ingredient name following active. (e.g., “ibuprofen (NSAID)”, or after ... an OTC monograph or an approved new

Specific Heat - Mr. Loyacano
∆t = 5.0 K. Unknown: m = ? kg. 2. Write down the specific heat equation, and .... Although there are no ice cubes in the freezer, there are several stainless steel ...

Site-specific synthesis and application of Deuterium-Labeled ... - Arkivoc
Dec 27, 2016 - 1974, 22, 2656-2661. 617 http://dx.doi.org/10.1248/cpb.22.2656. 618. 29. Seo, S.; Yoshimura, Y.; Satoh, T.; Uomori, A.; Takeda, K. i., J. Chem.

A Framework for Defining Domain-Specific Visual ...
For a large number of specialist application or problem domains there exists a natural ... Textual languages are based on a very simple common data structure .... they differ in the decorations of the graph elements and their visual attributes ...

Developing a Culturally Specific Emergency
allow access to e-mail and/or the internet. ... only five Deaf people reported using cell phones at home may mean they viewed cell phones as different from text ...

Site-specific synthesis and application of Deuterium-Labeled ... - Arkivoc
Dec 27, 2016 - Chemistry, Fried, J.; Edwards, J. A., Eds. Van Nostrand Reinhold Company: New York, 1972; Vol. 1, pp. 572. 145–221. 573. 8. Shinkyo, R.; Xu ...

Individual-Specific Uncertainty
against the wishes of business, even though for a broad discussion of the sources of status quo bias at the level of individual decision-making, and Tirnur.

Special Breed Specific Instructions
Nov 12, 2008 - American Cocker Spaniel, English Cocker Spa- niel, English Springer Spaniel, Labrador Retriever,. Sussex Spaniel, Cavalier King Charles Spaniel,. Chinese Crested Dog, Griffons, Shih-Tzu, Stan- dard Poodle, Borzoi, Irish Wolfhound. Prio

Negative specific heat in a quasi-2D generalized ...
ω = ∇×v, and combines them into a general vorticity field Ω = ∇×p where the generalized .... dsδ(NH0 −EN −pMN )δ(NR2 −MN ) is a normalizing factor called.

A timing-specific memory distortion effect in young ...
When the long-term memory demands of the task were reduced by providing .... simple mathematical model of performance provided a good fit to the data from child and ...... is specific to the representation and storage of duration information.

A Framework for Defining Domain-Specific Visual ...
In many problem domains visual notations are preferred by practitioners as they ... Domain-specific languages (DSL) are those that are tailored to a particular ...