Solidifying the executable software set of a computer

Information

  • Patent Grant
  • 8561051
  • Patent Number
    8,561,051
  • Date Filed
    Wednesday, December 22, 2010
    15 years ago
  • Date Issued
    Tuesday, October 15, 2013
    12 years ago
  • Inventors
  • Original Assignees
  • Examiners
    • Zand; Kambiz
    • Sanders; Stephen
    Agents
    • Patent Capital Group
Abstract
System and method for solidifying (or “freezing”) the set of software and configuration data available for execution on a computer. Any additional software installed on the computer after the solidification process will not execute, regardless of whether the installation is initiated or otherwise performed by a person with administrative privilege. The ability to allow new or modified software to execute on the computer rests with an integrity server separate from and outside of the solidified computer. The solidification of software and configuration data proceeds on a level of granularity selectable by the integrity server and any operators thereof.
Description
BACKGROUND

1. Field


Invention relates generally to computer systems, and in particular to fixing the set of software available for execution on a computer.


2. Related Art


The set of software available for execution on a computer is generally dynamic and modifiable, even when such modification is not desirable. Restricting the ability of users or administrators of a computer to install and remove software or to modify configuration of the existing software is enforced with passwords or verbal and written policies and guidelines. However, when passwords are used, possessors of administrative passwords generally have access beyond their immediate responsibilities.


Accordingly, there is a need for a technique that allows the solidification (or “freezing”) of the set of software available for execution on a computer, wherein the software is solidified according to a granular policy, and wherein the ability to change such a policy resides outside of the solidified computer.


SUMMARY

System and method for solidifying (or “freezing”) the set of software and configuration data available for execution on a computer. Any additional software installed on the computer after the solidification process will not execute, regardless of whether the installation is initiated or otherwise performed by a person with administrative privilege. The ability to allow new or modified software to execute on the computer rests with an integrity server separate from and outside of the solidified computer. The solidification of software and configuration data proceeds on a level of granularity selectable by the integrity server and any operators thereof.





BRIEF DESCRIPTION OF DRAWINGS


FIG. 1 is a block diagram illustrating an architecture for solidifying an executable software set of a computer, according to an embodiment of the present invention.



FIG. 2 is a block diagram illustrating a mapping table comprising one or more name space translations corresponding to one or more interfaces, according to an embodiment of the present invention.



FIG. 3 is a block diagram illustrating a name space translation indicating a forward translation from an original name space to a translation name space, as well as a corresponding reverse translation, according to an embodiment of the present invention.



FIG. 4 is a block diagram illustrating an example set of possible states for a solidified computer, according to an embodiment of the present invention.



FIG. 5 is a block diagram illustrating a name space translation indicating a forward translation T from an original name space to a translation name space, as well as a corresponding reverse translation T1, according to an embodiment of the present invention.



FIG. 6 is a flow diagram illustrating a method for executing a piece of software on a solidified computer, according to an embodiment of the present invention.





DETAILED DESCRIPTION

The following serves as a glossary of terms as used herein:


Computer: Any computing system comprising an operating system providing a set of resources for use by one or more pieces of software for execution on the computing system.


Software: Any set of instructions for execution on a computer. A piece of software may use one or more services or resources as provided by the computer through one or more interfaces.


Interface: A language, protocol or other boundary for providing a service or making available a resource to a piece of software on a computer. An interface comprises a name space, knowledge of which is needed for successful usage of the interface. For a given interface to a service or resource, an implementation of the service or resource fulfills requests made through the interface. One example of an interface comprises an Application Programming Interface (API) such as a system call interface of an operating system, wherein the name space comprises system call names or system call addresses, and the implementation comprises the portion of the operating system implementing the actual system calls. Another example of an interface comprises a set of function calls to a library, wherein the name space comprises function names or function addresses, and the implementation comprises the actual library code implementing the functions. Other interface examples include language APIs (such as a PERL API, Java API, PHP API, shell script APIs, etc.), database APIs, an interface to a file system of a computer (wherein the name space comprises a set of file names), and any interface to a container of data.


Invention operates in combination with a computer's operating system in order to solidify (or “freeze”) the set of software available for execution on the computer. Any software, modified or installed on the computer after the solidification process, cannot be executed on the computer regardless of whether the modification or installation was initiated or otherwise performed by a person with administrative privilege or with access to passwords or other such credentials pertaining to the computer. The ability to enable modified or additional software to execute on the computer resides with an entity (herein called an “integrity server”) outside of the solidified computer.



FIG. 1 illustrates an architecture for solidifying an executable software set of a computer, according to an embodiment of the present invention. Prior to a solidification (or “freezing”) process, a computer 102 comprises an installed software base, for example as prepared by a manufacturer or seller of the computer 102. A user or an administrator of the computer 102 may have proper privilege to direct execution of such already installed programs, to inspect data on the computer 102 (such as log files or reports), to power-up or power-down the computer 102, or otherwise to make appropriate use of the computer 102 and its installed software base. However, once the software base of the computer 102 is solidified, such a user or administrator cannot modify or add to the set of software available for execution on the computer 102, since such ability resides with an integrity server 101 separate and distinct from the computer 102.


Prior to a solidification process, computer 102 makes one or more interfaces available to software modules for proper execution of said software modules on computer 102. A solidification of computer 102 comprises translating one or more of the interfaces provided by computer 102, such that software modules are no longer able to use the translated interfaces. In order to enable a software module to use the translated interfaces and properly execute on such a solidified computer 102, the software module is then translated according to the translated interfaces.


It is an advantageous aspect that individual interfaces can be independently to translated (hereinafter also referred to as “solidified” or “frozen”) or left untranslated (hereinafter also referred to as “thawed”), thereby providing a level of granularity for the solidification process. FIG. 2 illustrates a set of example states for a solidified computer 102. The middle six columns represent a set of interfaces which individually can be frozen or thawed. The first row (“All Interfaces frozen”) shows all interfaces of system 102 as frozen, and hence system 102 is completely solidified. The second row (“All Interfaces Thawed”) shows all interfaces of system 102 as thawed, lifting protections provided by the solidification process. The third row (“Software Maintenance”) shows all interfaces of system 102 translated except software configuration data. This row indicates a state for allowing a user of system 102 to locally change software configuration data (shown, as an illustrative example, for two individual software applications), as described in more detail below.



