Patent Publication Number: US-8978092-B2

Title: Data leak prevention from a device with an operating system

Description:
BACKGROUND 
     Computer data leaks can be a serious problem in both corporate and government environments. Data leaks can result in the intentional or unintentional release of data that should not be released for corporate or government security reasons. For example, data leaks include sending a sensitive e-mail to the wrong address, mistakenly uploading a confidential document instead of a conference submission, or intentionally transmitting or saving a sensitive document to a USB drive. The leaks can be the result of user error, lack of training, negligence, unfamiliarity with equipment, or malicious intent. 
     Attempts have been made to fix this problem but they have met with limited success. For example, the data exiting a system can be monitored and the flow of any data that meets certain criteria for sensitivity can be stopped. However, this does not prevent data from being printed, displayed, or moved to another part of the system and then removed through a non-monitored port. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  depicts a block diagram of one example of a system that incorporates system call interception. 
         FIG. 2  depicts a block diagram of one example of system call analysis in accordance with the example of  FIG. 1 . 
         FIG. 3  depicts a flowchart of one example of a data leak prevention method. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  illustrates a block diagram of one example of a system that incorporates system call interception and analysis. A local device  100  can be a computer with an operational system to be monitored for data leaks. The local device  100  can be a corporate desktop computer, a client computer, a single-user device with or without access control, a multi-user device with authenticated login sessions where each login session is protected. In another example, only some of the login sessions are protected for particular users, at particular times, or some other condition. 
     The application  101  can be a client on the local device  100  or run on a remote server that is connected to the local device  100  by the Internet, a wide area network (WAN), or a local area network (LAN). In one example, the local device  100  is not going to have any prior knowledge of the behavior of the application  101 . 
     The application  101  can be any user application(s) or routine (e.g., software, firmware) that can be run by the operating system  111  (e.g., WINDOWS) or used by the local device  100  over the network  161  while running on another computer (e.g., server). An e-mail client and a word processor are just a few examples of typical applications. Any of these applications are potential sources of sensitive data leaks. In one example, the application  101  is assumed to be software whose code is not accessible so that its behavior needs to be analyzed through system calls issued by the application  101 . 
     The application  101  issues a system call that is intercepted by the system call interceptor  103 . As is well known in the art, a system call is an interface between the application  101  and the operating system  111  wherein the application  101  is requesting that the operating system  111  perform some task. For example, the system call can be for file management (e.g., read, write, reposition), communication (e.g., send/receive messages, create/delete communication connections), or some other typical operating system task. In some cases a higher level of abstraction is needed, and it might be necessary to capture calls to higher level APIs, this document&#39;s system call definition includes also these calls. 
     The system call can be transmitted directly by the application  101  or by a descendant/child process of the application  101 . For every privileged action required by an application sequence of system calls generated by the application  101 , the system call interceptor  103  captures system calls potentially responsible for data leaks, analyzes the associated metadata, the application performing the call and the data content/context against a set of policies, and decides what actions need to be taken (e.g., allow or block transmission of the system call to the operating system). One example of the analysis performed by the system call interceptor  103  in accordance with set policies is illustrated in the block diagram of  FIG. 2  and described subsequently. In one example, the data content can be metadata and/or a known or unknown file format/language. 
     A local policy storage  105  includes the policies to which the documents and their metadata associated to the intercepted system calls are subjected. These policies, as well as how a system call can be detoured, are input to the system call interceptor  103  for use in determining how a particular system call should be handled, as described subsequently. In one example, a central policy server  107  can be coupled to the local policy storage  105  of the client/local device  100  periodically updated to be kept in sync with the latest policies from the Central Policy Server  107 . 
     The Central Policy Server  107  can store policies for different system calls that might be relevant for only particular client/local devices. For example, one local device might not require a policy for printing particular documents if that local device does not have print capability. Thus, not all of the client/local devices would need to load all of the same policies from the Central Policy Server  107 . The Central Policy Server  107  can be located on a server that is remote from the local device  100  such that it is connected to a number of local devices over a network (e.g., LAN, WAN). 
     A policy decision engine  109  is coupled to both the system call interceptor  103  and the local policy storage  105 . The policy decision engine  109  is programmed to scan and perform deep content parsing of a set of predetermined structured and/or unstructured fields within a document (for a recognized format and language) in the system call or a group of system calls that is associated with the action. In one example, the policy decision engine  109  looks inside the document and compares key words/phrases in the document&#39;s contents and/or metadata to those key words/phrases in the policies stored in the local policy storage  105 . The documents sensitivity can be determined by the existence of the key words/phrases/compound words/idioms/expressions in one or more of the policies, considering also errors defined by spelling mistakes. Other examples can use malapropisms, neologisms, mis-translations, or “loaded” words/phrases. The sensitivity then determines whether a predetermined policy applies to the document that is attempted to be exported from the local device  100 . The policy decision engine  109  may be programmed to successfully operate in real time in order to minimize the time it blocks the application  101  while the application  101  is being suspended and the user is waiting. In one example, the policy engine  109  can also be incorporated into the system call interceptor  103  such that the policy engine  109  can compare one or more captured system calls to a list of potentially data leaking system calls. 
     The policy decision engine  109  may retrieve the document contents and/or metadata from a document storage location. In one example, the metadata/content is captured before it is saved/sent. The document storage location can include local or network storage, a hard drive, removable media, or some other type of storage. When performing a scan, the policy decision engine  109  may retrieve policies associated with the particular action from the local policy storage  105  and/or some other memory. 
     Different policies may be in place for different actions. These actions can include printing data, saving data, uploading data, or emailing, in addition to other actions. In some instances, policies may be coherent. For example, if a document is not allowed to be e-mailed to an external address, it may also not be allowed to be uploaded to an external server. 
     The policy may include a policy identifier (i.e., a unique policy identifier and a policy revision identifier), an action associated with the system call(s) to be captured, a policy condition that the document contents and/or its metadata must satisfy for the policy to become applicable, and a policy action that will be implemented if the policy condition is satisfied. A single policy can include multiple conditions and/or multiple policy actions. For example, if a set of actions is included in a single policy, one action may be implemented when the policy condition is satisfied and another action may be implemented when the policy condition is not satisfied. 
     A secure logging block  113  is coupled to the policy decision engine  109 . This logging block logs the decisions resulting from the policy as applied to the system call as well as actions taken. Identifying information of the system call can also be logged (security assurances can be applied to the logging by methods such as hashing/digital signature, encryption, instantaneous backup). For example, if an attempt was made to transmit a document containing sensitive information by e-mail, the secure logging block  113  can log this attempt, a user identification of the user who attempted to transmit the document, and the fact that the document was blocked. Additional information can also be stored such as a pointer to the e-mail and/or the document or the actual e-mail and/or document. 
     The local device operating system  111  is also coupled to the policy decision engine  109 . The policy decision engine  109  feeds the decision/action resulting from the comparison of the policies to the system call to the system call interceptor  103  that executes the corresponding action from the system call point of view (e.g., allow, block, or detour), communicating directly with the operating system  111 . For example, if the decision was to block the system call from the application  101 , the system call interceptor will not call the real system call of the operating system and return an error to the application  101  if necessary. 
     Referring to  FIGS. 1 and 2 , the system call interceptor  103  and policy decision engine  109  determines whether the application  101  transmitting the system call is a known/authorized application  200  or an unknown/unauthorized application  201 . If the application  101  is recognized and authorized then its behavior is either known to be safe and, therefore, trusted, or it is sandboxed. 
     A sandbox is a security mechanism for separating running applications. The sandbox typically provides a tightly controlled set of resources in which to run guest programs, such as scratch space on disk and memory. Network access, the ability to inspect the host system or read from input devices are usually disallowed or heavily restricted. 
     Referring again to  FIG. 2 , if the application is unknown and/or unauthorized  201 , its system calls can potentially leak sensitive data. These system calls are captured and analyzed  202 . The metadata of the system calls can be analyzed. 
     As is well known in the art, metadata can be defined as data that provides information about one or more aspects of associated data. For example, metadata might include the means for creation of the associated data, the purpose of the associated data, the time and date of the creation of the associate data, and the author of the associated data. 
     An operating system can use metadata to label internal information for use by the operating system regarding size, location, and/or type of data. Metadata can be stored and managed in a data base, a document, or in a system call. 
     When the system call is captured, it is captured with the corresponding document data and metadata. In order to capture all the document data and metadata, more than one system call might need to be captured. If there is no stored policy for the action corresponding to the particular system call that was captured, the system call is allowed  208 . System calls that do not have the potential to leak sensitive data (e.g. delete file), will be allowed and no data or metadata will be captured from them. 
     If the metadata indicates that the document data is in a publicly known file format (e.g., clear text, txt, doc, docx, pdf)  204 , then the document data and metadata are automatically parsed for key words/phrases matching conditions those having stored policies. The appropriate policies are is then applied to the captured data  210 , depending on the results of the parsing. The document data can be checked to determine if it is in a recognizable/supported language prior to the data being analyzed against stored policies for a corresponding action. If the language is not supported, the system call can be blocked according to the system configuration. 
     If the metadata indicates that the document data is in an unknown file format  206  (for example, a proprietary data type that is recognized only by the unknown application) or if the data is in an unrecognizable/unsupported language, the system call can be blocked  212  and/or some other corresponding policy can be applied. For example, all of the system calls that can potentially leak data can be blocked and/or logged—depending on the corresponding policy. 
     As seen in  FIG. 1 , the decision from the process of  FIG. 2  is then executed, which can potentially imply a modification of the normal flow between the application and the operating system. For example, the system call interceptor could, instead of calling the real system call to the operating system, return an error to the application if the user action needs to be blocked, or it could call the real system call to the operating system after logging the action if the policy decision so dictates, can also provide the alternative/detoured execution path, for example, writing of a clear text file on a USB device is replaced by mandatory encryption of the file and then writing it to the USB device. Also, logging, alerts, notifications, other messaging, and triggered downstream actions can then be enabled/occur. 
       FIG. 3  illustrates a flowchart of one example of a data leak prevention method for a device with an operational system whose operation is based on system calls to privileged/kernel operating system operations, such as a system call interface. As used herein, a user login account includes the local device (i.e., desktop account, desktop computer, client computer) that does not have prior knowledge of the behavior of the application and does not necessarily execute the application. 
     The operating system of the local device is analyzed to generate an exhaustive (sufficient) list of system calls that the application could emit that could lead to data leaks  300 . In one example, the system controller can perform the analysis of the operating system to generate the list of potentially data leaking system calls. One or more system calls that are transmitted by the application are captured and analyzed  301 . In an example, all system calls that are transmitted by the application may be captured and analyzed. In another example, it may not be desirable to capture and analyze all of the system calls. The data (e.g., metadata) associated with the system call can also be captured with the system call. 
     As used herein, “potentially data leaking system calls”, “potential data leak events” or “data leak events” are actions that can result in sensitive data being transmitted out of the secure environment. Included actions are those that are able to export policy recognized data out of the trusted environment. Exporting data may be accomplished via any channel. For example, through document saving, electronic mailing, printing, copying, moving, dragging and dropping, uploading, or the like. 
     The analysis of the captured system calls compares the captured system calls to the previously identified list of system calls to determine if the captured system calls could potentially lead to a data leak event  303 . System calls that could not lead to a data leak event are executed normally  305 . Those system calls (e.g., a single system call or a group of system calls) that are identified as potentially causing a data leak event are analyzed to determine if the application that issued the one or more system calls is authorized  307  (the application can be identified by its system calls). 
     An authorized application is one that is already approved for use by the local device. A list of authorized applications can be stored at the central policy server for loading to the local policy storage. An authorized application might export sensitive data but it is known data to a known destination. 
     If the application is authorized, the local device can act according to the policy/policies set for the application  309 . For example, the local device can access the local policy storage to compare the system call to the list of system calls and their required policy. Prior to executing the policy or policies for the system call, metadata and/or a document that might be part of the system call can be retrieved from a document storage location in order to be analyzed prior to determining the policy/policies. 
     If the application is not authorized, an attempt is made to capture the associated data (e.g., metadata, data, documents) with the system calls  311  prior to transmission from the local device. This data can then be analyzed by comparing it to a list of sensitive types of data. For example, the local policy storage can have this list of sensitive types of data. If the data is determined to be a type of sensitive data or the associated data cannot be captured, the system calls and its associate data can be logged, blocked, or both logged and blocked  313 .