The present invention relates to computer security, in general, and in particular to security for protecting System Services.
Of all the gadgets that improve human productivity and quality of life the computer, if not the most important one, is probably at the top of the list. Computers are used in homes, businesses, organizations (civic and religious) etc. Communication over the World Wide Web (WWW), hereafter termed the internet, is one of the many functions provided by computers. The internet is an open communications highway that anyone can access from any part of the world. It is also possible for anyone to launch malicious codes to collect information to which they are not entitled or to do harm to other computers. Because computers are coupled to the internet they are susceptible to be harmed by such codes that can, also, be launched from an intranet or even from the I/O terminals that are connected to the computers. Regardless of the source of the malicious code, there is a need to protect the computers.
System Services (also know as System Calls) are a bundle of software services that are usually provided in the Operating System of a computer. The System Calls or System Services relate to a set of instructions that perform a given function or action when invoke. They relieve the programmer from coding several lines of code that would be needed to perform the required function. The System Services or System Calls are a convenient and time saving feature of computer software, but they are also susceptible to harm by malicious code.
In a conventional computer system, most application programs run above the operating system in an area that is termed user space, and use these services to perform a given objective. The System Services are invoked when the application program issues a Call Request Message to the operating system. Most operating systems are provided with limited security to protect these System Services. The limited security may include checking the identification or privilege status of the requesting process or application program. It should be noted that application program, and process are used synonymously in this document. The persons (sometimes referred to as hackers) responsible for issuing malicious code are sophisticated, and can circumvent the current security system, and bring harm to the computers.
Another drawback with a conventional operating system is that the security checks in System Services are static in the sense that they are usually hard coded in the operating system, and require a new kernel whenever security checks need to be modified. Even in systems wherein changes, such as expanding the System Services, are permitted, the task of implementing such changes is very difficult. To effectuate such changes require shutting down the computer system, recompiling the operating system or part of it, and rebooting. This results in downtime that cannot be tolerated.
The need to expand System Services is even more important for Operating Systems that accommodate third party application programs. Some of these applications provide new functionalities, and commands which may also need new System Services to be functional. As a consequence, operating systems with fixed System Services routines are not suitable for use in these environments.
An embodiment of the invention provides a mechanism that restricts the invocation of selected System Services based on policies provided by an administrator. In order to achieve this objective, a data base including the System Services to be protected, and associated policies are generated, and stored in a memory. When an application invokes a System Service, the System Call Handler intercepts, and examines the credentials to determine the identity of the process or application program which invoked the System Service. The System Service which is invoked, and associated attributes are correlated with the data base. If a match is found, the requesting application is permitted to use the requested System Service. If a match is not found, use of the requested System Service is denied. Depending on the implementation of the security mechanism approval to use, and/or denial can be logged, and the administrator is notified of the event. In addition, a tool is provided to dynamically adjust the information (System Services and related policies) in the data base, and down load them, via a System Service Call, into the operating system. Preferably, the System Services, and related user defined Policies are arranged in a table format.
The above as well as additional features, and advantages of an embodiment of the present invention will be apparent to one having ordinary skill in the art in view of the drawings, specification, and claims set forth herein.
a depicts a schematic of the functional modules of the tool.
b depicts a schematic of the functional modules that the System Call that is utilized by the tool to download policies from storage into the Kernel, and/or Kernel Extensions.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Still referring to
In one embodiment of the present invention, the table carrying the System Services, and corresponding Policies are prepared, and stored on a disk, storage, such as nonvolatile storage 114 (
Still referring to
Still referring to
a depicts a graphical representation of functional modules of tool 700a which together with System Call 700b down load policies from storage into the Kernel, and/or Kernel Extensions. The tool 700a includes functional modules M702, M704, and M706. At module M702 the tool reads policies provided in the database. The tool, at module M 704, converts the policies into a format recognizable by the Kernel, and/or Kernel Extensions. The tool then invokes the System Call (
b shows a graphical representation of functional modules for System Call 700b which, upon invocation by tool 700a, downloads policies into the Kernel, and/or Kernel Extensions. System Call 700b includes modules M 708, M710, and M712. At module M708, System Call receives input policies from tool 700a. The kernel memory is updated with the received policies, at module M710. System Call then returns control to the tool (M712). This terminates the description of an embodiment of the invention.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.