FIG. 3 is a flow diagram illustrating a method for preparing a computer 102 for operation in a solidified manner, according to an embodiment of the present invention. Existing software is processed 201 in anticipation for using one or more translated name spaces, the translated name spaces for referring to interfaces which are to be translated (i.e. “frozen”). Since said translated name spaces may not yet be defined, the processing step 201 comprises generating a set of placeholders for the software, such placeholders indicating that a reference name (at a given position in the software code), taken from an interface name space, is to be replaced with a corresponding translated name in a corresponding translated name space. Note that the actual translations need not yet be defined, and a placeholder indicates that a name n is to be replaced with a translation T(n), wherein T represents the actual translation once such a translation is defined (in step 203) by way of a mapping table. The set of placeholders resulting from the processing step 201, and associated with the corresponding software, is hereinafter referred to as an “sdiff”.


In step 202, the runtime environment of computer 102 is modified such that a request to execute a piece of software results in an attempt to replace the corresponding placeholders (given by the corresponding sdiff) with translated names (according to the mapping table) prior to execution of the software. In one embodiment, this alteration is set to take effect at the next boot-up of computer 102. In another embodiment, the alteration takes effect before the next boot-up of computer 102. In step 203, a mapping table is defined for use by the altered runtime environment. Hereinafter, two “modes” are identified for the runtime environment of computer 102: a “restricted mode” wherein the runtime environment of computer 102 attempts to replace placeholders in a piece of software (according to a corresponding sdiff, if such exists) and use a mapping table in order to execute the software, and an “unrestricted mode” wherein the runtime environment of computer 102 simply executes software without using any sdiffs or any mapping tables.



FIG. 4 is a block diagram illustrating a mapping table 103, according to an embodiment of the present invention. Mapping table 103 comprises one or more name space translations 105 corresponding to one or more interfaces. As shown in FIG. 5, a name space translation 105 indicates a forward translation T from an original name space to a translation name space, as well as a corresponding reverse translation T1. The translation name space preferably is larger than the original name space, the size increase serving as a precaution against any attempts to recover the name space translation by guessing.


In the example name space translation 105 shown in FIG. 5, names from an original name space A are translated into names taken from a translation name space A′, with two example names x and y from the original name space A shown as translated into names x′ and y′ from the translated name space A′. Note that in general the reverse translation T1 need not map every unique name from the translation name space A′ into a corresponding unique name in the original name space A. For example, a group of names from the translation name space A′ (indicated by z1, z2 and z3 in FIG. 5) may be mapped into a null value in the original name space A. This will occur for example when the translation name space is larger than the original name space. Specifically, the translation name space A′ preferably comprises the names in A as a subset, such names mapped back to null by the reverse translation T1, thereby in effect thwarting attempts to use the original untranslated names in A on a solidified system 102. Additionally, the translation name space A′ preferably comprises a large number of names which are neither in A nor in T(A) (e.g., a large number of randomly generated names or name ranges), such names mapped back to null by the reverse translation T1, thereby thwarting any attempt to guess which names in A′ map back to the original untranslated names in A.



FIG. 6 is a flow diagram illustrating a method for executing a piece of software on a solidified computer 102, according to an embodiment of the present invention. Receive 210 a request for execution of a piece of software S. If S does not 211 have an associated sdiff; attempt 212 to execute S without translating S. Otherwise 213, translate 214 S according to one or more respective interface name space translations 105 as indicated by the sdiff associated with S and according to the mapping table 103, and execute 215 the translated S. Step 214 preferably occurs during loading of the executable file, symbol resolution and/or dynamic linkage.


The execution steps 212 and 215 comprise an attempt to use appropriate reverse translations (as given by the mapping table 103) for any references to translated interfaces, whether the references (names) are appropriately translated or not. Therefore, if a software S does not have an associated sdiff; references comprising (untranslated) names for referring to a translated interface will be reverse-translated into invalid names, and will hence cause an execution exception, logging, and/or other error handling. The same applies to a piece of code which has been inserted into a software S after an sdiff has been generated for S in step 201. On the other hand, if a software S does have an associated sdiff, references comprising (translated) names for referring to a translated interface will be appropriately reverse-translated to corresponding original names for proper execution on solidified computer 102.


For a translated piece of software (comprising references according to a translated interface) to execute correctly, several techniques can be used independently or in combination. In a first embodiment, computer 102 comprises a translation of an implementation of the corresponding untranslated interface, wherein the translated implementation processes requests according to the translated interface. For example, a PERL interpreter is modified according to a translated PERL language interface, wherein keywords of the PERL language are translated and no longer correspond to standard PERL keywords, for example by replacing the standard PERL keyword “FOR” with a new translated keyword “XH5HKJ831H09L” for the translated PERL interpreter. In this embodiment, a PERL script will execute properly only if the script is in accordance with the translated PERL language interface.


In a second embodiment, an implementation of the corresponding untranslated interface is left unmodified. Instead, execution engine 106 translates requests (expressed according to a translated interface) to requests expressed in the corresponding untranslated interface. As an example, the PERL interpreter is left unmodified, and a PERL script in accordance with the translated interface undergoes a reverse translation before it is handed over to the PERL interpreter for interpretation. Note that in both embodiments, if the interface implementation itself uses any translated interfaces (“secondary interfaces”), then the interface implementation itself is translated according to the translated secondary interfaces. For example, if the PERL interpreter uses the system call interface provided by the operating system of computer 102, and if computer 102 is in a solidified state wherein the system call interface is translated, then the PERL interpreter (whether modified according to the first embodiment or left unmodified according to the second embodiment) is itself translated according to the system call interface translation present on computer 102. As should be obvious to one of ordinary skill in the art, any number of levels of translated interfaces are possible in a solidified computer 102, depending on whether an interface implementation uses translated secondary interfaces or not.


The abstraction of name space translation extends to a third embodiment, comprising verifying a checksum for deciding whether or not to execute a piece of software on computer 102. In this embodiment, a piece of software is regarded as its own “service” having an interface comprising a name space with a single entry, namely a name for the piece of software itself. During a solidification process of computer 102, a checksum is associated with the piece of software, wherein this association effectively represents a translation of the single entry in the name space. Subsequently, when computer 102 receives a request to execute the software, computer 102 executes the software only if the checksum properly verifies (corresponding to provision of the correct translation of the single entry), and refuses to execute the software otherwise. The checksum verification essentially represents a verification that the request to execute the software was according to the translated interface (indicating the software and associated checksum), as opposed to according to the untranslated interface (indicating the software without checksum). This embodiment can be implemented without the use of sdiffs. This embodiment can also be implemented without the use of a mapping table 103, replacing the mapping table 103 lookup with a checksum verification step making use of a mapping which maps pieces of software (requested for execution) to (a) a valid checksum, leading to grant of execution, or to (b) an invalid checksum (including null) leading to a refusal of execution.


A name space translation T 105 may be uniquely associated with a particular piece of software S and with a particular solidified system 102, or it may be shared by more than one piece of software or across more than one solidified system 102. Some techniques for translating an interface and associating such a translated interface with a piece of software are described in copending U.S. patent application entitled “Damage Containment By Translation”, application Ser. No. 10/651,588, filed on Aug. 29, 2003, incorporated herein by reference, and in copending U.S. patent application entitled “Method And System For Containment Of Usage Of Language Interfaces”, application Ser. No. 10/739,230, filed on Dec. 17, 2003, incorporated herein by reference.


In addition to solidifying code portions of the installed software base through name space translation (as described above), one or more configuration data of the installed software base can be solidified as well, independently from the corresponding code portions. This is accomplished by generating a translation of a set of configuration data used by the software. For example, consider a piece of software S which reads and/or writes configuration data using one or more data files, wherein the read and/or write operations rely on a knowledge of the corresponding file names. Solidifying some or all of the configuration data comprises translating the corresponding file names and/or translating the actual data contained in the files. Such files with translated names and/or translated content will be usable to a properly translated piece of software S′, but not to the original untranslated software S. Proper software translation comprises static replacement of the original file names in S′ with translated file names, and/or insertion of instructions (hooks) into S′ for dynamically obtaining the translated file names and translated content during run-time. As should be obvious to one of ordinary skill in the art, this translation technique is not limited to configuration data residing in a file system, but can be analogously applied to configuration data accessible through any API or service interface, by translating the API or service interface and/or translating the content available through the API or service interface.


As described above, managing the executable software set of computer 102 comprises managing (a) the set of sdiffs, (b) mapping table 103, and (c) the mode (“restricted mode” versus “unrestricted mode”) of the runtime environment of computer 102, hereinafter also collectively referred to as the “solidification metadata”. It is an advantageous aspect that these three items can be independently managed and computed, locally or remotely, as described in the following:

    • sdiffs: In one embodiment, sdiffs are computed locally on computer 102. In an alternative embodiment, sdiffs are computed remotely on integrity server 101 and then sent to computer 102. Preferably, sdiffs sent from integrity server 101 to computer 102 are authenticated (for example using digital signatures) or are sent over a secure communications channel (for example via a Secure Socket Layer (SSL)).
    • Mapping table 103: In one embodiment, mapping table 103 is computed locally on computer 102, with any recomputations (for regenerating or adding name space translations 105) also performed locally. In an alternative embodiment, mapping table 103 is computed remotely on integrity server 101 and then sent to computer 102. Preferably, a mapping table 103 sent from integrity server 101 to computer 102 is authenticated (for example using digital signatures) or is sent over a secure communications channel (for example via SSL).
    • Mode: In one embodiment, switching from the “restricted mode” to the “unrestricted mode” (or vice versa) is initiated locally on computer 102. In an alternative embodiment, such a switch can only be initiated remotely by integrity server 101, such initiation using authentication (for example using digital signatures) or proceeding over a secure communications channel (for example via SSL).


      Optionally, a checksum (as described above for deciding whether or not to execute a piece of software on computer 102) may be included as part of the solidification metadata.


To achieve modularity, the writing and reading of the sdiffs, the mapping table 103 and the runtime mode are separated between a writer module and a reader module, with the writer module writing said data onto computer 102 and the reader module retrieving written data when needed. In the embodiments where the computation of said data is performed locally, the writer module resides on computer 102, whereas remote computation of said data comprises a remote writer module communicating with computer 102, using authentication (for example digital signatures) or a secure communications channel (such as SSL). In an optional embodiment, such a remote writer module does not write all of said data, but instead writes a (possibly empty) subset thereof (e.g. the mode only) as well as one or more authenticators for validating the entire data. Such authentication may comprise digital signatures, transport-level authentication such as SSL, or any other authentication mechanisms.


Remote management of the solidification metadata by integrity server 101 results in the advantageous aspect that knowledge of the specific unique structure and encoding of the solidification metadata used to enforce a frozen executable software set on computer 102 resides with integrity server 101 and outside of computer 102. As a consequence, while a party other than integrity server 101 may be able to install additional software on frozen system 102, such software remains unexecutable until one or more items in the solidification metadata are properly modified by the integrity server 101 (or their local modification is authorized by integrity server 101) so as to enable the additional software to properly execute on frozen system 102, as described above. For example, in one embodiment, the integrity server 101 generates a modified mapping table 103 and sends it to computer 102. In another embodiment, the integrity server 101 sends data to computer 102, the data for locally generating a new mapping table 103 on computer 102. In both embodiments, it is an advantageous aspect that the knowledge, possessed by the integrity server 101 and used to construct or modify a mapping table 103 for a computer 102, is distinct from the knowledge of the actual name space translations 105 of the mapping table 103.


It is an advantageous aspect that tampering with the solidification metadata is rendered detectable. To accomplish this, solidification metadata resident on computer 102, solidification metadata sent by the integrity server 101 to computer 102, and/or data sent by the integrity server 101 for locally generating one or more portions of the solidification metadata on computer 102, are authenticated. Such authentication comprises for example digitally signing the solidification metadata (or transmitted portions thereof) and the data, or using other data integrity techniques (such as checksums) or authentication techniques as should be obvious to one of ordinary skill in the art. Correspondingly, computer 102 verifies authenticity and/or integrity of the solidification metadata, or of the data received from integrity server 101 for locally generating solidification metadata (or portions thereof), prior to using the solidification metadata or the data. One example comprises the execution engine 106 refusing to execute software if the solidification metadata have been tampered with. Another example comprises computer 102 refusing to update the solidification metadata if data received from integrity server 101 is not successfully authenticated. In another example, integrity server 101 verifies authenticity and integrity of the solidification metadata, and replaces any compromised portions of the solidification metadata (such as a compromised mapping table 103) with freshly generated ones.


Optionally, one or more portions of the solidification metadata on the frozen system 102 are periodically regenerated (with new name space translations) for increased defense against guessing attacks. Process migration techniques can be used to change one or more name space translations 105 associated with a process while the process is executing.


Optionally, the translated name spaces need not be persistently stored on frozen system 102, but can instead be computed when frozen system 102 powers up, and recomputed at any later times.


It is another advantageous aspect that when modifying a piece of software already resident on frozen system 102, or when installing a new piece of software onto frozen system 102, the integrity server 101 need not perform the actual modification or installation (although optionally the integrity server 101 can perform such tasks). The integrity server 101 simply properly modifies the solidification metadata, leaving the modification or installation of software to other parties, such as (a) a user or an to administrator of frozen system 102, or (b) an automatic software modification or installation process. However, a modified or newly installed piece of software does not properly execute on the frozen system 102 unless the solidification metadata are appropriately modified by the integrity server 101 and the piece of software is translated according to the mapping table 103 (as described above).


Note that the “software maintenance” state may be further refined to comprise any number of individual interfaces, or groups of interfaces, by adding appropriate columns to the table of FIG. 4. For example, a useful state may distinguish between application configuration data and system configuration data, thereby separating system maintenance mode (for changing system configuration data) from application maintenance mode (for changing application configuration data). Another useful state (“software installation state”) may comprise an untranslated system call interface while leaving other interfaces translated. This state would be useful for running software installers which do need the system call interface to execute properly. After an installer has completed installation of a software (and optionally removal of old versions of the software from computer 102), computer 102 transitions into a state where the system call interface again is solidified (i.e. translated). Note that any thusly installed software still undergo translation in order to properly execute on solidified computer 102. In general, it is an advantageous aspect that code execution and system administration on a system 102 can be separated to any desired degree by choosing a set of independent interfaces so as to provide sufficient granularity for generating a large enough set of possible states of computer 102.


With respect to persistent computer 102 data (such as configuration files, software instruction (code) files, dynamic libraries, operating system registries, etc.) to which the operating system of system 102 provides one or more interfaces for modifications, an optional embodiment allows writes even in a solidified state. However, as in a logging (or journaling) file system, such writes are merely logged and pending, and not yet committed. Once a user of solidified computer 102 has performed one or more changes (i.e. pending write operations), the user may request that the integrity server 101 (or an administrator thereof) commit the user's changes to the solidified computer 102. The integrity server 101 (or an administrator thereof) may then review the user's changes, and either accept all or part of the changes (by committing the accepted changes), reject all or part of the changes (by rolling back the rejected changes), and/or leave all of part of the changes for later inspection.


Foregoing described embodiments of the invention are provided as illustrations and descriptions. They are not intended to limit the invention to precise form described. In particular, it is contemplated that functional implementation of invention described herein may be implemented equivalently in hardware, software, firmware, and/or other available functional components or building blocks, and that networks may be wired, wireless, or a combination of wired and wireless. Other variations and embodiments are possible in light of above teachings, and it is thus intended that the scope of invention not be limited by this Detailed Description, but rather by Claims following.

Claims
  • 1. A method, comprising: receiving a set of data from a first computer over a network at a second computer, wherein the first computer authorizes modifications to a plurality of software programs being executed on the second computer;generating a calling name space translation on the second computer according to the set of data, wherein one or more original calling names associated with an original interface are translated into one or more translated calling names associated with a translated interface;translating an original software program of the plurality of software programs to obtain a translated software program according to the translated interface, wherein an implementation of a corresponding interface is not translated;receiving a request to execute the translated software program; andreverse translating the translated software program to obtain a reverse translated software program according to the original interface,wherein a translation name space of the translated interface includes a subset of at least some of the one or more original calling names, wherein the one or more original calling names in the subset are mapped to null values.
  • 2. The method of claim 1, wherein the original interface comprises a language interface provided by a language interpreter residing on the first computer, and wherein the original interface comprises a set of one or more system calls provided by an operating system of the first computer.
  • 3. The method of claim 1, wherein a first checksum is associated with a first translated software program such that a first request for execution of the first translated software program triggers a second checksum being computed for the first translated software program, and wherein the first translated software program is executed when the second checksum matches the first checksum.
  • 4. The method of claim 1. wherein the one or more translated calling names are invalid for calling the original interface.
  • 5. The method of claim 1, wherein at least a portion of the translated calling names are not mapped to a corresponding unique name in an original name space, and wherein the calling name space translation is larger than the original name space.
  • 6. A computer system, comprising a processor; anda memory, wherein the computer system is configured forreceiving a set of data from an integrity server over a network at the computer system, wherein the integrity server authorizes modifications to a plurality of software programs being executed on the computer system;generating a calling name space translation on the computer system according to the set of data, wherein one or more original calling names associated with an original interface are translated into one or more translated calling names associated with a translated interface;translating an original software program of the plurality of software programs to obtain a translated software program according to the translated interface, wherein an implementation of a corresponding interface is not translated:receiving a request to execute the translated software program andreverse translating the translated software program to obtain a reverse translated software program according to the original interface,wherein a translation name space of the translated interface includes a subset of at least some of the one or more original calling names, wherein the one or more original calling names in the subset are mapped to null values.
  • 7. The computer system of claim 6, wherein the original interface comprises a language interface provided by a language interpreter residing on the integrity server, and wherein the original interface comprises a. set of one or more system calls provided by an operating system of the integrity server.
  • 8. The computer system of claim 6, wherein a first checksum is associated with a first translated software program such that a first request for execution of the first translated software program triggers a second checksum being computed for the first translated software prow am, and wherein the first translated software program is executed when the second checksum matches the first checksum.
  • 9. The computer system of claim 6, wherein the one or more translated calling names are invalid for calling the original interface.
  • 10. The computer system of claim 6, wherein at least a portion of the translated calling names are not mapped to a corresponding usque name in an original name space, and wherein the calling name space translation is larger than the original name space.
  • 11. Logic encoded in non-transitory tangible media that includes code for execution and when executed by a processor is operable to perform operations comprising: receiving a set of data from a first computer over a network at a second computer, wherein the first computer authorizes modifications to a plurality of software programs being executed on the second computer;generating a calling name space translation on the second computer according to the set of data, wherein one or more original calling names associated with an original interface are translated into one or more translated calling names associated with a translated interface;translating, an original software program of the plurality of software programs to obtain a translated software program according to the translated interface, wherein an implementation of a corresponding interface is not translated;receiving a request to execute the translated software program: andreverse translating the translated software program to obtain a reverse translated software program according to the original interface,wherein a translation name space of the translated interface includes a subset of at least some of the one or more original calling names, wherein the one or more original calling names in the subset are mapped to null values.
  • 12. The logic, of claim 11, wherein the original interface comprises a language interface provided by a language interpreter residing, on the first computer, and wherein the original interface comprises a set of one or more system calls provided by an operating system of the first computer.
  • 13. The logic of claim 11, wherein a first checksum is associated with a first translated software program such that a first request for execution of the first translated software program triggers a second checksum being computed for the first translated software program, and wherein the first translated software program is executed when the second checksum matches the first checksum.
  • 14. The logic of claim 11, wherein the one or more translated calling names are invalid for calling the original interface.
  • 15. The logic, of claim 11, wherein at least a portion of the translated calling names are not mapped to a corresponding unique name in an original name space, and wherein the calling name space translation is larger than the original name space.
  • 16. The logic of claim 11, wherein if the second computer operates in a first operational state, newly installed software in the second computer can be executed.
  • 17. The logic. of claim 16, wherein if the second computer operates in a second operational state, the newly installed software cannot be executed.
RELATED APPLICATION

This Application is a continuation (and claims the benefit of priority under 35 U.S.C. §120) of U.S. application Ser. No. 10/935,772, filed Sep. 7, 2004 now U.S. Pat. No. 7,873,955, entitled “SOLIDIFYING THE EXECUTABLE SOFTWARE SET OF A COMPUTER,” Inventor E. John Sebes. The disclosure of the prior application is considered part of (and is incorporated by reference in) the disclosure of this application.

US Referenced Citations (207)
Number Name Date Kind
4688169 Joshi Aug 1987 A
4982430 Frezza et al. Jan 1991 A
5155847 Kirouac et al. Oct 1992 A
5222134 Waite et al. Jun 1993 A
5390314 Swanson Feb 1995 A
5521849 Adelson et al. May 1996 A
5560008 Johnson et al. Sep 1996 A
5699513 Feigen et al. Dec 1997 A
5778226 Adams et al. Jul 1998 A
5778349 Okonogi Jul 1998 A
5787427 Benantar et al. Jul 1998 A
5842017 Hookway et al. Nov 1998 A
5907709 Cantey et al. May 1999 A
5907860 Garibay et al. May 1999 A
5974149 Leppek Oct 1999 A
5987610 Franczek et al. Nov 1999 A
5987611 Freund Nov 1999 A
5991881 Conklin et al. Nov 1999 A
6073142 Geiger et al. Jun 2000 A
6141698 Krishnan et al. Oct 2000 A
6192401 Modiri et al. Feb 2001 B1
6192475 Wallace Feb 2001 B1
6256773 Bowman-Amuah Jul 2001 B1
6275938 Bond et al. Aug 2001 B1
6321267 Donaldson Nov 2001 B1
6338149 Ciccone, Jr. et al. Jan 2002 B1
6356957 Sanchez, II et al. Mar 2002 B2
6393465 Leeds May 2002 B2
6442686 McArdle et al. Aug 2002 B1
6449040 Fujita Sep 2002 B1
6453468 D'Souza Sep 2002 B1
6460050 Pace et al. Oct 2002 B1
6587877 Douglis et al. Jul 2003 B1
6611925 Spear Aug 2003 B1
6662219 Nishanov et al. Dec 2003 B1
6748534 Gryaznov et al. Jun 2004 B1
6769008 Kumar et al. Jul 2004 B1
6769115 Oldman Jul 2004 B1
6795966 Lim et al. Sep 2004 B1
6832227 Seki et al. Dec 2004 B2
6834301 Hanchett Dec 2004 B1
6847993 Novaes et al. Jan 2005 B1
6907600 Neiger et al. Jun 2005 B2
6918110 Hundt et al. Jul 2005 B2
6930985 Rathi et al. Aug 2005 B1
6934755 Saulpaugh et al. Aug 2005 B1
6988101 Ham et al. Jan 2006 B2
6988124 Douceur et al. Jan 2006 B2
7007302 Jagger et al. Feb 2006 B1
7010796 Strom et al. Mar 2006 B1
7024548 O'Toole, Jr. Apr 2006 B1
7039949 Cartmell et al. May 2006 B2
7065767 Kambhammettu et al. Jun 2006 B2
7069330 McArdle et al. Jun 2006 B1
7082456 Mani-Meitav et al. Jul 2006 B2
7093239 van der Made Aug 2006 B1
7124409 Davis et al. Oct 2006 B2
7139916 Billingsley et al. Nov 2006 B2
7152148 Williams et al. Dec 2006 B2
7159036 Hinchliffe et al. Jan 2007 B2
7177267 Oliver et al. Feb 2007 B2
7203864 Goin et al. Apr 2007 B2
7251655 Kaler et al. Jul 2007 B2
7290266 Gladstone et al. Oct 2007 B2
7302558 Campbell et al. Nov 2007 B2
7330849 Gerasoulis et al. Feb 2008 B2
7346781 Cowle et al. Mar 2008 B2
7349931 Horne Mar 2008 B2
7350204 Lambert et al. Mar 2008 B2
7353501 Tang et al. Apr 2008 B2
7363022 Whelan et al. Apr 2008 B2
7370360 van der Made May 2008 B2
7406517 Hunt et al. Jul 2008 B2
7441265 Staamann et al. Oct 2008 B2
7464408 Shah et al. Dec 2008 B1
7506155 Stewart et al. Mar 2009 B1
7506170 Finnegan Mar 2009 B2
7546333 Alon et al. Jun 2009 B2
7546594 McGuire et al. Jun 2009 B2
7552479 Conover et al. Jun 2009 B1
7603552 Sebes et al. Oct 2009 B1
7607170 Chesla Oct 2009 B2
7657599 Smith Feb 2010 B2
7669195 Qumei Feb 2010 B1
7685635 Vega et al. Mar 2010 B2
7698744 Fanton et al. Apr 2010 B2
7703090 Napier et al. Apr 2010 B2
7757269 Roy-Chowdhury et al. Jul 2010 B1
7765538 Zweifel et al. Jul 2010 B2
7783735 Sebes et al. Aug 2010 B1
7809704 Surendran et al. Oct 2010 B2
7818377 Whitney et al. Oct 2010 B2
7823148 Deshpande et al. Oct 2010 B2
7836504 Ray et al. Nov 2010 B2
7840968 Sharma et al. Nov 2010 B1
7849507 Bloch et al. Dec 2010 B1
7856661 Sebes et al. Dec 2010 B1
7908653 Brickell et al. Mar 2011 B2
7937455 Saha et al. May 2011 B2
7966659 Wilkinson et al. Jun 2011 B1
8015563 Araujo et al. Sep 2011 B2
20020056076 van der Made May 2002 A1
20020069367 Tindal et al. Jun 2002 A1
20020083175 Afek et al. Jun 2002 A1
20020099671 Mastin et al. Jul 2002 A1
20030014667 Kolichtchak Jan 2003 A1
20030023736 Abkemeier Jan 2003 A1
20030033510 Dice Feb 2003 A1
20030073894 Chiang et al. Apr 2003 A1
20030074552 Olkin et al. Apr 2003 A1
20030120601 Ouye et al. Jun 2003 A1
20030120811 Hanson et al. Jun 2003 A1
20030120935 Teal et al. Jun 2003 A1
20030145232 Poletto et al. Jul 2003 A1
20030163718 Johnson et al. Aug 2003 A1
20030167399 Audebert et al. Sep 2003 A1
20030200332 Gupta et al. Oct 2003 A1
20030212902 van der Made Nov 2003 A1
20030220944 Schottland et al. Nov 2003 A1
20030221190 Deshpande et al. Nov 2003 A1
20040003258 Billingsley et al. Jan 2004 A1
20040015554 Wilson Jan 2004 A1
20040051736 Daniell Mar 2004 A1
20040054928 Hall Mar 2004 A1
20040143749 Tajali et al. Jul 2004 A1
20040167906 Smith et al. Aug 2004 A1
20040230963 Rothman et al. Nov 2004 A1
20040243678 Smith et al. Dec 2004 A1
20040255161 Cavanaugh Dec 2004 A1
20050018651 Yan et al. Jan 2005 A1
20050086047 Uchimoto et al. Apr 2005 A1
20050108516 Balzer et al. May 2005 A1
20050108562 Khazan et al. May 2005 A1
20050114672 Duncan et al. May 2005 A1
20050132346 Tsantilis Jun 2005 A1
20050228990 Kato et al. Oct 2005 A1
20050235360 Pearson Oct 2005 A1
20050257207 Blumfield et al. Nov 2005 A1
20050257265 Cook et al. Nov 2005 A1
20050260996 Groenendaal Nov 2005 A1
20050262558 Usov Nov 2005 A1
20050273858 Zadok et al. Dec 2005 A1
20050283823 Okajo et al. Dec 2005 A1
20050289538 Black-Ziegelbein et al. Dec 2005 A1
20060004875 Baron et al. Jan 2006 A1
20060015501 Sanamrad et al. Jan 2006 A1
20060037016 Saha et al. Feb 2006 A1
20060080656 Cain et al. Apr 2006 A1
20060085785 Garrett Apr 2006 A1
20060101277 Meenan et al. May 2006 A1
20060133223 Nakamura et al. Jun 2006 A1
20060136910 Brickell et al. Jun 2006 A1
20060136911 Robinson et al. Jun 2006 A1
20060195906 Jin et al. Aug 2006 A1
20060200863 Ray et al. Sep 2006 A1
20060230314 Sanjar et al. Oct 2006 A1
20060236398 Trakic et al. Oct 2006 A1
20070011746 Malpani et al. Jan 2007 A1
20070028303 Brennan Feb 2007 A1
20070039049 Kupferman et al. Feb 2007 A1
20070050579 Hall et al. Mar 2007 A1
20070050764 Traut Mar 2007 A1
20070074199 Schoenberg Mar 2007 A1
20070083522 Nord et al. Apr 2007 A1
20070101435 Konanka et al. May 2007 A1
20070136579 Levy et al. Jun 2007 A1
20070143851 Nicodemus et al. Jun 2007 A1
20070169079 Keller et al. Jul 2007 A1
20070192329 Croft et al. Aug 2007 A1
20070220061 Tirosh et al. Sep 2007 A1
20070220507 Back et al. Sep 2007 A1
20070253430 Minami et al. Nov 2007 A1
20070256138 Gadea et al. Nov 2007 A1
20070271561 Winner et al. Nov 2007 A1
20070300215 Bardsley Dec 2007 A1
20080005737 Saha et al. Jan 2008 A1
20080005798 Ross Jan 2008 A1
20080010304 Vempala et al. Jan 2008 A1
20080022384 Yee et al. Jan 2008 A1
20080034416 Kumar et al. Feb 2008 A1
20080052468 Speirs et al. Feb 2008 A1
20080082977 Araujo et al. Apr 2008 A1
20080120499 Zimmer et al. May 2008 A1
20080163207 Reumann et al. Jul 2008 A1
20080163210 Bowman et al. Jul 2008 A1
20080165952 Smith et al. Jul 2008 A1
20080184373 Traut et al. Jul 2008 A1
20080235534 Schunter et al. Sep 2008 A1
20080294703 Craft et al. Nov 2008 A1
20080301770 Kinder Dec 2008 A1
20090038017 Durham et al. Feb 2009 A1
20090043993 Ford et al. Feb 2009 A1
20090113110 Chen et al. Apr 2009 A1
20090144300 Chatley et al. Jun 2009 A1
20090150639 Ohata Jun 2009 A1
20090249438 Litvin et al. Oct 2009 A1
20090320140 Sebes et al. Dec 2009 A1
20100071035 Budko et al. Mar 2010 A1
20100100970 Chowdhury et al. Apr 2010 A1
20100114825 Siddegowda May 2010 A1
20100281133 Brendel Nov 2010 A1
20100293225 Sebes et al. Nov 2010 A1
20100332910 Ali et al. Dec 2010 A1
20110035423 Kobayashi et al. Feb 2011 A1
20110047543 Mohinder Feb 2011 A1
20110138461 Bhargava et al. Jun 2011 A1
20120278853 Chowdhury et al. Nov 2012 A1
Foreign Referenced Citations (10)
Number Date Country
1 482 394 Dec 2004 EP
2 037 657 Mar 2009 EP
WO 9844404 Oct 1998 WO
WO 0184285 Nov 2001 WO
WO 2006012197 Feb 2006 WO
WO 2006124832 Nov 2006 WO
WO 2008054997 May 2008 WO
WO 2011059877 May 2011 WO
WO 2012015485 Feb 2012 WO
WO 2012015489 Feb 2012 WO
Non-Patent Literature Citations (59)
Entry
Kurt Gutzmann, “Access Control and Session Management in the HTTP Environment,” Jan./Feb. 2001, pp. 26-35, IEEE Internet Computing.
U.S. Appl. No. 11/379,953, entitled “Software Modification by Group to Minimize Breakage,” filed Apr. 24, 2006, Inventor(s): E. John Sebes et al.
U.S. Appl. No. 11/277,596, entitled “Execution Environment File Inventory,” filed Mar. 27, 2006, Inventor(s): Rishi Bhargava et al.
U.S. Appl. No. 10/651,591, entitled “Method and System for Containment of Networked Application Client Software by Explicit Human Input,” filed Aug. 29, 2003, Inventor(s): Rosen Sharma et al.
U.S. Appl. No. 10/935,772, entitled “Solidifying the Executable Software Set of a Computer,” filed Sep. 7, 2004, Inventor(s): E. John Sebes et al.
U.S. Appl. No. 11/060,683, entitled “Distribution and Installation of Solidified Software on a Computer,” filed Feb. 16, 2005, Inventor(s): Bakul Shah et al.
U.S. Appl. No. 11/346,741, entitled “Enforcing Alignment of Approved Changes and Deployed Changes in the Software Change Life-Cycle,” filed Feb. 2, 2006, Inventor(s): Rahul Roy-Chowdhury et al.
U.S. Appl. No. 11/400,085, entitled “Program-Based Authorization,” filed Apr. 7, 2006, Inventor(s): Rishi Bhargava et al.
U.S. Appl. No. 11/437,317, entitled “Connectivity-Based Authorization,” filed May 18, 2006, Inventor(s): E. John Sebes et al.
U.S. Appl. No. 12/290,380, entitled “Application Change Control,” filed Oct. 29, 2008, Inventor(s): Rosen Sharma et al.
U.S. Appl. No. 12/008,274, entitled Method and Apparatus for Process Enforced Configuration Management, filed Jan. 9, 2008, Inventor(s): Rishi Bhargava et al.
U.S. Appl. No. 12/291,232, entitled “Method of and System for Computer System State Checks,” filed Nov. 7, 2008, inventor(s): Rishi Bhargava et al.
U.S. Appl. No. 12/322,220, entitled “Method of and System for Malicious Software Detection Using Critical Address Space Protection,” filed Jan. 29, 2009, Inventor(s): Suman Saraf et al.
U.S. Appl. No. 12/322,321, entitled “Method of and System for Computer System Denial-of-Service Protection,” filed Jan. 29, 2009, Inventor(s): Suman Saraf et al.
U.S. Appl. No. 12/426,859, entitled “Method of and System for Reverse Mapping Vnode Pointers,” filed Apr. 20, 2009, Inventor(s): Suman Saraf et al.
U.S. Appl. No. 12/545,609, entitled “System and Method for Enforcing Security Policies in a Virtual Environment,” filed Aug. 21, 2009, Inventor(s): Amit Dang et al.
U.S. Appl. No. 12/545,745, entitled “System and Method for Providing Address Protection in a Virtual Environment,” filed Aug. 21, 2009, Inventor(s): Preet Mohinder.
Eli M. Dow, et al., “The Xen Hypervisor,” Informit, dated Apr. 10, 2008, http://www.informit.com/articles/printerfriendly.aspx?p=1187966, printed Aug. 11, 2009 (13 pages).
“Xen Architecture Overview,” Xen, dated Feb. 13, 2008, Version 1.2, http://wiki.xensource.com/xenwiki/XenArchitecture?action=AttachFile&do=get&target=Xen+architecture—Q1+2008.pdf, printed Aug. 18, 2009 (9 pages).
U.S. Appl. No. 12/615,521, entitled “System and Method for Preventing Data Loss Using Virtual Machine Wrapped Applications,” filed Nov. 10, 2009, Inventor(s): Sonali Agarwal, et al.
Desktop Management and Control, Website: http://www.vmware.com/solutions/desktop/, printed Oct. 12, 2009, 1 page.
Secure Mobile Computing, Website: http://www.vmware.com/solutions/desktop/mobile.html, printed Oct. 12, 2009, 2 pages.
U.S. Appl. No. 12/636,414, entitled “System and Method for Managing Virtual Machine Configurations,” filed Dec. 11, 2009, Inventor(s): Harvinder Singh Sawhney, et al.
U.S. Appl. No. 12/844,892, entitled “System and Method for Protecting Computer Networks Against Malicious Software,” filed Jul. 28, 2010, Inventor(s) Rishi Bhargava, et al.
U.S. Appl. No. 12/844,964, entitled “System and Method for Network Level Protection Against Malicious Software,” filed Jul. 28, 2010, Inventor(s) Rishi Bhargava, et al.
U.S. Appl. No. 12/880,125, entitled “System and Method for Clustering Host Inventories,” filed Sep. 12, 2010, Inventor(s) Rishi Bhargava, et al.
U.S. Appl. No. 12/944,567, entitled “Classification of Software on Networked Systems,” filed Nov. 11, 2010, Inventor(s) E. John Sebes, et al.
U.S. Appl. No. 12/903,993, entitled “Method and System for Containment of Usage of Language Interfaces,” filed Oct. 13, 2010, Inventor(s) Rosen Sharma, et al.
U.S. Appl. No. 12/946,081, entitled “Method and System for Containment of Usage of Language Interfaces,” filed Nov. 15, Inventor(s) Rosen Sharma, et al.
U.S. Appl. No. 12/946,344, entitled “Method and System for Containment of Usage of Language Interfaces,” filed Nov. 15, 2010, Inventor(s) Rosen Sharma, et al.
U.S. Appl. No. 12/975,745, entitled “Program-Based Authorization,” filed Dec. 22, 2010, Inventor(s) Rishi Bhargava, et al.
IA-32 Intel® Architecture Software Developer's Manual, vol. 3B; Jun. 2006; pp. 13, 15, 22 and 145-146.
Notification of International Preliminary Report on Patentability and Written Opinion mailed May 24, 2012 for International Application No. PCT/US2010/055520, 5 pages.
Sailer et al., sHype: Secure Hypervisor Approach to Trusted Virtualized Systems, IBM research Report, Feb. 2, 2005, 13 pages.
U.S. Appl. No. 13/558,181, entitled “Method and Apparatus for Process Enforced Configuration Management,” filed Jul. 25, 2012, Inventor(s) Rishi Bhargava et al.
U.S. Appl. No. 13/558,227, entitled “Method and Apparatus for Process Enforced Configuration Management,” filed Jul. 25, 2012, Inventor(s) Rishi Bhargava et al.
U.S. Appl. No. 13/558,277, entitled “Method and Apparatus for Process Enforced Configuration Management,” filed Jul. 25, 2012, Inventor(s) Rishi Bhargava et al.
Barrantes et al., “Randomized Instruction Set Emulation to Dispurt Binary Code Injection Attacks,” Oct. 27-31, 2003, ACM, pp. 281-289.
Check Point Software Technologies Ltd.: “ZoneAlarm Security Software User Guide Version 9”, Aug. 24, 2009, XP002634548, 259 pages, retrieved from Internet: URL:http://download.zonealarm.com/bin/media/pdf/zaclient91—user—manual.pdf.
Gaurav et al., “Countering Code-Injection Attacks with Instruction-Set Randomization,” Oct. 27-31, 2003, ACM, pp. 272-280.
Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority (1 page), International Search Report (4 pages), and Written Opinion (3 pages), mailed Mar. 2, 2011, International Application No. PCT/US2010/055520.
Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration (1 page), International Search Report (6 pages), and Written Opinion of the International Searching Authority (10 pages) for International Application No. PCT/US2011/020677 mailed Jul. 22, 2011.
Notification of Transmittal of the International Search Report and Written Opinion of the International Searching Authority, or the Declaration (1 page), International Search Report (3 pages), and Written Opinion of the International Search Authority (6 pages) for International Application No. PCT/US2011/024869 mailed Jul. 14, 2011.
Tal Garfinkel, et al., “Terra: A Virtual Machine-Based Platform for Trusted Computing,” XP-002340992, SOSP'03, Oct. 19-22, 2003, 14 pages.
U.S. Appl. No. 13/012,138, entitled “System and Method for Selectively Grouping and Managing Program Files,” filed Jan. 24, 2011, Inventor(s) Rishi Bhargava, et al.
U.S. Appl. No. 13/037,988, entitled “System and Method for Botnet Detection by Comprehensive Email Behavioral Analysis,” filed Mar. 1, 2011, Inventor(s) Sven Krasser, et al.
Myung-Sup Kim et al., “A load cluster management system using SNMP and web”, [Online], May 2002, pp. 367-378, [Retrieved from Internet on Oct. 24, 2012], <http://onlinelibrary.wiley.com/doi/10.1002/nem.453/pdf>.
G. Pruett et al., “BladeCenter systems management software”, [Online], Nov. 2005, pp. 963-975, [Retrieved from Internet on Oct. 24, 2012], <http://citeseerx.lst.psu.edu/viewdoc/download?doi=10.1.1.91.5091&rep=rep1&type=pdf>.
Philip M. Papadopoulos et al., “NPACI Rocks: tools and techniques for easily deploying manageable Linux clusters” [Online], Aug. 2002, pp. 707-725, [Retrieved from internet on Oct. 24, 2012], <http://onlinelibrary.wiley.com/doi/10.1002/cpe.722/pdf>.
Thomas Staub et al., “Secure Remote Management and Software Distribution for Wireless Mesh Networks”, [Online], Sep. 2007, pp. 1-8, [Retrieved from Internet on Oct. 24, 2012], <http://cds.unibe.ch/research/pub—files/B07.pdf>.
“What's New: McAfee VirusScan Enterprise, 8.8,” copyright 2010, retrieved on Nov. 23, 2012 at https://kc.mcafee.com/resources/sites/MCAFEE/content/live/PRODUCT—DOCUMENTATION/22000/PD22973/en—US/VSE%208.8%20-%20What's%20New.pdf, 4 pages.
“McAfee Management for Optimized Virtual Environments,” copyright 2012, retrieved on Nov. 26, 2012 at AntiVirushttp://www.mcafee.com/us/resources/data-sheets/ds-move-anti-virus.pdf, 2 pages.
Rivest, R., “The MD5 Message-Digest Algorithm”, RFC 1321, Apr. 1992, retrieved on Dec. 14, 2012 from http://www.ietf.org/rfc/rfc1321.txt, 21 pages.
Hinden, R. and B. Haberman, “Unique Local IPv6 Unicast Addresses”, RFC 4193, Oct. 2005, retrieved on Nov. 20, 2012 from http://tools.ietf.org/pdf/rfc4193.pdf, 17 pages.
“Secure Hash Standard (SHS)”, Federal Information Processing Standards Publication, FIPS PUB 180-4, Mar. 2012, retrieved on Dec. 14, 2012 from http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf, 35 pages.
U.S. Appl. No. 13/728,705, filed Dec. 27, 2012, entitled “Herd Based Scan Avoidance System in a Network Environment,” Inventor(s) Venkata Ramanan, et al.
U.S. Appl. No. 13/271,102, filed Oct. 11, 2011, entitled System and Method for Critical Address Space Protection in a Hypervisor Environment, Inventors: Rajbir Bhattacharjee, et al.
International Search Report and Written Opinion mailed Dec. 14, 2012 for International Application No. 04796-1087WO, 9 pages.
U.S. Appl. No. 13/723,445, filed Dec. 21, 2012, entitled “System and Method for Enforcing Security Policies in a Virtual Environment,” Inventor(s) Amit Dang, et al.
Related Publications (1)
Number Date Country
20110093842 A1 Apr 2011 US
Continuations (1)
Number Date Country
Parent 10935772 Sep 2004 US
Child 12976159 US