US20040006706A1 - Methods and systems for implementing a secure application execution environment using derived user accounts for internet content - Google Patents

Methods and systems for implementing a secure application execution environment using derived user accounts for internet content Download PDF

Info

Publication number
US20040006706A1
US20040006706A1 US10/456,805 US45680503A US2004006706A1 US 20040006706 A1 US20040006706 A1 US 20040006706A1 US 45680503 A US45680503 A US 45680503A US 2004006706 A1 US2004006706 A1 US 2004006706A1
Authority
US
United States
Prior art keywords
dua
content
protected
application
trusted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/456,805
Inventor
Ulfar Erlingsson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Green Border Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Green Border Technologies Inc filed Critical Green Border Technologies Inc
Priority to US10/456,805 priority Critical patent/US20040006706A1/en
Publication of US20040006706A1 publication Critical patent/US20040006706A1/en
Assigned to GREEN BORDER TECHNOLOGIES, INC. reassignment GREEN BORDER TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ERLINGSSON, ULFAR
Assigned to GOOGLE INC. reassignment GOOGLE INC. MERGER (SEE DOCUMENT FOR DETAILS). Assignors: GREEN BORDER TECHNOLOGIES, INC.
Priority to US14/522,882 priority patent/US9171149B2/en
Priority to US14/861,778 priority patent/US10133864B2/en
Assigned to GOOGLE LLC reassignment GOOGLE LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: GOOGLE INC.
Priority to US16/164,741 priority patent/US10922403B1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1483Countermeasures against malicious traffic service impersonation, e.g. phishing, pharming or web spoofing

Definitions

  • This invention relates generally to computer systems and user applications and, more particularly, to methods and systems for implementing a secure application execution environment using derived user accounts for Internet content.
  • the Internet has become a popular business tool. It provides rapid access to services, instant communication among users and computing systems, and allows for users to collaborate across geographical boundaries.
  • the Internet still poses a number of security risks to computing systems.
  • the vast amount of resources available on the Internet are of unknown origin and communications with such resources are typically unauthenticated. For instance, it is difficult to determine if a access to an unknown website resource or receipt of an email causes any security risks to the receiving computing system.
  • a number of approaches are available that address the security risks associated with using the Internet.
  • One approach involves profiling systems that scan Internet content for known patterns of malicious content such as viruses, worms, etc.
  • Anti-virus scanning software is the most widely used profiling tool for such systems.
  • Such a profiling tool can run automatically when receiving email or downloading web pages.
  • a server can run profiling software to scan incoming mail or Internet content.
  • a disadvantage of the profiling approach is that the only security risks that are detected are those based on known patterns (e.g., known viruses), which are typically stored in a database. Although the database can be updated with new known patterns, if a pattern is not found in the database, the security risk will not be detected.
  • Another approach uses cryptographic signatures for guaranteeing the origin of Internet content.
  • a valid signature can only originate from a single signature, generally associated with a signing certificate belonging to an individual user or organization. Knowing the origin of content, a user can make informed decisions about the level of trust or permission to grant to the content. In this manner, the domain of trustable content can be determined based on the signature of the content.
  • a disadvantage of this approach is that too few sources on the Internet use cryptographic signatures when delivering content. Furthermore, both the sending and receiving users must have keys to authenticate the signature.
  • validating the inputs received from the system is problematic. In particular, security attacks based on passing incorrect inputs to processes are well known—e.g., attacks exploiting buffer overflows.
  • Another approach relates to behavioral pattern-matching systems. These systems monitor the execution history of a user's system, typically in the context of using Internet content. Such systems assess each operation to determine if the operation is allowable in a given context. Moreover, these systems act as dynamically-evolving access control lists in which an operation might be allowed (or not) in one context, but not in other contexts.
  • behavior operations in a specific context
  • policy can become quite complex in order to prevent unsafe behavior while allowing as much useful behavior as possible.
  • sandboxing is a method for activating Internet content in an environment with stricter access controls than a user's normal environment.
  • a sandbox might contain code to start a new restricted execution shell for new content (e.g., a virtual machine for Internet content).
  • a disadvantage of this approach is that it imposes stricter access controls on an application when it is using Internet content. For example, a browser can be prevented from executing JavaScript code to access the file system, or by assigning a special user identity with less privilege than the actual user to Internet content and using the operating system's built-in, user id-based access control schemes (SubOS).
  • SubOS user id-based access control schemes
  • Another approach relates to language-based security that prevents certain statements from being made in the programming language that encodes Internet content. Specifically, this approach enforces strict type-safety to ensure that code can only operate on well-defined set of objects or resources, and compile-time or execution-time checks to ensure that code does not violate security policy.
  • the Java programming language for example, implements such techniques in that it does not allow a program to allocate and access arbitrary memory segments, enforces strict type definitions, and employs a run-time checks to ensure that code does not violate a user's security policy.
  • a disadvantage of this approach is that it requires knowledge of sophisticated programming techniques.
  • a method for providing secure content use.
  • Content is received and a determination is made if the received content is trusted or untrusted content.
  • the content is accessed in a protected derived user account (DUA), if the content is untrusted; otherwise, the content is accessed in a regular DUA, if the content is trusted.
  • DUA protected derived user account
  • a computing system for providing secure content use comprising at least one memory and a processor.
  • the at least one memory hosts a protected DUA and a regular DUA.
  • the processor is configured to receive content for the computing system and to determine if the received content is trusted content or untrusted content.
  • the processor is also configured to access the content using the protected DUA if the content is untrusted and to access the content using a regular DUA if the content is trusted.
  • FIG. 1 is block diagram of an exemplary computing system architecture for implementing user accounts
  • FIG. 2 is a flow diagram of a method for performing access operations using a derived user account
  • FIG. 3 is block diagram of a system for performing operations accessing state of a derived user account in a multi-user system
  • FIG. 4 illustrates one embodiment of a system for using DUAs and implementing ADAS for an application
  • FIG. 5 shows, in more detail, an example of a client-server system interconnected through network
  • FIG. 6 is a block diagram illustrating one exemplary embodiment of a system using DUAs
  • FIG. 7 is a block diagram illustrating one exemplary embodiment of a system using regular and protected DUAs
  • FIG. 8 is flow diagram of a method for network resource partitioning and access control
  • FIG. 9 is a block diagram illustrating one exemplary embodiment of a system using a protected DUA with a mediator
  • FIG. 10 is a flow diagram of a method for processing an intercepted network request
  • FIG. 11 is block diagram illustrating one exemplary embodiment of a system integrating multiple types of applications in a protected DUA
  • FIG. 12 is a flow diagram of a method for using network restrictions to identify tagged messages with Internet content
  • FIG. 13 is a block diagram illustrating one exemplary embodiment of a system using an application-specific protected DUA
  • FIG. 14 is a flow diagram of a method for processing tagged files or email attachments for a protected DUA
  • FIG. 15 is a block diagram illustrating one exemplary embodiment of a system using a protected DUA with a trusted path
  • FIG. 16 is a block diagram illustrating one exemplary embodiment of a system having a display showing a tagged protected DUA content
  • FIG. 17 is a block diagram illustrating one exemplary embodiment of a system showing a data transfer from a protected DUA being intercepted to a regular DUA;
  • FIG. 18 is a flow diagram of a method for monitoring resource use by a protected DUA.
  • SAE DUA secure application execution environment using derived user accounts
  • content is received and a determination is made if the received content is trusted or untrusted content.
  • the content is accessed in a protected derived user account (DUA) such as a SAE DUA, if the content is untrusted; otherwise, the content is accessed in a regular DUA, if the content is trusted.
  • DUA protected derived user account
  • SAE DUA IC For Internet content, the secured environment can be referred to as a “SAE DUA IC.”
  • a secured environment is available for a user to have unmitigated access to untrusted content such as Internet content.
  • a user can thus view and access Internet content while protecting the user's computing system from security risks.
  • the SAE DUA IC can be used if the content is untrusted and a regular DUA can be used if the content is trusted.
  • semantics can be used that are nearly identical to a user's original user account (OUA) within the same computing system.
  • a user can freely enjoy the same benefits of Internet content that would be available without any security protections.
  • a secured environment prevents corrupt or security adverse Internet content within a computing system from affecting a user's OUA.
  • the security risks posed by Internet content are contained within a secured environment such as a SAE DUA IC, thereby a user's actual computing system can remain protected.
  • user accounts In order to obtain an understanding of derived user accounts, user accounts must first be explained. User accounts limit the effects of activities by different users to that intended and expected by the users on desktop sharing systems. In particular, user accounts encapsulate the information particular to each individual user, such as the user's name, password, area of transient and persistent storage, configuration information, resource-usage quotas and other properties to be enforced on the user's behavior. By using user accounts, time sharing could be implemented without compromising the systems usability. Whereas previous computer system operations always directly affected the global state of the machine, operations on a user's behalf in systems implementing user accounts typically affect only the information in the user's account. In this manner, each user's actions became isolated from other users since, for the most part, they only affected the individual user's account information.
  • FIG. 1 illustrates the components in a computing system 100 implementing user accounts.
  • Each operation that involves accessing the state of the system is discriminated to determine if the state being accessed is local to an individual user account or global to the entire system (and therefore shared between all user accounts). If access is to a user-local state, the discrimination procedure determines the context of the access operation, that is, which user's account information to access.
  • context may be determined by, for example, using a low-level indirection (for memory accesses), the current virtual memory page tables, or a user account reference in each process or thread control block (for system calls).
  • user accounts can be very useful. They enhance usability when multiple individuals simultaneously use a computing system and allow for segregation of system activity based on intent. For example, conventional systems may use a supervisor user account, called “root,” to run background services. Also, web-server activities may operate as “nobody,” that is, a user account with very limited privileges. Additionally, user accounts are integral to maintaining the security of a multiple user computer system since they may be used to control which data a user may access or actions a user may perform.
  • DUAs will now be described for certain system operations.
  • DUAs such as those disclosed in co-pending and commonly owned U.S. patent application Ser. No. 10/144,048, entitled “METHODS AND SYSTEMS FOR USING DERIVED USER ACCOUNTS,” filed May 10, 2002, which is incorporated herein by reference, can be used to implement the techniques disclosed herein.
  • DUAs may have all of the properties of traditional user accounts including, but not limited to, its own state, distinct privilege and access control rules, its own unique identifier (such as a security token), and ownership of any system resources.
  • DUAs are linked to at least one particular existing user account (the Original User Account, or OUA).
  • DUA Through use of a DUA, its OUA may be selectively isolated from system operations taking place in the DUA's context. Since the DUA is a legitimate user account, legacy processes will function correctly in a DUA context while modifications to the OUA can be limited through choice of derivation transformations (“DTs”) specified by a set of derivation rules (“DRs”).
  • DTs derivation transformations
  • DRs derivation rules
  • FIG. 2 illustrates the steps of a method for accessing a resource using a derived user account consistent with the present invention.
  • a software application, P requests access to a resource, X (step 210 ).
  • a “resource” may be, for example, state information, such as data that lies in memory, file systems, registry configurations, other applications, processes, network ports, semaphores, window handles in graphical user interface (“GUI”) systems, hardware devices such as a soundcard or printer, or other named abstractions.
  • GUI graphical user interface
  • the system determines if the software application is already running in the context of a DUA (step 220 ). Methods for determining the context of an object, thread, or other activity are well known to those skilled in the computer software arts.
  • determining whether a thread is running under a local administrator account may be accomplished by examining the access token that is associated with the thread, the thread's identifier, the thread's creation time, or any other identifier that may be mapped to a specific user account.
  • step 222 the application determines if a DUA should be “created” (step 222 ). If the application determines that a DUA should not be created, the application continues normally as in step 280 .
  • a DUA may be created according to any of the following exemplary embodiments.
  • a DUA shell may be created by, for example, creating a new user account, “user 2,” that may comprise a set different than, or a subset of, the rights and permissions afforded the original user.
  • a DUA shell is the context and the mechanism for propagating the context.
  • the context includes, for example, all information that would normally be associated with an operation in the OUA, such as user credentials, process id, and other information.
  • DUA shells allow for the automatic propagation of DUA context to all DUA activity, for example, processes or threads, whether they be created directly or indirectly as a result of DUA activity.
  • the initial DUA shell may have been established before run-time or established dynamically during operation of the operating system.
  • the creation of the DUA shell may have been invoked randomly or triggered by some event, such as a write access operation.
  • the new user account may comprise rights and permissions that the original user does not have.
  • the new user account, or DUA shell may be created, for example, by using the existing user account mechanisms in the operating system. Additionally, the ownership of files or objects created or owned by user 2 may need to be modified post-creation to allow the corresponding OUA to have access, if access by OUA is desired. Similarly, user 2 may, by default, access to none or all of the files or objects created or owned by the OUA.
  • a DUA shell may be created by creating a new, possibly restricted, login session or token for the OUA (called OUA′, or “OUA prime”).
  • OUA′ is distinct and separate from the original OUA session or token, but may have all the same privileges for resources as the OUA, such as, for example, ability to use the same display.
  • OUA′ may have fewer capabilities than OUA (for example, may not be able to shut down the machine or modify the screen resolution).
  • the activity of OUA′ may be discriminated as the associated token that is automatically propagated to any processes, thread, or other activity created directly or indirectly by OUA.
  • a process group in Windows 2000, a “job” may implement the DUA shell.
  • a process group or job may also enforce quotas on resource consumption and, in other ways, control access to resources.
  • a process group or job may perform the automatic context propagation needed for discrimination of the DUA activity.
  • a DUA shell may be created by annotating certain OUA activity as actually belonging to the DUA.
  • Annotation occurs when new OUA activity (that actually belongs to the DUA) is initiated such as, for example, on the creation of a thread, process, or other activity, or the impersonation of the OUA.
  • Annotation may take the form of unique bits or an arbitrary sequence of bits associated with the OUA activity.
  • One example is the use of a distinguished entry in handle tables or file descriptor tables.
  • the annotation may be placed on any one or more components of the OUA activity.
  • the annotation may be placed on any information in the kernel thread control block (“TCB”) or kernel process control block (“PCB”), assuming execution in an operating system with a protected mode kernel.
  • TCB kernel thread control block
  • PCB kernel process control block
  • One benefit of annotating information in the kernel TCB or PCB is that the annotation can not be compromised by DUA application activity.
  • it is preferred that the annotations are not modified in the ordinary course of events.
  • annotation may be done automatically.
  • new threads, processes, or other activity of the DUA, and those impersonating the DUA may need to be intercepted and annotated as being in DUA, not OUA, context.
  • annotation may involve a combination of automatic annotation and non-automatic annotation.
  • the DUA may be initialized and maintained based on derivation transformations (“DTs”) and derivation rules (“DRs”).
  • Derivation rules are a set of rules that link any aspect of a DUA with the corresponding aspect of its OUA.
  • the derivation rules for a resource, X include DTs, which are computable functions that take an input, modify the input, and return an output.
  • An argument derivation transformation (“ADT”) generally receives an argument as input, modifies the input, and returns a second argument as output, although in some embodiments, an ADT does not modify anything.
  • a result derivation transformation (“RDT”) takes as input certain values, modifies the values, and returns modified values.
  • An “update DT” or “UDT” may update the state of a DUA based on its corresponding OUA whereas a “feedback DT” of “FDT” may give feedback from the state of a DUA to the state of its corresponding OUA.
  • the derivation rules and transformations may be authored by a developer or system administrator. In some embodiments, the derivation rules and transformations may be initially authored by a developer or system administrator but are later modified dynamically. Dynamic rules may be modified during run time according run time dependent conditions or other conditions.
  • the derivation rules may take the form of script-like directives.
  • an author of rules may use a text editor or similar device to create a human-readable text file containing the rules.
  • the rules may be authored in semantic formats such as or similar to known scripting languages or high-level computer languages, or in other formats well know to those skilled in the computer software arts.
  • the rules are compiled or otherwise processed by a rule generator into a machine-readable form, which is in turn used by the computer system at run time.
  • the first table comprises an exemplary set of rules for DUA events; the second table comprises an exemplary set of rules for OUA events.
  • Each line in the tables represents a derivation rule which describes the actions that will take place for a particular resource access.
  • the update transformation, Z may also be followed or preceded by a feedback transformation, T, using /DUA/A/B as the source (“name2”) and /OUA/A/B as the destination (“name1”).
  • /R/S/ If an application refers to /R/S/ and the operation is “open,” the UDT, V, will be performed taking /MASQ/R/S as the input and /DUA/R/S as the output, after which the open operation will actually be performed on /DUA/R/S.
  • /MASQ/R/S is data introduced by the DUA mechanism or the rules and, as described below, may be unrelated to the OUA.
  • the operation is performed on an actual named resource or object, with the rules having as a default one of the names specified in the DUA table above.
  • name2 represents the actual named resource accessed by all operations by default as specified by design.
  • the operation may be performed on name1, as specified, overriding the default case. This last example may be considered one example of an ADT, as the orgname is modified to name2.
  • OUA activity refers to /A/B, and the operation is “read,” the system will perform a feedback transformation, Y, using IDUA/A/B as input and /OUA/A/B as output before actually performing the read operation on /OUA/A/B.
  • Equivalence DTs may be used to ensure certain parts of the DUA state and the OUA state remain identical. In this case, for example, the state of the DUA may be copied back to the OUA in a feedback DT or the state of the DUA may be refreshed, for example, by an update DT that copies over one or more aspects of the DUA with information from the OUA. Equivalence DTs may be useful in cases where it is desired to have changes in either the DUA or OUA automatically reflected in the other. For example, the system volume control state may need an equivalence DT if volume changes in a DUA are to have the expected effect.
  • a “copying DT” can ensure that parts of DUA state are copies of the corresponding OUA state, and that any modifications are performed only on the DUA copy.
  • Copying DTs may be used to limit the effects of operations in DUA context upon the information of its OUA. Copying DTs may be useful in situations where a user may wish to evaluate effects of operations on the system without applying them to the OUA. One example of this would be during installation of new software or during debugging of software. If errors occur while operating with a modified DUA, the original OUA is never actually modified. Thus, operations may revert to the original OUA, and the system may be very quickly and easily returned to the old state.
  • a user may wish to use a copy DT in non-experimental situations where the system is deliberately operated in the DUA context with no intentions of ever modifying the OUA. This may be useful, for example, for security or integrity reasons.
  • the DUA may be deliberately discarded after the requested action is performed without update to the OUA.
  • Masquerading DTs can specify properties for certain parts of a DUA state, irrespective of the corresponding state of its OUA. Masquerading DTs can be used to perform operations in a DUA where certain states have values unrelated and (perhaps radically) different from that state's values in the OUA. In fact, a masquerading DT may specify that the data for the DUA may be taken from a source other than the OUA. This type of derivation transformation allows operations to be performed in a modified version of the OUA context. Masquerading DTs may be useful in cases of experimentation because the performance of the system using modified state information may be evaluated without modifying the OUA.
  • a “partitioning DT” ensures that there is no overlap between certain aspects of the DUA and the OUA state, that is, partitioning their namespace or other sets of values. For example, a partitioning DT may assign a new name, Z, to the DUA and rename the resource, X, to be Y, defined as the concatenation of X with Z. Then, the application is allowed to access the resource Y without accessing the original resource X. Partitioning DTs may be necessary when multiple entities, such as the OUA and DUA, or even multiple DUAs, are concurrently sharing resources and each action must have access to, what appears to be, the full capabilities of that resource.
  • One exemplary operation is the simultaneous access of transient or persistent storage by more than one application. Multiple DUAs can concurrently share state—each believing it has full and exclusive access to that state—as long as a partitioning DT creates a new partition of that namespace for each DUA.
  • a “liveness DT” changes lifetime properties of certain parts of DUA state from those of its OUA, that is, it may make state that is persistent in the OUA transient in the DUA.
  • the OUA may even be purged at regularly timed intervals.
  • any other such state meta-information including, for example, access control attributes, may be set to differ using a liveness DT between the DUA and its OUA.
  • “Dynamic DTs” may be used to specify an arbitrary relationship between a certain state value found in both the DUA and the OUA.
  • a dynamic DT may remove the ability of a DUA to set volume to its maximum value, while still retaining the DUA's ability to perform operations affecting volume—simply, the dynamic DT can set OUA volume value to 90%, if the DUA volume value is set to 90% or higher, otherwise effecting an equivalence DT.
  • a dynamic DT can effect the introduction of a named state to the DUA when that state is not found in the OUA, or the removal of a named state from the DUA when that state is found in the OUA.
  • a dynamic DT may implement this, for example, by modifying the behavior of all state namespace enumeration operations—and with the assistance of a partitioning DT, either account can create or remove such (introduced or removed) state independently.
  • Derivation transformations may also specify that if an original state value is within a range [A,B] specified by the derivation rule, than the corresponding state value in the DUA is the original state value of the OUA. If not, the state value of the DUA becomes either A or B, whichever is closer to the original state value.
  • This update derivation transformation may be referred to as a “Bounded value” DT.
  • Feedback may also be bounded in a similar manner. In a feedback bounded value DT, for example, if a state value of the DUA is within a range [A,B] specified by the derivation rule, the OUA will get the state value of the DUA. Otherwise, the OUA will receive whichever of A or B is closer to the state value of the DUA.
  • derivation transformations consistent with the present invention operate on metadata.
  • it may be desired to initially provide access to all information in a data or file, but when copying is performed, it is desired to limit copying to the contents and not copy the metadata, such as access control permissions, time stamps, and name of the file.
  • the derivation rule may block the copying of the metadata but may provide different information in its place, that is, some or all of the metadata may be masked.
  • An “enumeration” transformation excludes or adds information to a list.
  • An enumeration” transformation is a variety of a masquerading transformation in the sense that it masks the real information by adding members to the real list or deleting actual members from the real list before allowing access to the list.
  • the application is executed using the DUA, not the original user account. If, for example, the DUA is a new user account, as described above, the application may be redirected to the DUA. If, in another example, the DUA is a token, as is also described above, the application may execute based on permissions in the DUA token. In still another example, the arguments of the application may be modified in accordance with the DUA so that the original application may execute on the modified arguments. The method continues from step 230 .
  • the application is executed using the DUA (step 230 ).
  • the system determines whether the resource sought by the application relates only to a specific user account (that is, a “local” resource) or is information that is shared between multiple user accounts (step 235 ). If the resource is shared, or “global,” the DUA contains derived global system state (“DGSS”) information and derivation transformation rules that update or feedback to more than one user account.
  • DGSS global system state
  • the system determines the type of access requested (steps 240 and 260 ). Additionally, the DUA or DGSS may optionally be updated by information from the OUA based on the applicable derivation rule before the requested activity is performed (steps 242 and 262 ). These actions help ensure that the system will have access to the most current information in the OUA. After the DUA or DGSS are updated (steps 242 and 262 ), the requested activity is performed by reading the DUA or DGSS (steps 244 and 264 ). Depending on the type of access requested and the derivation transformation rules, the system may optionally communicate changes to the DUA or DGSS back to the OUA in a feedback transformation, if such feedback is indicated (steps 246 and 266 ).
  • FIG. 3 illustrates the components in a DUA-enabled system consistent with the present invention.
  • a application 310 requests access to a system state.
  • the system discriminates whether the system is requesting access to local state information 320 of a user account or derived global system state information 330 and directs the requesting application to the appropriate state information of the DUA.
  • the DUA state information may be updated based on the corresponding state information of the corresponding OUA and update derivation transformations (UDTs) based on the derivation rules.
  • UDTs derivation transformations
  • the DUA may feedback state information to the corresponding OUA based on a feedback transformation (FDT) and the derivation rules.
  • the derived global system state information 330 may be similarly updated based on UDTs and may feed back information to the original shared global system state based on FDTs.
  • DUA events can also occur even though no access is being made to the DUA or OUA resources.
  • DUA events may occur on a resource X at a specific time, or at specific timed intervals, or given the satisfaction of an arbitrary predicate on the system state or the system environment.
  • FIG. 4 illustrates one embodiment of a system consistent with the present invention.
  • the system in FIG. 4 represents a computer network 400 that comprises one or more client computers 404 and 414 and one or more servers 440 and 444 interconnected via network 402 .
  • client and server are used to refer to a computer's general role as a requester of data (client) or provider of data (server), however each computer may request data in one transaction and provide data in another transaction, thus changing the computer's role from client to server.
  • Client 404 may also be a thin client, which is generally understood to be a network computer without a hard disk drive.
  • Client 404 may also be a personal digital assistant (“PDA”), such as a PalmPilot, a cellular phone, or other computerized device.
  • PDA personal digital assistant
  • client 404 may be connected to one or more servers by a suitable bus or wireless connection.
  • a software application operating on client 404 may place a request that involves data stored on or instructions that are executed on Server A 420 . Since client 404 is directly connected to Server A 420 , for example, through a local area network, this request would not normally result in a transfer of data or instructions over what is shown as “network” of FIG. 4.
  • the “network” of FIG. 4 represents, for example, the Internet, which is an interconnection of networks.
  • a different request may involve data or instructions stored on Server B 422 .
  • the data may be transferred from Server B 422 through the network to Server A 420 and, finally, to computer 402 .
  • the distance between Server A 420 and Server B 422 may be very long, e.g. across states, or very short, e.g., a few inches. Further, in traversing the network the data may be transferred through several intermediate servers and many routing devices, such as bridges and routers.
  • FIG. 5 shows, in more detail, an example of a client-server system interconnected through network 500 .
  • a server system 522 is interconnected through network 500 to client system 520 .
  • Client system 520 includes conventional components such as a processor 524 , memory 525 (e.g. RAM), a bus 526 which couples processor 524 and memory 525 , a mass storage device 527 (e.g. a magnetic hard disk or an optical storage disk) coupled to processor 524 and memory 525 through an I/O controller 528 and a network interface 529 , such as a conventional modem.
  • processor 524 e.g. RAM
  • memory 525 e.g. RAM
  • bus 526 which couples processor 524 and memory 525
  • mass storage device 527 e.g. a magnetic hard disk or an optical storage disk
  • Server system 522 also includes conventional components such as a processor 534 , memory 535 (e.g. RAM), a bus 536 which couples processor 534 and memory 535 , a mass storage device 537 (e.g. a magnetic or optical disk) coupled to processor 534 and memory 535 through an I/O controller 538 and a network interface 539 , such as a conventional modem.
  • a processor 534 e.g. RAM
  • memory 535 e.g. RAM
  • bus 536 which couples processor 534 and memory 535
  • mass storage device 537 e.g. a magnetic or optical disk
  • I/O controller 538 e.g. a network interface 539
  • the present invention may be implemented in software which is stored as executable instructions on a computer readable medium on the client and server systems, such as mass storage devices 527 and 537 respectively, or in memories 525 and 535 respectively.
  • Rules or derivation transformations may be stored in, for example, memory 525 or mass storage 527 on client system 520
  • Processors 524 and 534 may be microprocessors such as the Pentium® family microprocessors manufactured by Intel Corporation. However, any other suitable microprocessor, micro-, mini-, or mainframe computer, may be used.
  • Memories 525 and 535 may include a random access memory (RAM), a read-only memory (ROM), a video memory, or mass storage.
  • Mass storage 527 and 537 may include both fixed and removable media (e.g., magnetic, optical, or magnetic optical storage systems or other available mass storage technology).
  • Memories 525 and 535 may contain a program, such as an operating system, an application programming interface (API), and other instructions for performing the methods consistent with the invention.
  • API application programming interface
  • Derived user accounts also may be generated and used in a system, such as that described in co-pending and commonly assigned U.S. patent application Ser. No. 10/082,591 (“the '591 application”), entitled “ALTERED STATES OF SOFTWARE COMPONENT BEHAVIOUR,” filed Feb. 22, 2002, which is expressly incorporated herein by reference in its entirety.
  • FIG. 6 illustrates one such exemplary system.
  • a software component 603 executing in computer memory 602 may request access to a resource, X.
  • the request may comprise arguments 607 , such as a source name or a destination name, and a requested action, such as, for example, open, read, write, list, or format.
  • the request may be intercepted by interception module 608 , which may be understood as software code residing between predefined code 605 and the actual software code that is executed in response to the request.
  • Interception module 608 captures the request, including arguments 607 , and passes the request and arguments to derivation engine 601 which, as described below, manages the actual calling of code in response to the request.
  • interception of a hardware or software supported system call may comprise redirection of an interrupt service vector to alternative code.
  • interception can take the form of the modification of dynamically-linked libraries (prior to loading or at link time, as desired).
  • redirection of the subroutine call instruction, or machine-code patching of subroutine entry code can be employed.
  • Any service dispatch mechanism based on dynamic name-resolution can be intercepted by a change in the service-lookup namespace.
  • derivation engine 601 receives a request directly from software component 608 .
  • software component 608 may call the derivation engine 601 or derivation engine 601 itself captures software component 608 .
  • derivation engine 601 may consult derivation rules 609 , which may be dynamic or static, for assistance in processing the request in accordance with the present invention.
  • Derivation rules 609 comprise derivation transformations, as described above. Based on the derivation rules 609 , derivation engine 601 determines how to direct access to a derived user account. For example, if the request specifies to write data to a location A specified by the request, in the DUA context, the arguments 607 of the request may be modified by derivation engine 601 in accordance with derivation rules 609 .
  • a request (which in this example is an application) requests that a read operation be performed on original name “/A/B,” and the appropriate derivation rule comprises the derivation transformation, Z, which specifies that read operations on /OUA/A/B should instead be performed on /DUA/A/B
  • the arguments of the request may be modified so that /DUA/A/B is the source of the data for the read operation.
  • derivation engine 601 may pass arguments 607 to predefined code 605 or alternative code 615 .
  • alternative code 615 may invoke predefined code 605 at some point during its execution.
  • alternative code 615 may modify data 617 or dynamic derivation rules 609 .
  • a result 619 may be returned from execution of predefined code 605 or alternative code 615 to derivation engine 601 .
  • Derivation engine 601 in turn, returns result 619 to software component 603 .
  • FIGS. 7 - 18 describes a secure application environment for Internet content in which modified DUAs are used (“SAE DUA IC”).
  • SAE DUA IC modified DUAs
  • the above disclosed DUAs can be modified for Internet content use or for local, trusted content use using some or all of the techniques described below.
  • a DUA performing some or all of the functions and/or procedures detailed below for Internet content can be referred to as a SAE DUA IC.
  • computing systems can implement a secured DUA that provides a seamless but secure access to Internet content by dynamically modifying the environment of a DUA in which Internet content is active.
  • This environment is advantageous in providing security over approaches that apply restrictive allow or deny semantics to operations.
  • Networking restrictions The use of network resources is partitioned, similar to the use of system resources. The integrity of a user's system can thus be protected by partitioning the network resources and allowing access to external Internet network resources through the SAE DUA IC.
  • Integration and Semantic enhancements Integrating the regular DUA and SAE DUA IC environments requires computing system enhancements that allow a user to identify activity and resources associated with Internet content. This allows safe Internet content to be used seamlessly in a regular DUA and allows user-initiated interaction from the SAE DUA IC to the regular DUA.
  • the SAE DUA IC is tailored so that the SAE DUA IC environment provides the same functionality and behavior as the regular DUA as much as possible and so that users interact with the SAE DUA IC as an extension of their environment, not as a separate security domain.
  • Performance enhancements The implementation of computing system modifications to support the SAE DUA IC is optimized to minimize the impact of the environment on a user's time and system resources.
  • FIG. 7 is a block diagram illustrating one exemplary embodiment of a computing system using a regular DUA and a protected DUA (SAE DUA IC) based on an “origination test.”
  • an origination test is made to discriminate between Internet or untrusted content and local or trusted content, e.g., content from trusted networks or on the local machine. If content is determined to be local or trusted content, the content runs in a regular DUA. If the content is determined to be Internet or untrusted content, the content runs in a protected DUA or a secure application environment using a DUA for Intent content (IC), hereinafter referred to as a “SAE DUA IC.” The origination test is described in more detail below regarding FIG. 8.
  • FIG. 8 is flow diagram of a method 800 for Internet partitioning and access control that can form part of the origination test described in FIG. 7.
  • network resources are partitioned (step 802 ).
  • a determination is made regarding which network resource originated the content (step 804 ).
  • Content is then accessed in either the protected DUA or regular DUA based on the partitioning of the network resources (step 806 ).
  • well-known services use specific transport protocols, e.g., the hyper-text transport protocol that rely on transmission control protocol (TCP) connections. These protocol identifiers can also be used to partition network resources.
  • TCP transmission control protocol
  • content received using certain protocols on a port-address pair can be designated for access in protected DUA.
  • content can be prohibited on a connection, e.g., port 80 that receives HTTP traffic over TCP, based on user datagram protocol (UDP) and raw sockets used to receive it.
  • UDP user datagram protocol
  • ports can be used for network partitioning and restrictions. It should be noted that port restrictions for protected DUA such as a SAE DUA IC can be enforced so that any Internet-connected application that uses the port on the local machine cannot send messages from inside the protected DUA to an application outside the DUA and vice versa. For example, a table as shown below, can be implemented by providing such restrictions to different environments operating within a computing system. From ⁇ To ⁇ SAE DUA IC Regular DUA Internet Local net SAE DUA IC Allowed Denied Allowed Denied* Regular DUA Denied Allowed Denied* Allowed Internet Allowed Denied* N/A N/A Local Net Denied* Allowed N/A N/A
  • the mediation of network access calls can modify the behavior of the call. For instance, connections from the SAE DUA IC to internal networks (or from the regular DUA to the Internet) can be redirected to be handled (in some cases) in another DUA instead of being denied. Networking restrictions can also be applied to applications already running in the SAE DUA IC.
  • the interception of network requests by the DUA shell allows the partitioning policy to be applied to all requests (and to deny requests for internal connections).
  • the DUA shell for the regular DUA can restrict actors in the regular DUA from accessing external addresses.
  • Proxy services can also be used to implement network partitioning of resources. Private networks connected to the Internet enforce privacy using firewalls that allow only certain network traffic to pass between the private network and a public network such as the Internet. A firewall can be used with proxy servers that allow certain types of traffic to pass between the public and private networks. This allows controlled access to content on public networks, such as the Internet, via the proxy server. Proxy services thus need special handling for specific entry-point applications. Although a proxy server contains an internal address, proxied traffic or content relates to external Internet content. As such, for proxy services, network partitioning can define proxied traffic as external or untrusted by defining the port that the proxy services uses as external. Other ports, however, can be defined as internal or trusted.
  • FIG. 9 is a block diagram illustrating one exemplary embodiment of using protected DUA 704 with a mediator 902 .
  • mediator 902 receives requests from application 904 (operating within a computing system) for content from network 906 .
  • mediator 902 can be any combination of software and/or hardware to implement the functions described herein.
  • Application 904 can act as an entry-point through which content such as Internet content enters the computing system via protected DUA 704 .
  • mediator 902 can operate within application 904 in controlling access to the content from network resource 906 for the computing system.
  • mediator 902 can implement simple access control restrictions for application 904 using protected DUA 704 using any number of techniques.
  • mediator 902 allows or denies application 904 access to content from network resource 906 depending on the request from application 904 that is assigned to protected DUA 704 .
  • Other examples allow application 904 to make requests that are transparent and redirected to protected DUA 704 or a regular DUA such as DUA 702 .
  • Application 902 operating with mediator 902 can be referred to as “integrated entry-point applications.” Entry-point applications that are not integrated are either prohibited for security purposes or can be allowed to operate within, e.g., a regular DUA.
  • Mediator 902 can also handle system calls from a computing system's operating system dealing with abstractions, such as files, memory addresses, window objects, etc., that can be accessible in protected DUA 704 . This requires mediator 902 to work with an entry-point application's abstractions such as email messages, URLs, and email attachments. In one example, mediator 902 controls or mediates access to content from network resource 906 at application layer for application 904 instead of at a system call layer of the computing system in order to implement application-specific semantics on application abstractions.
  • abstractions such as files, memory addresses, window objects, etc.
  • protected DUA 704 can take advantage of the extensible and reusable qualities of current applications.
  • most current entry-point applications are implemented at the application layer of operating system services. This provides core functions to other application layer and access to extensible new libraries or “plug-ins.”
  • Examples of this environment include browser plug-ins that allow an hyper-text mark-up language HTML browsing application to handle new data types, such as PDFs or streaming audio, or non-browser applications such as Microsoft® Outlook and Windows Explorer® using services from Explorer to render content in HTML.
  • mediator 902 runs in protected DUA 702 or even regular DUA 702 so that it cannot be compromised by untrusted content in protected DUA 704 .
  • mediator 902 can operate in between application 904 and network resource 906 in several ways, examples of which include:
  • Substitute shared libraries Many services are provided by shared libraries used by many different applications. For example, Windows® provides a “pluggable protocol handler” library that can be replaced with a library that implements new logic for handling network protocols (such as HTTP).
  • Library substitution can be implemented in several ways. For instance, to replace functionality globally, a shared library in a file system can be substituted; this library can be self-contained or perform actions (modify arguments or results) and also call the original library (perhaps renamed or moved to a different location). To replace functionality only within a specific DUA, a masquerading DT can be used to place the substitute library in the DUA's file system or registry instead of the library in the OUA.
  • a non-integrated email client can be able to freely activate Internet content contained in messages it downloads from internal mail servers, which can pose a high-risk security threat.
  • some non-integrated entry-point applications can be allowed on a computing system. For example, DNS queries or office productivity applications that allow users to download new fonts, templates, and clip art (but do not allow arbitrary network connections) can be allowed.
  • Some non-integrated entry-point applications can be forbidden to be run on the computing system by administrative policy. Because the network layer cannot distinguish between allowed and forbidden applications, forcing a user to use integrated entry-point applications may be problematic.
  • FIG. 10 is a flow diagram of a method for processing an intercepted network request.
  • a network request from an application is intercepted (step 1002 ).
  • Such an interception can be performed by mediator 902 for a request from application 904 to access content from network resource 906 regarding FIG. 9.
  • the request is redirected to a protected DUA, such as protected DUA 704 , or a regular DUA, such as regular DUA 702 .
  • FIG. 11 is block diagram illustrating one exemplary embodiment of system 11100 integrating multiple types of applications in a protected DUA 704 .
  • a web browser 1102 email client 1104 , and instant messaging client 1106 are shown that are integrated into protected DUA 704 .
  • these applications can be entry-point applications for a computing system.
  • any number of applications can be integrated into protected DUA 704 .
  • the following describes web browser 1102 being integrated into protected DUA 704 .
  • the main abstraction used by web browser 1102 is a URL that identifies websites on the Internet.
  • Other abstractions can include bookmarks list, cookies, cache of visited URLs, certificates, preferences, etc.
  • Such abstractions can be used to partition network resources, as described above regarding FIGS. 7 and 8, for use by protected DUA 704 .
  • Network Restrictions In order to make web browser 1102 an entry-point application, several elements may be used: Network Restrictions, Assignment of Requests to a DUA, and DTs to handle application abstractions in the protected DUA 704 . These elements are described in further detail below.
  • a URL consists of three parts: protocol identifier (http, ftp, nntp, etc); network address and port identifier (a default port is implied by the protocol); and URL identifier that is the name of the resource that maps to the address of the specified port.
  • protocol identifier http, ftp, nntp, etc
  • URL identifier that is the name of the resource that maps to the address of the specified port.
  • the address, port, and protocol can be matched against a network restriction policy to determine if the request is trusted content or untrusted (or Internet) content.
  • the network restrictions can have policies that restrict protocols or ports in addition to addresses.
  • mediator 902 can perform the integration by intercepting a request from web browser 1102 . In this process, mediator 902 fetches a new URL before web browser 1102 opens a network connection. Mediator 902 determines if the requested protocol and location are allowed to be accessed from the protected DUA 704 in which web browser 1102 may be running in. Otherwise, mediator 902 can invoke a process to start web browser 1102 to service the request in a different DUA such as a regular DUA 702 . Additional policies can also be implemented by the mediator 902 . For example, if a web page contains frames and one of the frames contains internal content and the other contains Internet content, mediator 902 might have a policy that only fetches the URL for one of the frames and returns a protocol error for the other.
  • requests for web browser 1102 that are not allowed in a regular DUA are handled by starting web browser 1102 in the protected DUA 704 , such as a SAE DUA IC, and vice versa.
  • mediator 902 ensures that application-specific resources exist in the protected DUA 704 . Examples of these resources include bookmark lists, cookies, cache of visited URLs, certificates, and preferences. In some examples, most of these resources are translated to the protected DUA 704 by using a copying DT. However, some exceptions exist.
  • Cookies are stored with an associated website address. Cookies associated with internal websites can be excluded from the protected DUA 704 by, for example, using an enumeration DT. If cookies are tagged when stored on the file system, mediator 902 can use a special code to seek cookie names on the file system. Within the protected DUA 704 , a library call can look up a cookie in file storage that needs to be intercepted by mediator 902 to have its argument modified by applying an appropriate tag. The result can be modified to remove the tag before web browser 1102 uses the cookie.
  • Certificates issued to a user might contain information that should be kept private, especially certificates that identify a user within his or her enterprise. Certificates from Certificate Authorities (CAs) can be used to validate certificates delivered by servers on the Internet. As such, CA certificates can be copied to the protected DUA 704 . In some examples, certificates can be excluded from the protected DUA 704 by using an enumeration DT with the certificate database or by using a masquerading DT that substitutes the default database that is delivered with web browser 1102 for the user's database. If usability and security conflicts cannot be resolved, a regular DUA can be used to provide some operability in order for the user to specify which certificates are available in the protected DUA 704 .
  • Preferences and other application-specific settings can include information that should remain secret, and include other generic information such as default fonts, colors, etc. that should be copied to the protected DUA 704 using an update DT (UDT) and copied to a regular DUA using a feedback DT (FDT). In this manner, the user's experience of a regular DUA is preserved in the protected DUA.
  • UDT update DT
  • FDT feedback DT
  • multiple DTs may apply to entries in preferences table, which can be in files, registry entries, etc. Information such as a user's name and passwords can be masqueraded.
  • Changes to bookmarks, cookies, and the cache of URLs can be propagated to the OUA by FDTs.
  • the protected DUA 704 adds an entry to these lists that should be tagged or labeled to indicated untrusted content or Internet content.
  • the main abstraction used by email client 1104 is an email message.
  • Other abstractions can include address book information, attachments, mailboxes, certificates, credentials, and preferences.
  • Integrating email client 1104 involves intercepting and modifying operations for email messages and adding support to view or activate message contents in protected DUA 704 . The integration process for email client 1104 is described in further detail below.
  • mediator 902 intercepts, modifies, and determines whether an email message contains any external content and tags the email message if it contains external content.
  • mediator 902 uses a tag that is a persistent identifier applied to all email with Internet content.
  • mediator 902 can intercept calls to retrieve messages from a mail server, then inspect and tag messages before returning them to email client 1104 .
  • mediator 902 intercepts operations that open a message, such as read, reply, forward, attach to new message, and print. If tagging is not performed when an email message is retrieved, tagging can also be done when the email message is opened.
  • mediator 902 can determine whether to open it in a regular DUA or the protected DUA 704 .
  • tagged messages and attachments can be activated in the protected DUA.
  • the tag should travel with the email message if, for example, it is forwarded to other users.
  • email client 1104 may need to be modified to also tag email messages when it sends them.
  • Email messages include meta-information in “mail headers.”
  • a set of standard headers are defined by the Simple Mail Transfer Protocol (SMTP) for labeling Internet email. SMTP also specifies methods for appending non-standard headers.
  • Other mail exchange protocols such as Microsoft's Messaging Application Programming Interface (MAPI) also contain headers.
  • the headers contain information that identifies the sender, recipient, mail transfer servers, time sent, and any attachments included with the main message body.
  • the mail headers can indicate the source (internal or external) of an email message.
  • Other methods of determining the origin of a message include running a filter on a server that tags all messages that do not arrive from known internal mail.
  • the server can relay and separate email by network configuration policy so that internal email is sent to a mailbox on one server and external email is delivered to a separate mailbox on another server.
  • the address of server S is obained (step 1206 ). This address is matched with network restriction rules in a database (step 1212 ). Afterwards, the address of the last mail gateway before the server S is obtained (step 1211 ).
  • step 1214 a check is made to determine if the fetched message M is internal (step 1216 ). If the message M is not internal, an operation is performed to tag the message M (step 1218 ). If there are any attachments to the message, the attachments are tagged (step 1220 ). Then the message M is returned to email client 1104 for local storage.
  • step 1216 if the message is internal, a check is made to determine if there are more attachements to message M. If there are no more attachments, the method continues to step 1222 . If there are more attachments, an operation is performed to examine attachment A (step 1226 ). Next, a check is made to determine if the attachment A is tagged. If the attachment A is tagged, the method continues to step 1218 . If the attachment A is not tagged, the method continues back to (step 1224 ).
  • email client 1104 when email client 1104 connects to an external server, a new email client is launched in the protected DUA 704 and all operations on messages and attachments are activated in the protected DUA 704 .
  • email client 1104 when email client 1104 connects to an internal server, messages are fetched individually. Each message is inspected, and if it originates from an external server or contains any tagged attachments, the message is tagged. The determination of origin can be based, for example, on the SMTP “Received” header added by an email gateway server. If the message was received by a server that accepts Internet mail, any message received from that server is tagged.
  • email client 1104 exposes application programming interfaces that allow another application to perform operations (such as, for example, open, edit, print) on arbitrary messages.
  • operations such as, for example, open, edit, print
  • the entire email client runs in the protected DUA 704 and the protected DUA 704 handles even internal messages.
  • mediator 902 intercepts and acts on calls to open a tagged message.
  • Contemporary email clients such as Netscape® Communicator and Microsoft® Outlook—provide user interface controls for displaying individual messages in their own windows. This forces tagged messages to always display in such a window, thereby allowing content to be activated within the protected DUA 704 .
  • the interception might require patching email client 1104 or simply interposing a monitor at the operating system level that monitors all mouse-window interaction events and invokes the protected DUA 704 when an event indicates that the user operates on a tagged message.
  • Even a single-message viewing window instantiated in the protected DUA 704 can use some application abstractions derived from the OUA application settings. Examples of these abstractions include an address book replying to or forwarding a message, certificates for verifying signatures and signing, plug-ins or special attachment handlers, application preferences for font sizes, colors, default editing application, mail formatting options, etc., and lists of local “folders” or mailboxes for filing messages (an application-specific “save as” operation). For usability, the address book and signing certificates should be identical to the objects in the OUA, if the message comes from a “mixed use” mailbox where a user works with both internal and external email.
  • these abstractions include an address book replying to or forwarding a message, certificates for verifying signatures and signing, plug-ins or special attachment handlers, application preferences for font sizes, colors, default editing application, mail formatting options, etc., and lists of local “folders” or mailboxes for filing messages (an application-specific “save as” operation
  • a trusted path such as described in FIG. 15, can be created to establish a user's intent.
  • a dialog box for selecting messages from an address book can be replaced by an identical dialog box under the control of the mediator instead of the application. Operations on the address book are only allowed if they originate from this trusted, substitute dialog box.
  • an email virus that tries to programmatically use the address book to replicate itself will not find any entries in the address book because it is unable to use the trusted path.
  • IM client 1106 the main application abstractions used to integrate instant messaging client 1106 (“IM client 1106 ”) to the protected DUA 704 are contact, server, credentials, and preferences.
  • IM client 1106 is, in some ways, a very simplified email client.
  • the store and forward processes of an email client allow content from a variety of sources to be mixed in a single mailbox or even in a single message.
  • messages do not need to be stored, but can be sent to a single, central server and discarded if they cannot be delivered.
  • There is no sharing of content such as when one forwards an email message from a session with one contact to a session with another contact, except by using OS facilities such as copy-and-paste that can be handled safely by the protected DUA 704 .
  • IM client 1106 involves mainly separating the servers used into internal and external servers based on network restriction rules as described in FIG. 8. All sessions initiated or received are handled by an instance of IM client 1106 running in the protected DUA 704 . Because no session can be initiated or received until a user authenticates and signs into the server, the separation of a regular DUA and a protected DUA, IM client 1106 does not have to be dynamic. Moreover, when a user requests to sign in to a server, usually when IM client 1106 starts, there is no state or history that needs to be handled: the only information required is the user's credentials and list of contacts.
  • FIG. 13 is a block diagram illustrating one exemplary embodiment of a system 1300 using an application-specific protected DUA.
  • application 1302 is associated with an application-specific protected DUA 1306 .
  • protected DUA 1306 can only be used by application 1302 .
  • Internet content can be used to extend a user's computing environment by installing new applications or extensions to existing applications. Normally, these new applications or extensions modify the actual environment and can affect other applications, sometimes in intentionally adverse ways.
  • application-specific protected DUA 1306 allows users to extend their systems in this way. This DUA also allows multiple system extensions and applications to be installed and run without affecting other activities on the system or each other. If some malicious application or extension is installed, it cannot disrupt the normal environment, nor any of the other applications and data a user has downloaded from the Internet.
  • the application-specific protected DUA 1306 contains all of the new and modified resources installed, and keeps persistent objects in an area partitioned off for the application, e.g., a partitioned path in the file system or registry. Furthermore, any new resources created by using application 1302 can be stored in the partitioned space, or tagged and stored in normal repositories.
  • the application-specific protected DUA 1306 can be explicitly persistent, so that it behaves the way a user expects installed software or extensions to behave. If the computing system is restarted, application 1302 and its associated resources can still be available, and still be able to launch within the application-specific protected DUA 1306 .
  • Application 1302 that is associated with application-specific protected DUA 1306 can be made accessible as if it were an extension to the user's normal computing environment. That is, application 1302 can be invokable by using the standard user interface controls on the computing system, with application 1302 starting in its specific DUA 1306 .
  • application 1302 might appear on the Windows® Start Menu or in a special system folder for applications.
  • DTs substitute any global system resources with the resources that the application installed. For example, if application 1302 replaces a system library, the new library is stored in the application-specific protected DUA 1306 partition in the file system and requests in the DUA 1306 are redirected to the new library.
  • This overlay ensures that the application has all of the resources it requires, without affecting system resource used by other applications.
  • Application-specific protected DUA 1306 can use individual partitions, compartments, and tag identifiers. In some examples, common schemes available in the operating system can be used to minimize overhead and complexity. For example, a single tag identifier can be used for all tagged files in Windows® 2000.
  • the file-to-application associations in the users environment determine the application to launch. If application 1302 is associated with application-specific protected DUA 1306 , this DUA is used to launch application 1302 .
  • application-specific protected DUA 1306 One potential use of application-specific protected DUA 1306 is for web browser 1102 .
  • Contemporary web browsers are, in some ways, systems of their own: they provide access to content and support extensions (plug-ins) that enable new content types to be executed within their scope.
  • Application-specific protected DUA 1306 can be defined specifically for using Internet content through web browser 1102 .
  • New plug-ins and extensions such as custom toolbars can be downloaded and installed persistently.
  • Web browser 1102 for an application-specific protected DUA might not be presented as an additional application, or it can be transparently invoked whenever Internet content is accessed via web browser 1102 .
  • FIG. 14 is a flow diagram of a method 1400 for processing tagged files or email attachments for a protected DUA.
  • tagged files or email attachments are activated (step 1402 ).
  • a separate protected DUA is created (step 1404 ).
  • the protected DUA referred to in method 400 can refer to protected DUA 704 or application-specific protected DUA 1306 .
  • protected DUA 704 is referred to.
  • the effects of the activated tagged files or email attachments are contained in a separate protected DUA 704 (step 1406 ).
  • the purpose of the protected DUA 704 is to contain the scope of any operations that result from activating the tagged file or email attachment.
  • a separate protected DUA 704 can be created when tagged files or email attachments are activated.
  • the protected DUA 704 for containment operates based on at least privilege, and grants limited access rights to the application launched to activate the tagged file or email attachment.
  • the protected DUA 704 for data containment can use those system and application resources necessary to run the application, but it does not need read or modify any data files other than the resource explicitly requested by the user and any new files created during the application session.
  • the protected DUA 704 contains the effects of activating the file to the file itself. It should be noted that most content will behave properly without requiring access to read or modify other data files, memory, registry entries, etc. outside of the scope of a specific application instance.
  • application-specific semantics imply a contract or relation between a data file and other resources; these semantics can be recognized and enforced (per application) by allowing access to files that are related by some application-specific contract. For example, in some Windows® 2000 applications, saving a file as HTML creates an associated folder of support files (images, etc.). This folder is semantically an extension of the HTML data file as far as the applications are concerned;
  • access to the file should also allow access the related folder and its files, copying the file to a new location should also copy the folder, etc.
  • the protected DUA 704 for data containment is intended to facilitate the safe use of resources that already reside (tagged) in some persistent data store.
  • the protected DUA 704 is transient, and only exists while the requested application runs with the requested file or attachment open. Attempts to read other data files will either create a new protected DUA for data containment for the newly requested resource, create or use an application instance in the regular DUA (if non-tagged files are “visible” from the SAE DUA for data containment), or fail. Files that are not tagged should not be visible to an application in the protected DUA 704 , except by using user interface controls that are assured to be controlled by the user. Unless explicitly requested by the user, attempts to access other files should fail. Attempts to save or copy the file (or other data) used to launch the protected DUA 704 should save the file with a tag to permanently associate the data with a protected DUA.
  • FIG. 15 is a block diagram illustrating one exemplary embodiment of a system using a protected DUA 704 with a trusted path 1502 to protected data 1504 .
  • the protected DUA 704 can use trusted path 1502 to ensure that operations truly are user requests.
  • Trusted path 1502 can be mandatory security enforcement mechanism for which certain guarantees about the two endpoints of trusted path 1502 can be made. For example, in Windows® 2000, pressing the keys Ctrl, Alt, and Del at the same time transfers control of the system from a user's desktop to a special Windows® Security desktop. Interaction with the security desktop can occur on trusted path 1502 because the system can guarantee that only the user's keystrokes can display the desktop and that only the security desktop can be reached by those keystrokes, that is, trusted path 1502 is established explicitly by the user.
  • the protected DUA 704 would like to implicitly establish trusted paths for operations not normally associated with a security mechanism by the user such as “save a file.”
  • the protected DUA 704 thus allows a user to access protected data 1504 such as the user's address book, the file system, email folders, and windows outside of the protected DUA 704 (for operations like drag-and-drop). Such access is prohibited if it is not initiated by the user.
  • a user-initiated operation originates from somewhere in the input/output framework of the environment: typically a mouse-window interaction in a modem operating system.
  • the protected DUA 704 can establish trusted path 1502 by substituting input/output paths with a path under its control. The operations associated with the path are not allowed except via trusted path 1502 .
  • the protected DUA 704 displays a “choose location” dialog box that it controls instead of the normal dialog.
  • the protected DUA 704 can then apply policies and transformations to the request, based on the location chosen, for example, it can deny access or tag the saved filename.
  • the request is denied.
  • the same trusted paths can be used in the regular DUA for some operations. For example, launching an application to activate a file is an operation that should be regulated. In Windows® 2000, the ability to perform this operation on tagged files should be limited to double-clicking the file in some window. In this case, the application to activate the file is launched in the protected DUA 704 . Other methods for activating the file (programmatically or from the command line) might not be under the user's control and can be prohibited.
  • FIG. 16 is a block diagram illustrating one exemplary embodiment of a system having a display 1602 showing a tagged protected DUA content 1606 .
  • a protected DUA can provide a safety zone for activating Internet content within the user's computing environment.
  • protected DUA content 1606 is integrated with a users display environment having display objects 1604 unobtrusively, but easily identifiable with a marker 1606 that outlines the protected DUA content as content within a protected DUA.
  • several usability features ensure that the protected DUA operates as an integrated extension of the user's computing environment, examples of which include:
  • Visual markers For instance, visual maker 1608 identifies the protected DUA content 1606 , which can be a uniform tag, a marker on file icons, or window borders. In this example, marker 1606 is shown as a border around protected DUA content 1606 . Such indicators distinguishes DUA content from regular content in the same space, i.e., display objects 1604 such as folders of files.
  • Transient objects These objects are able to move from the protected DUA to the normal environment, with some expected modifications or restrictions to enforce security.
  • user-activated controls can be provided that allow content to be permanently removed from the protected DUA to remove the tagging.
  • Windows® and other user interface objects that host Internet content should operate in the same environment as other windows, but they should clearly indicate to the user that their contents are external and possibly not trustworthy.
  • a window that contains Internet content can be distinguished from other windows by a number of methods: changing the color of its frame, adding an additional colored frame, changing the color of the title bar, adding an icon to the title bar, etc.
  • marker 1608 can change colors to indicate that is a window for protected DUA content.
  • Persistent resources such as files, that are tagged as Internet content should also be easily distinguished from “regular” objects in the system.
  • the identifier can be the unique tag applied to a resource, although this is not the most usable solution (the name might be long and increase the time it takes for a user to understand labels).
  • the icons of tagged resources can be modified by adding some visual cue that indicates Internet content. Again such indications can be shown using marker 1608 in FIG. 16.
  • FIG. 17 is a block diagram illustrating one exemplary embodiment of a system showing a data transfer from a protected DUA 704 being intercepted to a regular DUA 702 .
  • an interception module 1704 can receive data 1702 from protected DUA 704 and convert, filter, tag the data that is delivered as data 1706 for regular DUA 1706 .
  • any data object that is saved persistently from the protected DUA 704 should be tagged by interception module 1704 so that it is permanently associated with Internet content. Applying a unique tag to resources can be defined for a general protected DUA.
  • Interception module 1704 can be application-layer code that accesses these data objects and modifies the data objects with argument DTs and result DTs. Interception module 1704 can apply and remove tags as needed.
  • the permanent tag on an object such as a file may not be removable by normal operations such as rename or copy.
  • An optional trusted path mechanism such as the one shown in FIG. 15 can be provided to allow a protected method for users to remove tags from files.
  • Operations in the regular DUA 702 can also recognize tags and modify the semantics of operations on tagged objects.
  • a tagged file is activated, e.g., as an argument to an application on the command line or in Dynamic Data Exchange messages generated by double-clicking a file, it runs in protected DUA 704 .
  • double-clicking a tagged file in the regular DUA 702 causes an application to start in the protected DUA 704 to view the file contents, even if the normal behavior is to display the contents in an application window that is already running.
  • Application-level abstractions in permanent storage that require tagging include: files in the file system, messages in mailboxes, attachments to messages, URLs in a web browser's cache, and cookies.
  • Interception module 1704 can thus intercept access to clipboard-like abstractions to ensure that only data that can certainly be defined as safe is allowed to move from the protected DUA 704 to the regular DUA 702 .
  • the data on the clipboard is converted to a known safe type (such as plain text or a bitmap image) before copying it to the destination window. Data that cannot be converted is discarded. If the data is transferred as a contained abstraction (for example, copying a mail message or file in whole, rather than some portion of the raw data it contains), the object that is copied to the destination is tagged.
  • a proxy is used between the clipboard-like transfer mechanism and the target application selected by the user. For example, in Windows® 2000, this proxy could be a small, transparent window that moves directly beneath the mouse pointer. Any window events from windows beneath the mouse are received by the transparent proxy window and only forwarded if it is safe to do so (e.g., only after it has been determined that it is safe to transfer the data).
  • a user will sometimes want to mix resources from the regular DUA 702 and the protected DUA 704 in a single application.
  • a user might include several images, some of which have been downloaded from the Internet.
  • FIG. 18 is a flow diagram of a method 1800 for monitoring resource use by a protected DUA.
  • method 1800 refers to protected DUA 704 .
  • a resource use by protected DUA 704 is monitored (step 1802 ).
  • Restrictions are imposed on the protected DUA 704 based on the monitored resource use (step 1804 ). The above steps are explained in further detail below.
  • These resources can be monitored by examining data structures or by using programming interfaces in the kernel (protected from application-level actors) of most contemporary operating systems. If the protected DUA 704 , or an actor in the protected DUA 704 , uses excessive resources, action can be taken. For example, the offending process can simply be terminated. Different actions can be applied for different resources. In particular, exceeding a disk space quota might automatically prevent further writes because it is hard to recover disk space, but exceeding a memory quota might generate a warning because the excess might be temporary and the memory is easy to recover by terminating the process.
  • the user instead of taking silent action, the user should be informed of the resource consumption and given a choice about how to proceed. For example, if an actor is consuming 70% of available memory, a user interface control can be displayed that informs the user and gives the user the option to terminate it immediately, allow it to continue, or to allow it for now and check again later. If the user does not respond to the information within a set time, the protected DUA 704 can take action automatically to prevent availability attacks that are either invisible to the user or that attempt to run while the user is not present.
  • the present invention also relates to computer readable media that include program instructions or program code for performing various computer-implemented operations based on the methods of the present invention.
  • the program instructions may be those specially designed and constructed for the purposes of the invention, or they may be of the kind well-known and available to those having skill in the computer software arts.
  • Examples of program instructions include machine code, such as produced by a compiler, and files containing a high level code that can be executed by the computer using, for example, an interpreter or equivalent execution engine to facilitate execution of high level code.
  • machine code such as produced by a compiler
  • files containing a high level code that can be executed by the computer using, for example, an interpreter or equivalent execution engine to facilitate execution of high level code.

Abstract

Methods and systems are disclosed for implementing a secure application execution environment using Derived User Accounts (SAE DUA) for Internet content. Content is received and a determination is made if the received content is trusted or untrusted content.
The content is accessed in a protected derived user account (DUA) such as a SAE DUA if the content is untrusted otherwise the content is accessed in a regular DUA if the content is trusted.

Description

    RELATED APPLICATION
  • This application claims priority to U.S. Provisional Application No. 60/387,176, entitled “METHODS AND SYSTEMS FOR IMPLEMENTING A SECURE APPLICATION EXECUTION ENVIRONMENT USING DERIVED USER ACCOUNTS FOR INTERNET CONTENT,” filed Jun. 6, 2002, which is expressly incorporated herein by reference.[0001]
  • FIELD
  • This invention relates generally to computer systems and user applications and, more particularly, to methods and systems for implementing a secure application execution environment using derived user accounts for Internet content. [0002]
  • BACKGROUND
  • The Internet has become a popular business tool. It provides rapid access to services, instant communication among users and computing systems, and allows for users to collaborate across geographical boundaries. However, in spite of these advantages, the Internet still poses a number of security risks to computing systems. In particular, the vast amount of resources available on the Internet are of unknown origin and communications with such resources are typically unauthenticated. For instance, it is difficult to determine if a access to an unknown website resource or receipt of an email causes any security risks to the receiving computing system. [0003]
  • A number of approaches are available that address the security risks associated with using the Internet. One approach involves profiling systems that scan Internet content for known patterns of malicious content such as viruses, worms, etc. Anti-virus scanning software is the most widely used profiling tool for such systems. Such a profiling tool can run automatically when receiving email or downloading web pages. In particular, a server can run profiling software to scan incoming mail or Internet content. A disadvantage of the profiling approach is that the only security risks that are detected are those based on known patterns (e.g., known viruses), which are typically stored in a database. Although the database can be updated with new known patterns, if a pattern is not found in the database, the security risk will not be detected. [0004]
  • Another approach uses cryptographic signatures for guaranteeing the origin of Internet content. A valid signature can only originate from a single signature, generally associated with a signing certificate belonging to an individual user or organization. Knowing the origin of content, a user can make informed decisions about the level of trust or permission to grant to the content. In this manner, the domain of trustable content can be determined based on the signature of the content. A disadvantage of this approach is that too few sources on the Internet use cryptographic signatures when delivering content. Furthermore, both the sending and receiving users must have keys to authenticate the signature. In addition, once content is considered trusted and allowed to run on a computing system, validating the inputs received from the system is problematic. In particular, security attacks based on passing incorrect inputs to processes are well known—e.g., attacks exploiting buffer overflows. [0005]
  • Another approach relates to behavioral pattern-matching systems. These systems monitor the execution history of a user's system, typically in the context of using Internet content. Such systems assess each operation to determine if the operation is allowable in a given context. Moreover, these systems act as dynamically-evolving access control lists in which an operation might be allowed (or not) in one context, but not in other contexts. A disadvantage of this approach is that behavior (operations in a specific context) that is not allowed is based on policy, which can become quite complex in order to prevent unsafe behavior while allowing as much useful behavior as possible. [0006]
  • Another approach uses access control restrictions that can deny certain operations from being performed in a given context. For example, “sandboxing” is a method for activating Internet content in an environment with stricter access controls than a user's normal environment. A sandbox might contain code to start a new restricted execution shell for new content (e.g., a virtual machine for Internet content). A disadvantage of this approach is that it imposes stricter access controls on an application when it is using Internet content. For example, a browser can be prevented from executing JavaScript code to access the file system, or by assigning a special user identity with less privilege than the actual user to Internet content and using the operating system's built-in, user id-based access control schemes (SubOS). [0007]
  • Another approach relates to language-based security that prevents certain statements from being made in the programming language that encodes Internet content. Specifically, this approach enforces strict type-safety to ensure that code can only operate on well-defined set of objects or resources, and compile-time or execution-time checks to ensure that code does not violate security policy. The Java programming language, for example, implements such techniques in that it does not allow a program to allocate and access arbitrary memory segments, enforces strict type definitions, and employs a run-time checks to ensure that code does not violate a user's security policy. A disadvantage of this approach is that it requires knowledge of sophisticated programming techniques. [0008]
  • With all of these approaches, there are drawbacks in providing security for Internet content. Furthermore, any approach protecting computing systems from risks relating to Internet use is more useful if it also preserves the unrestricted access to services and content that makes Internet use productive and valuable. Most approaches to the security issue so far have constrained or interrupted much of the freedom to use resources on the Internet in order to provide some increase in security. [0009]
  • SUMMARY
  • According to one aspect of the invention, a method is disclosed for providing secure content use. Content is received and a determination is made if the received content is trusted or untrusted content. The content is accessed in a protected derived user account (DUA), if the content is untrusted; otherwise, the content is accessed in a regular DUA, if the content is trusted. [0010]
  • According to another aspect of the invention, a computing system is disclosed for providing secure content use comprising at least one memory and a processor. The at least one memory hosts a protected DUA and a regular DUA. The processor is configured to receive content for the computing system and to determine if the received content is trusted content or untrusted content. The processor is also configured to access the content using the protected DUA if the content is untrusted and to access the content using a regular DUA if the content is trusted. [0011]
  • DESCRIPTION OF THE DRAWINGS
  • The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate exemplary implementations and embodiments of the invention and, together with the detailed description, serve to explain the principles of the invention. In the drawings, [0012]
  • FIG. 1 is block diagram of an exemplary computing system architecture for implementing user accounts; [0013]
  • FIG. 2 is a flow diagram of a method for performing access operations using a derived user account; [0014]
  • FIG. 3 is block diagram of a system for performing operations accessing state of a derived user account in a multi-user system; [0015]
  • FIG. 4 illustrates one embodiment of a system for using DUAs and implementing ADAS for an application; [0016]
  • FIG. 5 shows, in more detail, an example of a client-server system interconnected through network; [0017]
  • FIG. 6 is a block diagram illustrating one exemplary embodiment of a system using DUAs; [0018]
  • FIG. 7 is a block diagram illustrating one exemplary embodiment of a system using regular and protected DUAs; [0019]
  • FIG. 8 is flow diagram of a method for network resource partitioning and access control; [0020]
  • FIG. 9 is a block diagram illustrating one exemplary embodiment of a system using a protected DUA with a mediator; [0021]
  • FIG. 10 is a flow diagram of a method for processing an intercepted network request; [0022]
  • FIG. 11 is block diagram illustrating one exemplary embodiment of a system integrating multiple types of applications in a protected DUA; [0023]
  • FIG. 12 is a flow diagram of a method for using network restrictions to identify tagged messages with Internet content; [0024]
  • FIG. 13 is a block diagram illustrating one exemplary embodiment of a system using an application-specific protected DUA; [0025]
  • FIG. 14 is a flow diagram of a method for processing tagged files or email attachments for a protected DUA; [0026]
  • FIG. 15 is a block diagram illustrating one exemplary embodiment of a system using a protected DUA with a trusted path; [0027]
  • FIG. 16 is a block diagram illustrating one exemplary embodiment of a system having a display showing a tagged protected DUA content; [0028]
  • FIG. 17 is a block diagram illustrating one exemplary embodiment of a system showing a data transfer from a protected DUA being intercepted to a regular DUA; and [0029]
  • FIG. 18 is a flow diagram of a method for monitoring resource use by a protected DUA.[0030]
  • DETAILED DESCRIPTION
  • Reference will now be made in detail to exemplary implementations and embodiments of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. [0031]
  • A. Overview [0032]
  • Methods and systems are disclosed that overcome prior approaches to protecting Internet use from security risks by providing a secure application execution environment using derived user accounts (“SAE DUA”) for Internet content. According one example, content is received and a determination is made if the received content is trusted or untrusted content. The content is accessed in a protected derived user account (DUA) such as a SAE DUA, if the content is untrusted; otherwise, the content is accessed in a regular DUA, if the content is trusted. For Internet content, the secured environment can be referred to as a “SAE DUA IC.”[0033]
  • In this manner, a secured environment is available for a user to have unmitigated access to untrusted content such as Internet content. A user can thus view and access Internet content while protecting the user's computing system from security risks. The SAE DUA IC can be used if the content is untrusted and a regular DUA can be used if the content is trusted. In such an environment, semantics can be used that are nearly identical to a user's original user account (OUA) within the same computing system. [0034]
  • Thus, a user can freely enjoy the same benefits of Internet content that would be available without any security protections. Such a secured environment prevents corrupt or security adverse Internet content within a computing system from affecting a user's OUA. As such, the security risks posed by Internet content are contained within a secured environment such as a SAE DUA IC, thereby a user's actual computing system can remain protected. [0035]
  • B. User Accounts and Derived User Accounts (DUAs) [0036]
  • The following description details user accounts and DUAs. In order to obtain an understanding of derived user accounts, user accounts must first be explained. User accounts limit the effects of activities by different users to that intended and expected by the users on desktop sharing systems. In particular, user accounts encapsulate the information particular to each individual user, such as the user's name, password, area of transient and persistent storage, configuration information, resource-usage quotas and other properties to be enforced on the user's behavior. By using user accounts, time sharing could be implemented without compromising the systems usability. Whereas previous computer system operations always directly affected the global state of the machine, operations on a user's behalf in systems implementing user accounts typically affect only the information in the user's account. In this manner, each user's actions became isolated from other users since, for the most part, they only affected the individual user's account information. [0037]
  • FIG. 1 illustrates the components in a [0038] computing system 100 implementing user accounts. Each operation that involves accessing the state of the system is discriminated to determine if the state being accessed is local to an individual user account or global to the entire system (and therefore shared between all user accounts). If access is to a user-local state, the discrimination procedure determines the context of the access operation, that is, which user's account information to access. In such a computing system, context may be determined by, for example, using a low-level indirection (for memory accesses), the current virtual memory page tables, or a user account reference in each process or thread control block (for system calls).
  • Thus, user accounts can be very useful. They enhance usability when multiple individuals simultaneously use a computing system and allow for segregation of system activity based on intent. For example, conventional systems may use a supervisor user account, called “root,” to run background services. Also, web-server activities may operate as “nobody,” that is, a user account with very limited privileges. Additionally, user accounts are integral to maintaining the security of a multiple user computer system since they may be used to control which data a user may access or actions a user may perform. [0039]
  • DUAs will now be described for certain system operations. DUAs, such as those disclosed in co-pending and commonly owned U.S. patent application Ser. No. 10/144,048, entitled “METHODS AND SYSTEMS FOR USING DERIVED USER ACCOUNTS,” filed May 10, 2002, which is incorporated herein by reference, can be used to implement the techniques disclosed herein. DUAs may have all of the properties of traditional user accounts including, but not limited to, its own state, distinct privilege and access control rules, its own unique identifier (such as a security token), and ownership of any system resources. In addition, DUAs are linked to at least one particular existing user account (the Original User Account, or OUA). Through use of a DUA, its OUA may be selectively isolated from system operations taking place in the DUA's context. Since the DUA is a legitimate user account, legacy processes will function correctly in a DUA context while modifications to the OUA can be limited through choice of derivation transformations (“DTs”) specified by a set of derivation rules (“DRs”). [0040]
  • FIG. 2 illustrates the steps of a method for accessing a resource using a derived user account consistent with the present invention. In one embodiment, a software application, P, requests access to a resource, X (step [0041] 210). A “resource” may be, for example, state information, such as data that lies in memory, file systems, registry configurations, other applications, processes, network ports, semaphores, window handles in graphical user interface (“GUI”) systems, hardware devices such as a soundcard or printer, or other named abstractions. The system determines if the software application is already running in the context of a DUA (step 220). Methods for determining the context of an object, thread, or other activity are well known to those skilled in the computer software arts. For example, in Microsoft Windows 2000, determining whether a thread is running under a local administrator account may be accomplished by examining the access token that is associated with the thread, the thread's identifier, the thread's creation time, or any other identifier that may be mapped to a specific user account.
  • If the software application is not running in the context of the DUA, the application determines if a DUA should be “created” (step [0042] 222). If the application determines that a DUA should not be created, the application continues normally as in step 280.
  • If it is determined that a DUA should be created (step [0043] 224), a DUA may be created according to any of the following exemplary embodiments. In some embodiments consistent with the present invention, a DUA shell may be created by, for example, creating a new user account, “user 2,” that may comprise a set different than, or a subset of, the rights and permissions afforded the original user. A DUA shell is the context and the mechanism for propagating the context. The context includes, for example, all information that would normally be associated with an operation in the OUA, such as user credentials, process id, and other information. DUA shells allow for the automatic propagation of DUA context to all DUA activity, for example, processes or threads, whether they be created directly or indirectly as a result of DUA activity. The initial DUA shell may have been established before run-time or established dynamically during operation of the operating system. The creation of the DUA shell may have been invoked randomly or triggered by some event, such as a write access operation.
  • In this exemplary embodiment, the new user account may comprise rights and permissions that the original user does not have. The new user account, or DUA shell, may be created, for example, by using the existing user account mechanisms in the operating system. Additionally, the ownership of files or objects created or owned by user 2 may need to be modified post-creation to allow the corresponding OUA to have access, if access by OUA is desired. Similarly, user 2 may, by default, access to none or all of the files or objects created or owned by the OUA. [0044]
  • In another exemplary embodiment, a DUA shell may be created by creating a new, possibly restricted, login session or token for the OUA (called OUA′, or “OUA prime”). OUA′ is distinct and separate from the original OUA session or token, but may have all the same privileges for resources as the OUA, such as, for example, ability to use the same display. In some exemplary embodiments, OUA′ may have fewer capabilities than OUA (for example, may not be able to shut down the machine or modify the screen resolution). However, by creating a DUA shell in this fashion in, for example, the Microsoft Windows operating system, the activity of OUA′ may be discriminated as the associated token that is automatically propagated to any processes, thread, or other activity created directly or indirectly by OUA. [0045]
  • In yet another embodiment, a process group (in Windows 2000, a “job”) may implement the DUA shell. As well as being able to implement a DUA shell, a process group or job may also enforce quotas on resource consumption and, in other ways, control access to resources. For example, a process group or job may perform the automatic context propagation needed for discrimination of the DUA activity. [0046]
  • In still another embodiment, a DUA shell may be created by annotating certain OUA activity as actually belonging to the DUA. Annotation occurs when new OUA activity (that actually belongs to the DUA) is initiated such as, for example, on the creation of a thread, process, or other activity, or the impersonation of the OUA. Annotation may take the form of unique bits or an arbitrary sequence of bits associated with the OUA activity. One example is the use of a distinguished entry in handle tables or file descriptor tables. The annotation may be placed on any one or more components of the OUA activity. [0047]
  • In addition, the annotation may be placed on any information in the kernel thread control block (“TCB”) or kernel process control block (“PCB”), assuming execution in an operating system with a protected mode kernel. One benefit of annotating information in the kernel TCB or PCB is that the annotation can not be compromised by DUA application activity. In certain embodiments, it is preferred that the annotations are not modified in the ordinary course of events. [0048]
  • In some embodiments where DUA shell implementations automatically propagate the context, the annotation may be done automatically. In other embodiments, such as the embodiment immediately above, new threads, processes, or other activity of the DUA, and those impersonating the DUA, may need to be intercepted and annotated as being in DUA, not OUA, context. In still further embodiments, annotation may involve a combination of automatic annotation and non-automatic annotation. [0049]
  • The DUA may be initialized and maintained based on derivation transformations (“DTs”) and derivation rules (“DRs”). Derivation rules are a set of rules that link any aspect of a DUA with the corresponding aspect of its OUA. The derivation rules for a resource, X, include DTs, which are computable functions that take an input, modify the input, and return an output. An argument derivation transformation (“ADT”) generally receives an argument as input, modifies the input, and returns a second argument as output, although in some embodiments, an ADT does not modify anything. A result derivation transformation (“RDT”) takes as input certain values, modifies the values, and returns modified values. An “update DT” or “UDT” may update the state of a DUA based on its corresponding OUA whereas a “feedback DT” of “FDT” may give feedback from the state of a DUA to the state of its corresponding OUA. [0050]
  • The derivation rules and transformations may be authored by a developer or system administrator. In some embodiments, the derivation rules and transformations may be initially authored by a developer or system administrator but are later modified dynamically. Dynamic rules may be modified during run time according run time dependent conditions or other conditions. [0051]
  • In one embodiment, the derivation rules may take the form of script-like directives. For example, an author of rules may use a text editor or similar device to create a human-readable text file containing the rules. In other embodiments, the rules may be authored in semantic formats such as or similar to known scripting languages or high-level computer languages, or in other formats well know to those skilled in the computer software arts. In still other embodiments, the rules are compiled or otherwise processed by a rule generator into a machine-readable form, which is in turn used by the computer system at run time. [0052]
  • The following is one example of derivation rules consistent with the present invention. The first table comprises an exemplary set of rules for DUA events; the second table comprises an exemplary set of rules for OUA events. Each line in the tables represents a derivation rule which describes the actions that will take place for a particular resource access. [0053]
    DUA TABLE
    orgname name1 name2 open read write list format
    /A/B /OUA/ /DUA/ U:X U:Z F:Y U:V
    A/B A/B F:T
    /R/S /MASQ/ /DUA/ U:X′
    R/S R/S
    /DEV3 /DEV/ /DEV/ U:K0
    NUL HD1 A:name1
  • [0054]
    OUA TABLE
    orgname scrname destname open read write list format
    /A/B /DUA/A/B /OUA/A/B F:Y U:W
  • As shown in the first line of the DUA table above, if an application operating in DUA context refers to IA/B (“orgname”), and the operation is “read,” an update derivation transformation, Z, will be performed using /OUA/A/B as the source (“name1”) and as the destination (“name2”), after which the actual read operation will be performed on the destination. This in one example of an ADT. [0055]
  • In the example above, the update transformation, Z, may also be followed or preceded by a feedback transformation, T, using /DUA/A/B as the source (“name2”) and /OUA/A/B as the destination (“name1”). [0056]
  • If an application refers to /R/S/ and the operation is “open,” the UDT, V, will be performed taking /MASQ/R/S as the input and /DUA/R/S as the output, after which the open operation will actually be performed on /DUA/R/S. /MASQ/R/S is data introduced by the DUA mechanism or the rules and, as described below, may be unrelated to the OUA. [0057]
  • In some embodiments, whether or not a DT is specified, the operation is performed on an actual named resource or object, with the rules having as a default one of the names specified in the DUA table above. In this particular example, name2 represents the actual named resource accessed by all operations by default as specified by design. As shown in the third line of the DUA table, in some embodiments, the operation may be performed on name1, as specified, overriding the default case. This last example may be considered one example of an ADT, as the orgname is modified to name2. [0058]
  • Referring now to the OUA table above, if OUA activity refers to /A/B, and the operation is “read,” the system will perform a feedback transformation, Y, using IDUA/A/B as input and /OUA/A/B as output before actually performing the read operation on /OUA/A/B. [0059]
  • There are many possible types of derivation transformations, some examples of which are as follows. “Equivalence DTs” may be used to ensure certain parts of the DUA state and the OUA state remain identical. In this case, for example, the state of the DUA may be copied back to the OUA in a feedback DT or the state of the DUA may be refreshed, for example, by an update DT that copies over one or more aspects of the DUA with information from the OUA. Equivalence DTs may be useful in cases where it is desired to have changes in either the DUA or OUA automatically reflected in the other. For example, the system volume control state may need an equivalence DT if volume changes in a DUA are to have the expected effect. [0060]
  • A “copying DT” can ensure that parts of DUA state are copies of the corresponding OUA state, and that any modifications are performed only on the DUA copy. Copying DTs may be used to limit the effects of operations in DUA context upon the information of its OUA. Copying DTs may be useful in situations where a user may wish to evaluate effects of operations on the system without applying them to the OUA. One example of this would be during installation of new software or during debugging of software. If errors occur while operating with a modified DUA, the original OUA is never actually modified. Thus, operations may revert to the original OUA, and the system may be very quickly and easily returned to the old state. In some embodiments, a user may wish to use a copy DT in non-experimental situations where the system is deliberately operated in the DUA context with no intentions of ever modifying the OUA. This may be useful, for example, for security or integrity reasons. In these embodiments, the DUA may be deliberately discarded after the requested action is performed without update to the OUA. [0061]
  • Yet another example of a derivation transformation is a “masquerading DT.” Masquerading DTs can specify properties for certain parts of a DUA state, irrespective of the corresponding state of its OUA. Masquerading DTs can be used to perform operations in a DUA where certain states have values unrelated and (perhaps radically) different from that state's values in the OUA. In fact, a masquerading DT may specify that the data for the DUA may be taken from a source other than the OUA. This type of derivation transformation allows operations to be performed in a modified version of the OUA context. Masquerading DTs may be useful in cases of experimentation because the performance of the system using modified state information may be evaluated without modifying the OUA. [0062]
  • A “partitioning DT” ensures that there is no overlap between certain aspects of the DUA and the OUA state, that is, partitioning their namespace or other sets of values. For example, a partitioning DT may assign a new name, Z, to the DUA and rename the resource, X, to be Y, defined as the concatenation of X with Z. Then, the application is allowed to access the resource Y without accessing the original resource X. Partitioning DTs may be necessary when multiple entities, such as the OUA and DUA, or even multiple DUAs, are concurrently sharing resources and each action must have access to, what appears to be, the full capabilities of that resource. One exemplary operation is the simultaneous access of transient or persistent storage by more than one application. Multiple DUAs can concurrently share state—each believing it has full and exclusive access to that state—as long as a partitioning DT creates a new partition of that namespace for each DUA. [0063]
  • A “liveness DT” changes lifetime properties of certain parts of DUA state from those of its OUA, that is, it may make state that is persistent in the OUA transient in the DUA. The OUA may even be purged at regularly timed intervals. Conversely, any other such state meta-information including, for example, access control attributes, may be set to differ using a liveness DT between the DUA and its OUA. [0064]
  • “Dynamic DTs” may be used to specify an arbitrary relationship between a certain state value found in both the DUA and the OUA. For example, in one embodiment consistent with the present invention, a dynamic DT may remove the ability of a DUA to set volume to its maximum value, while still retaining the DUA's ability to perform operations affecting volume—simply, the dynamic DT can set OUA volume value to 90%, if the DUA volume value is set to 90% or higher, otherwise effecting an equivalence DT. Similarly, a dynamic DT can effect the introduction of a named state to the DUA when that state is not found in the OUA, or the removal of a named state from the DUA when that state is found in the OUA. A dynamic DT may implement this, for example, by modifying the behavior of all state namespace enumeration operations—and with the assistance of a partitioning DT, either account can create or remove such (introduced or removed) state independently. [0065]
  • Derivation transformations may also specify that if an original state value is within a range [A,B] specified by the derivation rule, than the corresponding state value in the DUA is the original state value of the OUA. If not, the state value of the DUA becomes either A or B, whichever is closer to the original state value. This update derivation transformation may be referred to as a “Bounded value” DT. Feedback may also be bounded in a similar manner. In a feedback bounded value DT, for example, if a state value of the DUA is within a range [A,B] specified by the derivation rule, the OUA will get the state value of the DUA. Otherwise, the OUA will receive whichever of A or B is closer to the state value of the DUA. [0066]
  • Still other examples of derivation transformations consistent with the present invention operate on metadata. For example, it may be desired to initially provide access to all information in a data or file, but when copying is performed, it is desired to limit copying to the contents and not copy the metadata, such as access control permissions, time stamps, and name of the file. The derivation rule may block the copying of the metadata but may provide different information in its place, that is, some or all of the metadata may be masked. [0067]
  • An “enumeration” transformation excludes or adds information to a list. An enumeration” transformation is a variety of a masquerading transformation in the sense that it masks the real information by adding members to the real list or deleting actual members from the real list before allowing access to the list. [0068]
  • It should be noted that there exist many possible derivation transformations and derivation rules. The list above is only exemplary and not meant to comprise the universe of allowable derivation transformations and rules. [0069]
  • Referring back to FIG. 2, once a DUA is created, the application is executed using the DUA, not the original user account. If, for example, the DUA is a new user account, as described above, the application may be redirected to the DUA. If, in another example, the DUA is a token, as is also described above, the application may execute based on permissions in the DUA token. In still another example, the arguments of the application may be modified in accordance with the DUA so that the original application may execute on the modified arguments. The method continues from [0070] step 230.
  • If the application is already operating in DUA context (step [0071] 220), the application is executed using the DUA (step 230). The system determines whether the resource sought by the application relates only to a specific user account (that is, a “local” resource) or is information that is shared between multiple user accounts (step 235). If the resource is shared, or “global,” the DUA contains derived global system state (“DGSS”) information and derivation transformation rules that update or feedback to more than one user account.
  • In either case, the system determines the type of access requested ([0072] steps 240 and 260). Additionally, the DUA or DGSS may optionally be updated by information from the OUA based on the applicable derivation rule before the requested activity is performed (steps 242 and 262). These actions help ensure that the system will have access to the most current information in the OUA. After the DUA or DGSS are updated (steps 242 and 262), the requested activity is performed by reading the DUA or DGSS (steps 244 and 264). Depending on the type of access requested and the derivation transformation rules, the system may optionally communicate changes to the DUA or DGSS back to the OUA in a feedback transformation, if such feedback is indicated (steps 246 and 266).
  • In each case, after the application performs the requested activity, the system is returned to normal operations (step [0073] 280).
  • FIG. 3 illustrates the components in a DUA-enabled system consistent with the present invention. As shown in FIG. 3, during operation of an operating system, a application [0074] 310 requests access to a system state. Consistent with the principles of the present invention, the system discriminates whether the system is requesting access to local state information 320 of a user account or derived global system state information 330 and directs the requesting application to the appropriate state information of the DUA. As shown in FIG. 3, the DUA state information may be updated based on the corresponding state information of the corresponding OUA and update derivation transformations (UDTs) based on the derivation rules. The DUA may feedback state information to the corresponding OUA based on a feedback transformation (FDT) and the derivation rules. The derived global system state information 330 may be similarly updated based on UDTs and may feed back information to the original shared global system state based on FDTs.
  • The above represents one exemplary embodiment of the present invention. In some embodiments, DUA events can also occur even though no access is being made to the DUA or OUA resources. In particular, DUA events may occur on a resource X at a specific time, or at specific timed intervals, or given the satisfaction of an arbitrary predicate on the system state or the system environment. [0075]
  • C. Exemplary System Architecture [0076]
  • FIG. 4 illustrates one embodiment of a system consistent with the present invention. In fact, any conventional computer system supporting the abstraction of user accounts may be programmed to support the principles of the present invention. The system in FIG. 4 represents a [0077] computer network 400 that comprises one or more client computers 404 and 414 and one or more servers 440 and 444 interconnected via network 402. In this specification, the terms “client” and “server” are used to refer to a computer's general role as a requester of data (client) or provider of data (server), however each computer may request data in one transaction and provide data in another transaction, thus changing the computer's role from client to server. Client 404 may also be a thin client, which is generally understood to be a network computer without a hard disk drive. Client 404 may also be a personal digital assistant (“PDA”), such as a PalmPilot, a cellular phone, or other computerized device. As shown in FIG. 4, client 404 may be connected to one or more servers by a suitable bus or wireless connection.
  • In some embodiments, a software application operating on [0078] client 404 may place a request that involves data stored on or instructions that are executed on Server A 420. Since client 404 is directly connected to Server A 420, for example, through a local area network, this request would not normally result in a transfer of data or instructions over what is shown as “network” of FIG. 4. The “network” of FIG. 4 represents, for example, the Internet, which is an interconnection of networks. A different request may involve data or instructions stored on Server B 422. In this case, the data may be transferred from Server B 422 through the network to Server A 420 and, finally, to computer 402. The distance between Server A 420 and Server B 422 may be very long, e.g. across states, or very short, e.g., a few inches. Further, in traversing the network the data may be transferred through several intermediate servers and many routing devices, such as bridges and routers.
  • FIG. 5 shows, in more detail, an example of a client-server system interconnected through [0079] network 500. In this example, a server system 522 is interconnected through network 500 to client system 520. Client system 520 includes conventional components such as a processor 524, memory 525 (e.g. RAM), a bus 526 which couples processor 524 and memory 525, a mass storage device 527 (e.g. a magnetic hard disk or an optical storage disk) coupled to processor 524 and memory 525 through an I/O controller 528 and a network interface 529, such as a conventional modem.
  • [0080] Server system 522 also includes conventional components such as a processor 534, memory 535 (e.g. RAM), a bus 536 which couples processor 534 and memory 535, a mass storage device 537 (e.g. a magnetic or optical disk) coupled to processor 534 and memory 535 through an I/O controller 538 and a network interface 539, such as a conventional modem. It will be appreciated from the description below that the present invention may be implemented in software which is stored as executable instructions on a computer readable medium on the client and server systems, such as mass storage devices 527 and 537 respectively, or in memories 525 and 535 respectively. Rules or derivation transformations may be stored in, for example, memory 525 or mass storage 527 on client system 520 or memory 535 or mass storage 537 on server system 522.
  • [0081] Processors 524 and 534 may be microprocessors such as the Pentium® family microprocessors manufactured by Intel Corporation. However, any other suitable microprocessor, micro-, mini-, or mainframe computer, may be used. Memories 525 and 535 may include a random access memory (RAM), a read-only memory (ROM), a video memory, or mass storage. Mass storage 527 and 537 may include both fixed and removable media (e.g., magnetic, optical, or magnetic optical storage systems or other available mass storage technology). Memories 525 and 535 may contain a program, such as an operating system, an application programming interface (API), and other instructions for performing the methods consistent with the invention.
  • Derived user accounts also may be generated and used in a system, such as that described in co-pending and commonly assigned U.S. patent application Ser. No. 10/082,591 (“the '591 application”), entitled “ALTERED STATES OF SOFTWARE COMPONENT BEHAVIOUR,” filed Feb. 22, 2002, which is expressly incorporated herein by reference in its entirety. FIG. 6 illustrates one such exemplary system. As shown in FIG. 6, a [0082] software component 603, executing in computer memory 602 may request access to a resource, X. The request may comprise arguments 607, such as a source name or a destination name, and a requested action, such as, for example, open, read, write, list, or format. In one embodiment consistent with the present invention, the request may be intercepted by interception module 608, which may be understood as software code residing between predefined code 605 and the actual software code that is executed in response to the request. Interception module 608 captures the request, including arguments 607, and passes the request and arguments to derivation engine 601 which, as described below, manages the actual calling of code in response to the request.
  • Techniques for intercepting the request are well known to those of ordinary skill in the software arts. For example, interception of a hardware or software supported system call may comprise redirection of an interrupt service vector to alternative code. For library-based services, interception can take the form of the modification of dynamically-linked libraries (prior to loading or at link time, as desired). For any subroutine or function-based service, redirection of the subroutine call instruction, or machine-code patching of subroutine entry code can be employed. Any service dispatch mechanism based on dynamic name-resolution can be intercepted by a change in the service-lookup namespace. [0083]
  • In other embodiments consistent with the present invention, [0084] derivation engine 601 receives a request directly from software component 608. For example, software component 608 may call the derivation engine 601 or derivation engine 601 itself captures software component 608.
  • Once the request is received by [0085] derivation engine 601, either directly or indirectly, derivation engine 601 may consult derivation rules 609, which may be dynamic or static, for assistance in processing the request in accordance with the present invention.
  • Derivation rules [0086] 609 comprise derivation transformations, as described above. Based on the derivation rules 609, derivation engine 601 determines how to direct access to a derived user account. For example, if the request specifies to write data to a location A specified by the request, in the DUA context, the arguments 607 of the request may be modified by derivation engine 601 in accordance with derivation rules 609. In one exemplary embodiment, as described with reference to the DUA table shown above, if a request (which in this example is an application) requests that a read operation be performed on original name “/A/B,” and the appropriate derivation rule comprises the derivation transformation, Z, which specifies that read operations on /OUA/A/B should instead be performed on /DUA/A/B, the arguments of the request may be modified so that /DUA/A/B is the source of the data for the read operation.
  • Once [0087] derivation engine 601 modifies arguments 607 in accordance with the derivation rules, derivation engine 601 may pass arguments 607 to predefined code 605 or alternative code 615. In addition, alternative code 615 may invoke predefined code 605 at some point during its execution. In some embodiments, alternative code 615 may modify data 617 or dynamic derivation rules 609. A result 619 may be returned from execution of predefined code 605 or alternative code 615 to derivation engine 601. Derivation engine 601, in turn, returns result 619 to software component 603.
  • As described in further detail below, the following implementations and embodiments can use modified derived user accounts DUAs in a secured application environment for Internet content in order to provide security protection. [0088]
  • D. Secure Application Execution Environment using DUAs for Internet Content [0089]
  • The following description regarding FIGS. [0090] 7-18 describes a secure application environment for Internet content in which modified DUAs are used (“SAE DUA IC”). For this type of environment, the above disclosed DUAs can be modified for Internet content use or for local, trusted content use using some or all of the techniques described below. In other words, a DUA performing some or all of the functions and/or procedures detailed below for Internet content can be referred to as a SAE DUA IC.
  • Thus, as described in FIGS. [0091] 7-18, computing systems, such as those disclosed herein, can implement a secured DUA that provides a seamless but secure access to Internet content by dynamically modifying the environment of a DUA in which Internet content is active. This environment is advantageous in providing security over approaches that apply restrictive allow or deny semantics to operations.
  • The SAE DUA IC thus activates Internet content in an environment that extends (or resides within) a user's environment, not in an environment that forces a user to choose between exclusive protection domains. In addition, the SAE DUA IC indicates the difference between local, trusted content and Internet, untrusted content and informs the user at all times when content is active in a SAE DUA IC or a regular or normal DUA. The SAE DUA IC extends a computing system operating with both a regular DUA and a SAE DUA IC in the following ways: [0092]
  • Networking restrictions: The use of network resources is partitioned, similar to the use of system resources. The integrity of a user's system can thus be protected by partitioning the network resources and allowing access to external Internet network resources through the SAE DUA IC. [0093]
  • Entry-point Application Enhancements: The SAE DUA IC relies on modification of the behavior of some applications that allow Internet content to enter the computing system. By mediating network access through these applications, content can be activated in the SAE DUA IC or regular DUA according to whether it originates from a trusted network resource. [0094]
  • Integration and Semantic enhancements: Integrating the regular DUA and SAE DUA IC environments requires computing system enhancements that allow a user to identify activity and resources associated with Internet content. This allows safe Internet content to be used seamlessly in a regular DUA and allows user-initiated interaction from the SAE DUA IC to the regular DUA. [0095]
  • Usability enhancements: The SAE DUA IC is tailored so that the SAE DUA IC environment provides the same functionality and behavior as the regular DUA as much as possible and so that users interact with the SAE DUA IC as an extension of their environment, not as a separate security domain. [0096]
  • Performance enhancements: The implementation of computing system modifications to support the SAE DUA IC is optimized to minimize the impact of the environment on a user's time and system resources. [0097]
  • 1. Networking Restrictions [0098]
  • FIG. 7 is a block diagram illustrating one exemplary embodiment of a computing system using a regular DUA and a protected DUA (SAE DUA IC) based on an “origination test.” At [0099] block 701, an origination test is made to discriminate between Internet or untrusted content and local or trusted content, e.g., content from trusted networks or on the local machine. If content is determined to be local or trusted content, the content runs in a regular DUA. If the content is determined to be Internet or untrusted content, the content runs in a protected DUA or a secure application environment using a DUA for Intent content (IC), hereinafter referred to as a “SAE DUA IC.” The origination test is described in more detail below regarding FIG. 8.
  • a. Internet Partitioning and Access Control [0100]
  • FIG. 8 is flow diagram of a [0101] method 800 for Internet partitioning and access control that can form part of the origination test described in FIG. 7. Initially, network resources are partitioned (step 802). Next, a determination is made regarding which network resource originated the content (step 804). Content is then accessed in either the protected DUA or regular DUA based on the partitioning of the network resources (step 806). These steps are described in further detail below.
  • Network resources can be partitioned using any number of techniques. Moreover, it should be noted that the collection of network resources need not be intrinsically partitioned into a set belonging to the protected DUA and a set belonging to the regular DUA. Thus, network resources can be partitioned into two types: (1) local or trusted and (2) Internet or untrusted. These resources can be defined by using, e.g., pattern matching rules based on namespaces or addresses. For example, a network resource having an address ““22.222.*.*” can be defined as Internet or untrusted. As such, connections or content from such an address can be assigned to a protected DUA. Alternatively, if the network resource has a trusted address space, content from such a resource can be assigned a regular DUA without imposing further restrictions or rules. [0102]
  • Other types of network resource identifiers or characteristics can be used to partition the network resources. For instance, on the Internet using the Internet Protocol (IP), IP connection endpoints are uniquely identified by an address, port, and transport protocol. Thus, not only can an IP address be used, but also port and transport protocol identifiers to partition IP related network resources. Typically, well-known services run on standard ports. As a result, different rules can be applied to ports used for sending and receiving content of unknown security. For example, content received on port [0103] 25 is for mail, port 80 and 443 for web traffic, all of which are accessed in a protected DUA. Conversely, content received on ports that are well-known, with securable semantics, e.g., port 53 connected to a trusted local network, can be accessed in a regular DUA.
  • Additionally, well-known services use specific transport protocols, e.g., the hyper-text transport protocol that rely on transmission control protocol (TCP) connections. These protocol identifiers can also be used to partition network resources. In particular, content received using certain protocols on a port-address pair, especially those not supported by the well-known service on the port, can be designated for access in protected DUA. Moreover, content can be prohibited on a connection, e.g., port [0104] 80 that receives HTTP traffic over TCP, based on user datagram protocol (UDP) and raw sockets used to receive it.
  • Furthermore, other, less-reliable abstractions can be used for network partitioning of resources. For instance, abstractions such as Internet hostnames and protocol names can be used. Internet hostnames are names or identifiers used to easily identify IP addresses, e.g., www.examplehostname.com. In addition, hostnames can be used to define internal and external sites. Common internet protocols have well-known names that are used in many contexts instead of port numbers (e.g., http for port [0105] 80, ftp for port 23, etc.). These names are used by applications in universal resource locator (URL) identifiers. Network partitioning can use these labels and even limit access to content based on this names. Because such names or identifiers are not reliable indicators of the actual protocol used on a given connection, other techniques can be used, e.g., inspecting packets to look for signature messages to regulate specific protocol traffic.
  • As noted above, ports can be used for network partitioning and restrictions. It should be noted that port restrictions for protected DUA such as a SAE DUA IC can be enforced so that any Internet-connected application that uses the port on the local machine cannot send messages from inside the protected DUA to an application outside the DUA and vice versa. For example, a table as shown below, can be implemented by providing such restrictions to different environments operating within a computing system. [0106]
    From ↓\To → SAE DUA IC Regular DUA Internet Local net
    SAE DUA IC Allowed Denied Allowed Denied*
    Regular DUA Denied Allowed Denied* Allowed
    Internet Allowed Denied* N/A N/A
    Local Net Denied* Allowed N/A N/A
  • Furthermore, the mediation of network access calls can modify the behavior of the call. For instance, connections from the SAE DUA IC to internal networks (or from the regular DUA to the Internet) can be redirected to be handled (in some cases) in another DUA instead of being denied. Networking restrictions can also be applied to applications already running in the SAE DUA IC. In particular, the interception of network requests by the DUA shell allows the partitioning policy to be applied to all requests (and to deny requests for internal connections). Similarly, the DUA shell for the regular DUA can restrict actors in the regular DUA from accessing external addresses. By implementing call interception at a low level in the kernel, network connections can be securely regulated for all DUAs. [0107]
  • b. Proxy Services [0108]
  • Proxy services can also be used to implement network partitioning of resources. Private networks connected to the Internet enforce privacy using firewalls that allow only certain network traffic to pass between the private network and a public network such as the Internet. A firewall can be used with proxy servers that allow certain types of traffic to pass between the public and private networks. This allows controlled access to content on public networks, such as the Internet, via the proxy server. Proxy services thus need special handling for specific entry-point applications. Although a proxy server contains an internal address, proxied traffic or content relates to external Internet content. As such, for proxy services, network partitioning can define proxied traffic as external or untrusted by defining the port that the proxy services uses as external. Other ports, however, can be defined as internal or trusted. [0109]
  • 2. Entry-Point Application Enhancements [0110]
  • FIG. 9 is a block diagram illustrating one exemplary embodiment of using protected [0111] DUA 704 with a mediator 902. On behalf of protected DUA 704, mediator 902 receives requests from application 904 (operating within a computing system) for content from network 906. Mediator 902 can be any combination of software and/or hardware to implement the functions described herein. Application 904 can act as an entry-point through which content such as Internet content enters the computing system via protected DUA 704.
  • In some examples, [0112] mediator 902 can operate within application 904 in controlling access to the content from network resource 906 for the computing system.
  • For example, [0113] mediator 902 can implement simple access control restrictions for application 904 using protected DUA 704 using any number of techniques. In one example, mediator 902 allows or denies application 904 access to content from network resource 906 depending on the request from application 904 that is assigned to protected DUA 704. Other examples allow application 904 to make requests that are transparent and redirected to protected DUA 704 or a regular DUA such as DUA 702. Application 902 operating with mediator 902 can be referred to as “integrated entry-point applications.” Entry-point applications that are not integrated are either prohibited for security purposes or can be allowed to operate within, e.g., a regular DUA.
  • [0114] Mediator 902 can also handle system calls from a computing system's operating system dealing with abstractions, such as files, memory addresses, window objects, etc., that can be accessible in protected DUA 704. This requires mediator 902 to work with an entry-point application's abstractions such as email messages, URLs, and email attachments. In one example, mediator 902 controls or mediates access to content from network resource 906 at application layer for application 904 instead of at a system call layer of the computing system in order to implement application-specific semantics on application abstractions.
  • In such an environment, protected [0115] DUA 704 can take advantage of the extensible and reusable qualities of current applications. In particular, most current entry-point applications are implemented at the application layer of operating system services. This provides core functions to other application layer and access to extensible new libraries or “plug-ins.” Examples of this environment include browser plug-ins that allow an hyper-text mark-up language HTML browsing application to handle new data types, such as PDFs or streaming audio, or non-browser applications such as Microsoft® Outlook and Windows Explorer® using services from Explorer to render content in HTML.
  • Because code in the application layer is not protected from access by other applications running, e.g., in a same DUA, [0116] mediator 902 runs in protected DUA 702 or even regular DUA 702 so that it cannot be compromised by untrusted content in protected DUA 704. Mediator 902 can operate in between application 904 and network resource 906 in several ways, examples of which include:
  • Use application-provided interfaces: Many applications provide programmatic interfaces that allow other applications to use their services, often in a modified way. For example, Explorer uses a Browser Helper Object (BHO) for handling requests, but an application can register to receive events from Explorer and modify a request before handing it back to the BHO. [0117]
  • Substitute shared libraries: Many services are provided by shared libraries used by many different applications. For example, Windows® provides a “pluggable protocol handler” library that can be replaced with a library that implements new logic for handling network protocols (such as HTTP). Library substitution can be implemented in several ways. For instance, to replace functionality globally, a shared library in a file system can be substituted; this library can be self-contained or perform actions (modify arguments or results) and also call the original library (perhaps renamed or moved to a different location). To replace functionality only within a specific DUA, a masquerading DT can be used to place the substitute library in the DUA's file system or registry instead of the library in the OUA. [0118]
  • Modified shared libraries: Instead of substituting a library, a mediator can be modified, or patched, before it is used. For example, by intercepting system calls that load the library, the mediator can know when an application loads a library. At that point, the library instructions in the application's memory can be modified so that alternate instructions are executed instead (or in addition). [0119]
  • Created proxy service on the local system: If no programmatic modifications can be made, a proxy service for an application (or an application function) can be created. The proxy is under the control of the protected DUA and implements mediation and modification of the data using application-level semantics. A proxy can be used even when the end application is “opaque” in the sense that its internal operation cannot be inspected or modified. An application can be made to direct all of its requests to the proxy instead of other network servers. The proxy can then implement behavior that guarantees the safety of the requested content. For example, a mail proxy might download all mail before it reaches a user's mail client application. The mail proxy could then examine each message and apply tagging to attachments so they activate in the protected DUA (many other behaviors are possible as well). [0120]
  • Any of the above techniques, tailored for the specific abstractions used by an application, can be used together to create an integrated entry-point application. [0121]
  • a. Non-Integrated Entry-Point Applications [0122]
  • Entry-point applications that are not integrated using the techniques described above might pose a security risk. Nevertheless, a non-integrated web browser can be subject to operating level networking restrictions, so that it will not be able to access content such as Internet content unless it is explicitly launched in protected [0123] DUA 704. In this manner, the non-integrated web browser will not be able to access internal content.
  • However, a non-integrated email client can be able to freely activate Internet content contained in messages it downloads from internal mail servers, which can pose a high-risk security threat. In particular, some non-integrated entry-point applications can be allowed on a computing system. For example, DNS queries or office productivity applications that allow users to download new fonts, templates, and clip art (but do not allow arbitrary network connections) can be allowed. Some non-integrated entry-point applications can be forbidden to be run on the computing system by administrative policy. Because the network layer cannot distinguish between allowed and forbidden applications, forcing a user to use integrated entry-point applications may be problematic. [0124]
  • b. Dynamic Assignment of Content to Appropriate DUA [0125]
  • FIG. 10 is a flow diagram of a method for processing an intercepted network request. Initially, a network request from an application is intercepted (step [0126] 1002). Such an interception can be performed by mediator 902 for a request from application 904 to access content from network resource 906 regarding FIG. 9. Next, the request is redirected to a protected DUA, such as protected DUA 704, or a regular DUA, such as regular DUA 702. These steps are described in further detail below.
  • The above steps can implement network restrictions or access control mechanisms that prevent a user of an application from accessing untrusted content such as Internet content in a normal manner, which can pose high-security risk. By intercepting the request, content (i.e., untrusted content) can be accessed in a secure environment of a protected DUA. Nevertheless, content can also be accessed in a less secure environment of a regular DUA. [0127]
  • It should be noted that allowing an application to succeed in making a forbidden request by handling the request in another DUA is generally not possible. Specifically, when a network request that is not allowed is intercepted, it is not practical or secure to reinstantiate the calling process in a different DUA, nor to replicate the process state and create a duplicate in another DUA. Most applications require large amounts of private state information and use a number system resources. Thus, it is not recommended to replicate all of those resources dynamically in another DUA, and simply start a new instance of the application. Such a process can destroy state and execution context information that might be important for particular network request. As such, referring back to FIG. 9, [0128] mediator 902 for protected DUA 704 is discouraged from switching to another DUA.
  • c. Integrating a Web Browser Application [0129]
  • FIG. 11 is block diagram illustrating one exemplary embodiment of system [0130] 11100 integrating multiple types of applications in a protected DUA 704. In this example, a web browser 1102, email client 1104, and instant messaging client 1106 are shown that are integrated into protected DUA 704. Thus, these applications can be entry-point applications for a computing system. Furthermore, any number of applications can be integrated into protected DUA 704. For purposes of explanation, the following describes web browser 1102 being integrated into protected DUA 704.
  • The main abstraction used by [0131] web browser 1102 is a URL that identifies websites on the Internet. Other abstractions can include bookmarks list, cookies, cache of visited URLs, certificates, preferences, etc. Such abstractions can be used to partition network resources, as described above regarding FIGS. 7 and 8, for use by protected DUA 704.
  • In order to make [0132] web browser 1102 an entry-point application, several elements may be used: Network Restrictions, Assignment of Requests to a DUA, and DTs to handle application abstractions in the protected DUA 704. These elements are described in further detail below.
  • i. Handling Network Restrictions and Assigning Requests to a DUA [0133]
  • Network restrictions are determined for the URL of a request, that is, before the request is passed to network system calls in a computing system. In one example, the handling of the request is processed by a proxy or proxies. The proxy or proxies can determine whether the request is for Internet content. Such a determination should not occur before the request is forwarded to the proxy or proxies. [0134]
  • A URL consists of three parts: protocol identifier (http, ftp, nntp, etc); network address and port identifier (a default port is implied by the protocol); and URL identifier that is the name of the resource that maps to the address of the specified port. In order to perform the integration for [0135] web browser 1102, the address, port, and protocol can be matched against a network restriction policy to determine if the request is trusted content or untrusted (or Internet) content. Moreover, the network restrictions can have policies that restrict protocols or ports in addition to addresses.
  • Referring back to FIGS. 9 and 11, [0136] mediator 902 can perform the integration by intercepting a request from web browser 1102. In this process, mediator 902 fetches a new URL before web browser 1102 opens a network connection. Mediator 902 determines if the requested protocol and location are allowed to be accessed from the protected DUA 704 in which web browser 1102 may be running in. Otherwise, mediator 902 can invoke a process to start web browser 1102 to service the request in a different DUA such as a regular DUA 702. Additional policies can also be implemented by the mediator 902. For example, if a web page contains frames and one of the frames contains internal content and the other contains Internet content, mediator 902 might have a policy that only fetches the URL for one of the frames and returns a protocol error for the other.
  • ii. DTs for Handling Application Abstractions [0137]
  • Referring back to FIGS. 9 and 11, requests for [0138] web browser 1102 that are not allowed in a regular DUA (such as regular DUA 702) are handled by starting web browser 1102 in the protected DUA 704, such as a SAE DUA IC, and vice versa. In order to obtain identical functionality for a user regardless of the DUA being used that hosts web browser 1102, mediator 902 ensures that application-specific resources exist in the protected DUA 704. Examples of these resources include bookmark lists, cookies, cache of visited URLs, certificates, and preferences. In some examples, most of these resources are translated to the protected DUA 704 by using a copying DT. However, some exceptions exist.
  • Cookies are stored with an associated website address. Cookies associated with internal websites can be excluded from the protected [0139] DUA 704 by, for example, using an enumeration DT. If cookies are tagged when stored on the file system, mediator 902 can use a special code to seek cookie names on the file system. Within the protected DUA 704, a library call can look up a cookie in file storage that needs to be intercepted by mediator 902 to have its argument modified by applying an appropriate tag. The result can be modified to remove the tag before web browser 1102 uses the cookie.
  • Certificates issued to a user might contain information that should be kept private, especially certificates that identify a user within his or her enterprise. Certificates from Certificate Authorities (CAs) can be used to validate certificates delivered by servers on the Internet. As such, CA certificates can be copied to the protected [0140] DUA 704. In some examples, certificates can be excluded from the protected DUA 704 by using an enumeration DT with the certificate database or by using a masquerading DT that substitutes the default database that is delivered with web browser 1102 for the user's database. If usability and security conflicts cannot be resolved, a regular DUA can be used to provide some operability in order for the user to specify which certificates are available in the protected DUA 704.
  • It should be noted that, as a general scheme, one can initialize an application in a dummy user account to get a safe, default set of sensitive information such as certificates or email address book entries. This is accomplished by creating a separate “dummy” user account on the system, run the application once under that user account so its initialization is complete, and then copy the data over to the part of the system where masquerading data is kept. [0141]
  • Preferences and other application-specific settings can include information that should remain secret, and include other generic information such as default fonts, colors, etc. that should be copied to the protected [0142] DUA 704 using an update DT (UDT) and copied to a regular DUA using a feedback DT (FDT). In this manner, the user's experience of a regular DUA is preserved in the protected DUA. When web browser 1102 launches in the protected DUA 704, multiple DTs may apply to entries in preferences table, which can be in files, registry entries, etc. Information such as a user's name and passwords can be masqueraded.
  • Changes to bookmarks, cookies, and the cache of URLs can be propagated to the OUA by FDTs. For security purposes, when using the protected [0143] DUA 704, the protected DUA 704 adds an entry to these lists that should be tagged or labeled to indicated untrusted content or Internet content.
  • d. Integrating an Email Client [0144]
  • Referring back to FIG. 11, the main abstraction used by [0145] email client 1104 is an email message. Other abstractions can include address book information, attachments, mailboxes, certificates, credentials, and preferences. Integrating email client 1104 involves intercepting and modifying operations for email messages and adding support to view or activate message contents in protected DUA 704. The integration process for email client 1104 is described in further detail below.
  • 1. Network Origination Test and Tagging Messages and Attachments [0146]
  • Referring back to FIGS. 9 and 11, [0147] mediator 902 intercepts, modifies, and determines whether an email message contains any external content and tags the email message if it contains external content. In one example, mediator 902 uses a tag that is a persistent identifier applied to all email with Internet content. Mediator 902 can intercept calls to retrieve messages from a mail server, then inspect and tag messages before returning them to email client 1104. In particular, mediator 902 intercepts operations that open a message, such as read, reply, forward, attach to new message, and print. If tagging is not performed when an email message is retrieved, tagging can also be done when the email message is opened. When an operation requests to open a message, mediator 902 can determine whether to open it in a regular DUA or the protected DUA 704.
  • Thus, tagged messages and attachments can be activated in the protected DUA. The tag should travel with the email message if, for example, it is forwarded to other users. In this manner, [0148] email client 1104 may need to be modified to also tag email messages when it sends them. Email messages include meta-information in “mail headers.” A set of standard headers are defined by the Simple Mail Transfer Protocol (SMTP) for labeling Internet email. SMTP also specifies methods for appending non-standard headers. Other mail exchange protocols, such as Microsoft's Messaging Application Programming Interface (MAPI) also contain headers.
  • The headers contain information that identifies the sender, recipient, mail transfer servers, time sent, and any attachments included with the main message body. The mail headers can indicate the source (internal or external) of an email message. Other methods of determining the origin of a message include running a filter on a server that tags all messages that do not arrive from known internal mail. The server can relay and separate email by network configuration policy so that internal email is sent to a mailbox on one server and external email is delivered to a separate mailbox on another server. [0149]
  • FIG. 12 is a flow diagram of a [0150] method 1200 for using network restriction rules to identify tagged messages with Interent content. Initially, an operation is initiated to connect to a mailbox on server S (step 1202). Next, a check is made to determine if the server S is internal (step 1204). If S is not internal, an email is started in a protected IC and an enumeration DT is appled to exclude knowledge of internal mailboxes and servers (step 1208). Then all further activity is contained in a protected DUA (step 1210). At step 1204, if the server S is internal, an operation is performed to fetch message M from the server S (step 1214). Along with the operation at step 1214, the address of server S is obained (step 1206). This address is matched with network restriction rules in a database (step 1212). Afterwards, the address of the last mail gateway before the server S is obtained (step 1211).
  • From [0151] step 1214, a check is made to determine if the fetched message M is internal (step 1216). If the message M is not internal, an operation is performed to tag the message M (step 1218). If there are any attachments to the message, the attachments are tagged (step 1220). Then the message M is returned to email client 1104 for local storage. At step 1216, if the message is internal, a check is made to determine if there are more attachements to message M. If there are no more attachments, the method continues to step 1222. If there are more attachments, an operation is performed to examine attachment A (step 1226). Next, a check is made to determine if the attachment A is tagged. If the attachment A is tagged, the method continues to step 1218. If the attachment A is not tagged, the method continues back to (step 1224).
  • As can be seen from FIG. 12, when [0152] email client 1104 connects to an external server, a new email client is launched in the protected DUA 704 and all operations on messages and attachments are activated in the protected DUA 704. In addition, when email client 1104 connects to an internal server, messages are fetched individually. Each message is inspected, and if it originates from an external server or contains any tagged attachments, the message is tagged. The determination of origin can be based, for example, on the SMTP “Received” header added by an email gateway server. If the message was received by a server that accepts Internet mail, any message received from that server is tagged. Only mail servers that cannot receive external mail, e.g., internal servers behind a firewall are trusted to deliver internal mail messages. The remaining message payload is examined to check for tagged attachments. If a message contains any tagged attachments, it the entire message can be tagged so that any operations on it, which might unknowingly activate the attachment are safely isolated in the protected DUA 704.
  • ii. Activating Message Content in the Appropriate DUA [0153]
  • Referring back to FIGS. 9, 11, and [0154] 12, once messages and attachments are properly tagged, operations on messages can be processed by mediator 902 to ensure that activating a message's content occurs in the proper DUA, that is, protected DUA 704 or regular DUA 702. The method of activating a message in the protected DUA 704 can depend on the capabilities of email client 1104.
  • In the ideal case, [0155] email client 1104 exposes application programming interfaces that allow another application to perform operations (such as, for example, open, edit, print) on arbitrary messages. In the worst case, there is no way to separate message handling from other application activities, and the entire email client runs in the protected DUA 704 and the protected DUA 704 handles even internal messages.
  • Most systems are likely to fall somewhere in between the two extremes. For example, [0156] mediator 902 intercepts and acts on calls to open a tagged message. Contemporary email clients—such as Netscape® Communicator and Microsoft® Outlook—provide user interface controls for displaying individual messages in their own windows. This forces tagged messages to always display in such a window, thereby allowing content to be activated within the protected DUA 704. The interception might require patching email client 1104 or simply interposing a monitor at the operating system level that monitors all mouse-window interaction events and invokes the protected DUA 704 when an event indicates that the user operates on a tagged message.
  • Even a single-message viewing window instantiated in the protected [0157] DUA 704 can use some application abstractions derived from the OUA application settings. Examples of these abstractions include an address book replying to or forwarding a message, certificates for verifying signatures and signing, plug-ins or special attachment handlers, application preferences for font sizes, colors, default editing application, mail formatting options, etc., and lists of local “folders” or mailboxes for filing messages (an application-specific “save as” operation). For usability, the address book and signing certificates should be identical to the objects in the OUA, if the message comes from a “mixed use” mailbox where a user works with both internal and external email.
  • Users should be able to forward and reply to tagged messages in the same way that they work with internal and self-composed messages. To protect the sensitive information in the address book and certificates database, a trusted path such as described in FIG. 15, can be created to establish a user's intent. For example, a dialog box for selecting messages from an address book can be replaced by an identical dialog box under the control of the mediator instead of the application. Operations on the address book are only allowed if they originate from this trusted, substitute dialog box. Thus, an email virus that tries to programmatically use the address book to replicate itself will not find any entries in the address book because it is unable to use the trusted path. [0158]
  • e. Integrating an Instant Messaging [0159]
  • Referring back to FIGS. 9, 11, and [0160] 12, the main application abstractions used to integrate instant messaging client 1106 (“IM client 1106”) to the protected DUA 704 are contact, server, credentials, and preferences. IM client 1106 is, in some ways, a very simplified email client. The store and forward processes of an email client allow content from a variety of sources to be mixed in a single mailbox or even in a single message. For IM client 1106, messages do not need to be stored, but can be sent to a single, central server and discarded if they cannot be delivered. There is no sharing of content such as when one forwards an email message from a session with one contact to a session with another contact, except by using OS facilities such as copy-and-paste that can be handled safely by the protected DUA 704.
  • Thus, [0161] IM client 1106 involves mainly separating the servers used into internal and external servers based on network restriction rules as described in FIG. 8. All sessions initiated or received are handled by an instance of IM client 1106 running in the protected DUA 704. Because no session can be initiated or received until a user authenticates and signs into the server, the separation of a regular DUA and a protected DUA, IM client 1106 does not have to be dynamic. Moreover, when a user requests to sign in to a server, usually when IM client 1106 starts, there is no state or history that needs to be handled: the only information required is the user's credentials and list of contacts.
  • 3. Application-Specific Protected DUA [0162]
  • FIG. 13 is a block diagram illustrating one exemplary embodiment of a [0163] system 1300 using an application-specific protected DUA. In this example, application 1302 is associated with an application-specific protected DUA 1306. In other words, protected DUA 1306 can only be used by application 1302.
  • Internet content can be used to extend a user's computing environment by installing new applications or extensions to existing applications. Normally, these new applications or extensions modify the actual environment and can affect other applications, sometimes in intentionally adverse ways. Thus, application-specific protected [0164] DUA 1306 allows users to extend their systems in this way. This DUA also allows multiple system extensions and applications to be installed and run without affecting other activities on the system or each other. If some malicious application or extension is installed, it cannot disrupt the normal environment, nor any of the other applications and data a user has downloaded from the Internet.
  • The application-specific protected [0165] DUA 1306 contains all of the new and modified resources installed, and keeps persistent objects in an area partitioned off for the application, e.g., a partitioned path in the file system or registry. Furthermore, any new resources created by using application 1302 can be stored in the partitioned space, or tagged and stored in normal repositories. The application-specific protected DUA 1306 can be explicitly persistent, so that it behaves the way a user expects installed software or extensions to behave. If the computing system is restarted, application 1302 and its associated resources can still be available, and still be able to launch within the application-specific protected DUA 1306.
  • [0166] Application 1302 that is associated with application-specific protected DUA 1306 can be made accessible as if it were an extension to the user's normal computing environment. That is, application 1302 can be invokable by using the standard user interface controls on the computing system, with application 1302 starting in its specific DUA 1306.
  • For example, [0167] application 1302 might appear on the Windows® Start Menu or in a special system folder for applications.
  • When the application runs, DTs substitute any global system resources with the resources that the application installed. For example, if [0168] application 1302 replaces a system library, the new library is stored in the application-specific protected DUA 1306 partition in the file system and requests in the DUA 1306 are redirected to the new library.
  • This overlay ensures that the application has all of the resources it requires, without affecting system resource used by other applications. [0169]
  • Application-specific protected [0170] DUA 1306 can use individual partitions, compartments, and tag identifiers. In some examples, common schemes available in the operating system can be used to minimize overhead and complexity. For example, a single tag identifier can be used for all tagged files in Windows® 2000. When a file is activated, the file-to-application associations in the users environment determine the application to launch. If application 1302 is associated with application-specific protected DUA 1306, this DUA is used to launch application 1302.
  • One potential use of application-specific protected [0171] DUA 1306 is for web browser 1102. Contemporary web browsers are, in some ways, systems of their own: they provide access to content and support extensions (plug-ins) that enable new content types to be executed within their scope. Application-specific protected DUA 1306 can be defined specifically for using Internet content through web browser 1102. New plug-ins and extensions such as custom toolbars can be downloaded and installed persistently. Web browser 1102 for an application-specific protected DUA might not be presented as an additional application, or it can be transparently invoked whenever Internet content is accessed via web browser 1102.
  • 4. Protected DUA for Data Containment [0172]
  • FIG. 14 is a flow diagram of a [0173] method 1400 for processing tagged files or email attachments for a protected DUA. Initially, tagged files or email attachments are activated (step 1402). A separate protected DUA is created (step 1404). The protected DUA referred to in method 400 can refer to protected DUA 704 or application-specific protected DUA 1306. For purposes of explanation, protected DUA 704 is referred to. The effects of the activated tagged files or email attachments are contained in a separate protected DUA 704 (step 1406).
  • Thus, the purpose of the protected [0174] DUA 704 is to contain the scope of any operations that result from activating the tagged file or email attachment. As such, a separate protected DUA 704 can be created when tagged files or email attachments are activated. In one example, the protected DUA 704 for containment operates based on at least privilege, and grants limited access rights to the application launched to activate the tagged file or email attachment. The protected DUA 704 for data containment can use those system and application resources necessary to run the application, but it does not need read or modify any data files other than the resource explicitly requested by the user and any new files created during the application session.
  • The protected [0175] DUA 704 contains the effects of activating the file to the file itself. It should be noted that most content will behave properly without requiring access to read or modify other data files, memory, registry entries, etc. outside of the scope of a specific application instance. In some examples, application-specific semantics imply a contract or relation between a data file and other resources; these semantics can be recognized and enforced (per application) by allowing access to files that are related by some application-specific contract. For example, in some Windows® 2000 applications, saving a file as HTML creates an associated folder of support files (images, etc.). This folder is semantically an extension of the HTML data file as far as the applications are concerned;
  • access to the file should also allow access the related folder and its files, copying the file to a new location should also copy the folder, etc. [0176]
  • The protected [0177] DUA 704 for data containment is intended to facilitate the safe use of resources that already reside (tagged) in some persistent data store. The protected DUA 704 is transient, and only exists while the requested application runs with the requested file or attachment open. Attempts to read other data files will either create a new protected DUA for data containment for the newly requested resource, create or use an application instance in the regular DUA (if non-tagged files are “visible” from the SAE DUA for data containment), or fail. Files that are not tagged should not be visible to an application in the protected DUA 704, except by using user interface controls that are assured to be controlled by the user. Unless explicitly requested by the user, attempts to access other files should fail. Attempts to save or copy the file (or other data) used to launch the protected DUA 704 should save the file with a tag to permanently associate the data with a protected DUA.
  • 5. Determination of User Intent [0178]
  • Many operations should be allowed if the user requests them and prohibited if a non-user actor requests them. There should be, therefore, a method available to the mediator to discriminate user intentions from operations that originate in arbitrary (potentially malicious) code. FIG. 15 is a block diagram illustrating one exemplary embodiment of a system using a protected [0179] DUA 704 with a trusted path 1502 to protected data 1504. The protected DUA 704 can use trusted path 1502 to ensure that operations truly are user requests.
  • [0180] Trusted path 1502 can be mandatory security enforcement mechanism for which certain guarantees about the two endpoints of trusted path 1502 can be made. For example, in Windows® 2000, pressing the keys Ctrl, Alt, and Del at the same time transfers control of the system from a user's desktop to a special Windows® Security desktop. Interaction with the security desktop can occur on trusted path 1502 because the system can guarantee that only the user's keystrokes can display the desktop and that only the security desktop can be reached by those keystrokes, that is, trusted path 1502 is established explicitly by the user. The protected DUA 704 would like to implicitly establish trusted paths for operations not normally associated with a security mechanism by the user such as “save a file.”
  • The protected [0181] DUA 704 thus allows a user to access protected data 1504 such as the user's address book, the file system, email folders, and windows outside of the protected DUA 704 (for operations like drag-and-drop). Such access is prohibited if it is not initiated by the user.
  • A user-initiated operation originates from somewhere in the input/output framework of the environment: typically a mouse-window interaction in a modem operating system. The protected [0182] DUA 704 can establish trusted path 1502 by substituting input/output paths with a path under its control. The operations associated with the path are not allowed except via trusted path 1502. For example, when a user chooses to save a file, the protected DUA 704 displays a “choose location” dialog box that it controls instead of the normal dialog. The protected DUA 704 can then apply policies and transformations to the request, based on the location chosen, for example, it can deny access or tag the saved filename. When a request to save a file from within the protected DUA 704 is intercepted, and the context or execution history does not indicate that trusted path 1502 is being used, the request is denied.
  • In cases where it is not possible to substitute a user interface control in the input path, other techniques can be used to monitor the user's interaction with the system. For example, subscribing to mouse pointer and keyboard events might allow a process to recognize that a request to launch an application came from a user's “double-click,” and not from a malicious program. [0183]
  • The same trusted paths can be used in the regular DUA for some operations. For example, launching an application to activate a file is an operation that should be regulated. In Windows® 2000, the ability to perform this operation on tagged files should be limited to double-clicking the file in some window. In this case, the application to activate the file is launched in the protected [0184] DUA 704. Other methods for activating the file (programmatically or from the command line) might not be under the user's control and can be prohibited.
  • 6. Identifying and Integrating Internet Content [0185]
  • FIG. 16 is a block diagram illustrating one exemplary embodiment of a system having a [0186] display 1602 showing a tagged protected DUA content 1606. In this example, a protected DUA can provide a safety zone for activating Internet content within the user's computing environment. As shown, protected DUA content 1606 is integrated with a users display environment having display objects 1604 unobtrusively, but easily identifiable with a marker 1606 that outlines the protected DUA content as content within a protected DUA. Thus, several usability features ensure that the protected DUA operates as an integrated extension of the user's computing environment, examples of which include:
  • Visual markers: For instance, [0187] visual maker 1608 identifies the protected DUA content 1606, which can be a uniform tag, a marker on file icons, or window borders. In this example, marker 1606 is shown as a border around protected DUA content 1606. Such indicators distinguishes DUA content from regular content in the same space, i.e., display objects 1604 such as folders of files.
  • Persistent objects: These objects can be tagged by the protected DUA, and the user's environment can correctly and consistently use the tags to activate content in the protected DUA. [0188]
  • Transient objects: These objects are able to move from the protected DUA to the normal environment, with some expected modifications or restrictions to enforce security. [0189]
  • It should be noted that users can have control over their computing environment: user-activated controls can be provided that allow content to be permanently removed from the protected DUA to remove the tagging. [0190]
  • a. Visual Identification of Interaction with Internet Content [0191]
  • Windows® and other user interface objects that host Internet content should operate in the same environment as other windows, but they should clearly indicate to the user that their contents are external and possibly not trustworthy. A window that contains Internet content can be distinguished from other windows by a number of methods: changing the color of its frame, adding an additional colored frame, changing the color of the title bar, adding an icon to the title bar, etc. For example, as shown in FIG. 16, [0192] marker 1608 can change colors to indicate that is a window for protected DUA content.
  • Persistent resources, such as files, that are tagged as Internet content should also be easily distinguished from “regular” objects in the system. The identifier can be the unique tag applied to a resource, although this is not the most usable solution (the name might be long and increase the time it takes for a user to understand labels). In a system such as Windows® 2000, the icons of tagged resources can be modified by adding some visual cue that indicates Internet content. Again such indications can be shown using [0193] marker 1608 in FIG. 16.
  • b. Handling Persistent Data Tagging [0194]
  • FIG. 17 is a block diagram illustrating one exemplary embodiment of a system showing a data transfer from a protected [0195] DUA 704 being intercepted to a regular DUA 702. In this system, an interception module 1704 can receive data 1702 from protected DUA 704 and convert, filter, tag the data that is delivered as data 1706 for regular DUA 1706. Thus, any data object that is saved persistently from the protected DUA 704 should be tagged by interception module 1704 so that it is permanently associated with Internet content. Applying a unique tag to resources can be defined for a general protected DUA.
  • [0196] Interception module 1704 can be application-layer code that accesses these data objects and modifies the data objects with argument DTs and result DTs. Interception module 1704 can apply and remove tags as needed. The permanent tag on an object such as a file may not be removable by normal operations such as rename or copy. An optional trusted path mechanism such as the one shown in FIG. 15 can be provided to allow a protected method for users to remove tags from files.
  • Operations in the regular DUA [0197] 702 (or other DUAs) can also recognize tags and modify the semantics of operations on tagged objects. Whenever a tagged file is activated, e.g., as an argument to an application on the command line or in Dynamic Data Exchange messages generated by double-clicking a file, it runs in protected DUA 704. For instance, double-clicking a tagged file in the regular DUA 702 causes an application to start in the protected DUA 704 to view the file contents, even if the normal behavior is to display the contents in an application window that is already running. Application-level abstractions in permanent storage that require tagging include: files in the file system, messages in mailboxes, attachments to messages, URLs in a web browser's cache, and cookies.
  • C. Handling Transient Data Filtering [0198]
  • Referring back to FIG. 17, users will sometimes move data from one application to another by making a transient, in-memory copy of the data. For example, the Windows® 2000 operating system uses a “clipboard” abstraction for holding data that has been copied, cut, or dragged from one window to be pasted or dropped in another. [0199]
  • Because the user interface controls of both regular and protected DUAs coexist in the same interface “space” (for example, windows coexisting on the same “desktop”), users expect to be able to move data between the two environments using their normal operations such as drag-and-drop (DND) and copy-and-paste (CNP)). Such data transfers store the data to be moved in transient storage or memory, verify that the destination selected by the user will accept the data, then copy the data from transient storage to the target. [0200]
  • [0201] Interception module 1704 can thus intercept access to clipboard-like abstractions to ensure that only data that can certainly be defined as safe is allowed to move from the protected DUA 704 to the regular DUA 702. The data on the clipboard is converted to a known safe type (such as plain text or a bitmap image) before copying it to the destination window. Data that cannot be converted is discarded. If the data is transferred as a contained abstraction (for example, copying a mail message or file in whole, rather than some portion of the raw data it contains), the object that is copied to the destination is tagged.
  • In addition to converting/filtering and tagging data, the secrecy and security of the user interface interactions are protected. The process that transfers the data between applications sends and receives events and messages to determine if and how to transfer the data. These messages might contain information about resources in another DUA which should not be available to any actor in a SAE DUA IC. To protect such information, a proxy is used between the clipboard-like transfer mechanism and the target application selected by the user. For example, in Windows® 2000, this proxy could be a small, transparent window that moves directly beneath the mouse pointer. Any window events from windows beneath the mouse are received by the transparent proxy window and only forwarded if it is safe to do so (e.g., only after it has been determined that it is safe to transfer the data). [0202]
  • Similarly, users will sometimes want to mix resources from the [0203] regular DUA 702 and the protected DUA 704 in a single application. For example, in a word processing document, a user might include several images, some of which have been downloaded from the Internet.
  • d. User-Activated Control [0204]
  • The protected [0205] DUA 704 can be enhanced for usability by providing a trusted path mechanism, such as that shown in FIG. 15, that allows users to explicitly remove the tag from resources such as files. This allows a user to decide that, for the sake of unmitigated integration with some data or application in the regular DUA 702, some Internet content is trusted and no longer should run in the protected DUA 704.
  • 7. Protecting System Availability [0206]
  • FIG. 18 is a flow diagram of a [0207] method 1800 for monitoring resource use by a protected DUA. For purposes of explanation, method 1800 refers to protected DUA 704. Initially, a resource use by protected DUA 704 is monitored (step 1802). Restrictions are imposed on the protected DUA 704 based on the monitored resource use (step 1804). The above steps are explained in further detail below.
  • Internet content that is allowed to run freely can compromise a system by consuming so many resources that other actors do not have enough resources to run. The protected [0208] DUA 704 protects the system against such attacks on system availability by imposing quotas on the resources available to it. These quotas can be relatively generous or permissive in most cases. Modern operating systems have built-in scheduling and sharing mechanisms that grant processes access to resources such as CPU time and memory despite the consumption of other processes (except in the most extreme cases). Thus, these quotas do not need to interfere with the behavior of Internet content that is not malicious.
  • The resources that need to be limited to protect system availability include: CPU time, Memory usage, Disk space, Open files and pipes, Open network connections. [0209]
  • These resources can be monitored by examining data structures or by using programming interfaces in the kernel (protected from application-level actors) of most contemporary operating systems. If the protected [0210] DUA 704, or an actor in the protected DUA 704, uses excessive resources, action can be taken. For example, the offending process can simply be terminated. Different actions can be applied for different resources. In particular, exceeding a disk space quota might automatically prevent further writes because it is hard to recover disk space, but exceeding a memory quota might generate a warning because the excess might be temporary and the memory is easy to recover by terminating the process.
  • For usability, instead of taking silent action, the user should be informed of the resource consumption and given a choice about how to proceed. For example, if an actor is consuming 70% of available memory, a user interface control can be displayed that informs the user and gives the user the option to terminate it immediately, allow it to continue, or to allow it for now and check again later. If the user does not respond to the information within a set time, the protected [0211] DUA 704 can take action automatically to prevent availability attacks that are either invisible to the user or that attempt to run while the user is not present.
  • Thus, methods and systems are disclosed for implementing a secure application execution environment using derived user accounts for Internet content. Furthermore, the present invention also relates to computer readable media that include program instructions or program code for performing various computer-implemented operations based on the methods of the present invention. The program instructions may be those specially designed and constructed for the purposes of the invention, or they may be of the kind well-known and available to those having skill in the computer software arts. [0212]
  • Examples of program instructions include machine code, such as produced by a compiler, and files containing a high level code that can be executed by the computer using, for example, an interpreter or equivalent execution engine to facilitate execution of high level code. Alternative embodiments will become apparent to those skilled in the art to which the present invention pertains without departing from its spirit and scope. Accordingly, the scope of the present invention is defined by the appended claims rather than the foregoing description. [0213]

Claims (15)

What is claimed is:
1. A method for providing secure content use comprising:
receiving content from a resource;
determining if the received content is trusted or untrusted content; and
taking a first action with respect to the received content, if the content is untrusted, or taking a second action with respect to the received content, if the content is trusted.
2. The method of claim 1, wherein the first action is accessing the received content in a derived user account (DUA) and the second action is accessing the received content in a regular DUA.
3. The method of claim 1, wherein determining further comprises:
determining if the received content is trusted or untrusted based on a partition of the resource.
4. The method of claim 3, wherein determining if the received content is trusted or untrusted further comprises:
identifying the resource based on a characteristic of the resource; and
partitioning the resource as trusted or untrusted based on the identified characteristic.
5. The method of claim 1, wherein receiving content comprises:
intercepting one or more requests for the content; and
wherein the first action is redirecting the one or more intercepted requests to a protected DUA, if the content is untrusted, or redirecting the one or more requests to a regular DUA, if the content is trusted.
6. A computing system for providing secure content comprising:
at least one memory hosting a protected derived user account (DUA) and a regular DUA; and
a processor configured to receive content from a resource, determine if the received content is trusted or untrusted content, and take a first action with respect to the received content, if the content is untrusted, or take a second action with respect to the received content, if the content is trusted.
7. The computing system of claim 6, wherein the first action is accessing the received content in a derived user account (DUA) and the second action is accessing the received content in a regular DUA.
8. The computing system of claim 6, wherein the processor is further configured to determine if the content is trusted or untrusted based on a partition of the resource.
9. The computing system of claim 8, wherein the processor is further configured to identify the resource based on a characteristic of the resource, and to partition the resource as trusted or untrusted based on the identified characteristic.
10. The computing system of claim 6, wherein the processor is further configured to intercept one or more requests for the content and redirect the one or more requests to the protected DUA, if the content is untrusted, or redirect the one or more requests to the regular DUA, if the content is trusted.
11. A computer-readable medium containing instructions for controlling a computing system having a processor, to perform a method comprising:
receiving content from a resource;
determining if the received content is trusted or untrusted content; and
taking a first action with respect to the received content, if the content is untrusted, or taking a second action with respect to the received content, if the content is trusted.
12. The computer-readable medium of claim 11, wherein the first action is accessing the received content in a derived user account (DUA) and the second action is accessing the received content in a regular DUA.
13. The computer-readable medium of claim 11, wherein the instructions further control the computing system to perform a method comprising:
determining if the received content is trusted or untrusted based on a partition of the resource.
14. The computer-readable medium of claim 13, wherein the instructions further control the computing system to perform a method comprising:
identifying the resource based on a characteristic of the resource; and
partitioning the resource as trusted or untrusted based on the identified characteristic.
15. The computer-readable medium of claim 11, wherein the instructions further control the computing system to perform a method comprising:
intercepting one or more requests for the content; and
wherein the first action is redirecting the one or more intercepted requests to a protected DUA, if the content is untrusted, or redirecting the one or more requests to a regular DUA, if the content is trusted.
US10/456,805 2002-06-06 2003-06-06 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content Abandoned US20040006706A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US10/456,805 US20040006706A1 (en) 2002-06-06 2003-06-06 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US14/522,882 US9171149B2 (en) 2002-06-06 2014-10-24 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US14/861,778 US10133864B2 (en) 2002-06-06 2015-09-22 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US16/164,741 US10922403B1 (en) 2002-06-06 2018-10-18 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US38717602P 2002-06-06 2002-06-06
US10/456,805 US20040006706A1 (en) 2002-06-06 2003-06-06 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/522,882 Continuation US9171149B2 (en) 2002-06-06 2014-10-24 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content

Publications (1)

Publication Number Publication Date
US20040006706A1 true US20040006706A1 (en) 2004-01-08

Family

ID=29736276

Family Applications (4)

Application Number Title Priority Date Filing Date
US10/456,805 Abandoned US20040006706A1 (en) 2002-06-06 2003-06-06 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US14/522,882 Expired - Lifetime US9171149B2 (en) 2002-06-06 2014-10-24 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US14/861,778 Expired - Lifetime US10133864B2 (en) 2002-06-06 2015-09-22 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US16/164,741 Expired - Lifetime US10922403B1 (en) 2002-06-06 2018-10-18 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content

Family Applications After (3)

Application Number Title Priority Date Filing Date
US14/522,882 Expired - Lifetime US9171149B2 (en) 2002-06-06 2014-10-24 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US14/861,778 Expired - Lifetime US10133864B2 (en) 2002-06-06 2015-09-22 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US16/164,741 Expired - Lifetime US10922403B1 (en) 2002-06-06 2018-10-18 Methods and systems for implementing a secure application execution environment using derived user accounts for internet content

Country Status (4)

Country Link
US (4) US20040006706A1 (en)
EP (1) EP1525522A2 (en)
AU (1) AU2003238908A1 (en)
WO (1) WO2003104954A2 (en)

Cited By (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078158A1 (en) * 2000-08-28 2002-06-20 Brown Scott T. E-mail messaging system and method for enhanced rich media delivery
US20030179244A1 (en) * 2002-03-01 2003-09-25 Ulfar Erlingsson Method and system for assured denotation of application semantics
US20040268139A1 (en) * 2003-06-25 2004-12-30 Microsoft Corporation Systems and methods for declarative client input security screening
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
US20050119910A1 (en) * 2003-12-01 2005-06-02 International Business Machines Corporation Content update notification
US20050182788A1 (en) * 2004-02-12 2005-08-18 International Business Machines Corporation Architecture and method for managing the sharing of logical resources among separate partitions of a logically partitioned computer system
US20050246761A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation System and method for local machine zone lockdown with relation to a network browser
US20060206899A1 (en) * 2005-03-14 2006-09-14 Ntt Docomo, Inc. Access controller and access control method
US20060277218A1 (en) * 2005-06-03 2006-12-07 Microsoft Corporation Running internet applications with low rights
US20070180040A1 (en) * 2006-01-27 2007-08-02 Etgen Michael P System and method for managing an instant messaging conversation
WO2007113406A2 (en) * 2006-03-17 2007-10-11 France Telecom System for secure access from a terminal to communication networks
US20070244980A1 (en) * 2006-04-14 2007-10-18 Microsoft Corporation Instant Messaging Plug-Ins
US20070276931A1 (en) * 2006-05-23 2007-11-29 Jamshid Mahdavi Systems and Methods for Protocol Detection in a Proxy
US20070300064A1 (en) * 2006-06-23 2007-12-27 Microsoft Corporation Communication across domains
US20080005315A1 (en) * 2006-06-29 2008-01-03 Po-Ching Lin Apparatus, system and method for stream-based data filtering
US20080133540A1 (en) * 2006-12-01 2008-06-05 Websense, Inc. System and method of analyzing web addresses
US20080189767A1 (en) * 2007-02-01 2008-08-07 Microsoft Corporation Accessing file resources outside a security boundary
US20080263679A1 (en) * 2007-04-23 2008-10-23 Microsoft Corporation Storing information in closed computing devices
US20080282319A1 (en) * 2005-11-17 2008-11-13 Koninklijke Philips Electronics, N.V. System for Managing Access Control
US20080313648A1 (en) * 2007-06-14 2008-12-18 Microsoft Corporation Protection and communication abstractions for web browsers
US20090006847A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Filtering kernel-mode network communications
US20090055397A1 (en) * 2007-08-21 2009-02-26 International Business Machines Corporation Multi-Dimensional Access Control List
US7607171B1 (en) 2002-01-17 2009-10-20 Avinti, Inc. Virus detection by executing e-mail code in a virtual machine
US20090307508A1 (en) * 2007-10-30 2009-12-10 Bank Of America Corporation Optimizing the Efficiency of an Organization's Technology Infrastructure
US20100024016A1 (en) * 2006-01-09 2010-01-28 Thierry Violleau Method and apparatus for protection domain based security
WO2010025377A1 (en) * 2008-08-29 2010-03-04 Google Inc. Altered token sandboxing
US20100088360A1 (en) * 2008-10-03 2010-04-08 Joe Jaudon Methods for dynamically updating virtual desktops or virtual applications
US20100088397A1 (en) * 2008-10-03 2010-04-08 Joe Jaudon Systems for dynamically updating virtual desktops or virtual applications
US7716275B1 (en) * 2004-08-31 2010-05-11 Symantec Operating Corporation Method and system for implementing shared quotas
US20100154058A1 (en) * 2007-01-09 2010-06-17 Websense Hosted R&D Limited Method and systems for collecting addresses for remotely accessible information sources
US20100257471A1 (en) * 2009-04-03 2010-10-07 International Business Machines Corporation Programmatic Information Transfer
US7870596B2 (en) 2007-02-01 2011-01-11 Microsoft Corporation Accessing network resources outside a security boundary
US20110082938A1 (en) * 2009-10-07 2011-04-07 Joe Jaudon Systems and methods for dynamically updating a user interface within a virtual computing environment
US20110099609A1 (en) * 2009-10-28 2011-04-28 Microsoft Corporation Isolation and presentation of untrusted data
US7945816B1 (en) * 2005-11-30 2011-05-17 At&T Intellectual Property Ii, L.P. Comprehensive end-to-end storage area network (SAN) application transport service
US20110225202A1 (en) * 2007-08-21 2011-09-15 International Business Machines Corporation Multi-dimensional access control list
USRE43103E1 (en) * 2004-08-07 2012-01-10 Rozman Allen F System and method for protecting a computer system from malicious software
US20120011507A1 (en) * 2008-11-06 2012-01-12 Takayuki Sasaki Maintenance system, maintenance method and program for maintenance
US8099596B1 (en) * 2011-06-30 2012-01-17 Kaspersky Lab Zao System and method for malware protection using virtualization
WO2011142996A3 (en) * 2010-05-09 2012-02-16 Madhav Chinta Methods and systems for forcing an application to store data in a secure storage location
US8234332B2 (en) 2009-04-22 2012-07-31 Aventura Hq, Inc. Systems and methods for updating computer memory and file locations within virtual computing environments
US8321936B1 (en) 2007-05-30 2012-11-27 M86 Security, Inc. System and method for malicious software detection in multiple protocols
WO2013045928A1 (en) * 2011-09-30 2013-04-04 Avecto Limited Method and apparatus for controlling access to a resource in a computer device
US20130185649A1 (en) * 2012-01-18 2013-07-18 Microsoft Corporation System and method for blended presentation of locally and remotely stored electronic messages
US8607344B1 (en) * 2008-07-24 2013-12-10 Mcafee, Inc. System, method, and computer program product for initiating a security action at an intermediate layer coupled between a library and an application
US8615800B2 (en) 2006-07-10 2013-12-24 Websense, Inc. System and method for analyzing web content
US8719898B1 (en) 2012-10-15 2014-05-06 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US8745610B2 (en) 2008-11-06 2014-06-03 Nec Corporation Maintenance system, maintenance method and program for maintenance
US8769063B2 (en) 2011-10-11 2014-07-01 Citrix Systems, Inc. Policy-based application management
US8799388B2 (en) 2007-05-18 2014-08-05 Websense U.K. Limited Method and apparatus for electronic mail filtering
US8799482B1 (en) 2012-04-11 2014-08-05 Artemis Internet Inc. Domain policy specification and enforcement
US8799994B2 (en) 2011-10-11 2014-08-05 Citrix Systems, Inc. Policy-based application management
US8806570B2 (en) 2011-10-11 2014-08-12 Citrix Systems, Inc. Policy-based application management
US8813179B1 (en) 2013-03-29 2014-08-19 Citrix Systems, Inc. Providing mobile device management functionalities
US20140245008A1 (en) * 2012-12-06 2014-08-28 Airwatch, Llc Systems and Methods for Controlling Email Access
US20140245381A1 (en) * 2012-12-06 2014-08-28 Airwatch, Llc Systems and Methods for Controlling Email Access
US8850049B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing mobile device management functionalities for a managed browser
US8850010B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing a managed browser
US8849978B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing an enterprise application store
US8869235B2 (en) 2011-10-11 2014-10-21 Citrix Systems, Inc. Secure mobile browser for protecting enterprise data
US8910264B2 (en) 2013-03-29 2014-12-09 Citrix Systems, Inc. Providing mobile device management functionalities
US8910239B2 (en) 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
US8914845B2 (en) 2012-10-15 2014-12-16 Citrix Systems, Inc. Providing virtualized private network tunnels
US20140380439A1 (en) * 2003-09-23 2014-12-25 At&T Intellectual Property I, L.P. Methods of Resetting Passwords in Network Service Systems Including User Redirection and Related Systems and Computer Program Products
US8959579B2 (en) 2012-10-16 2015-02-17 Citrix Systems, Inc. Controlling mobile device access to secure data
US8978140B2 (en) 2006-07-10 2015-03-10 Websense, Inc. System and method of analyzing web content
US8990392B1 (en) 2012-04-11 2015-03-24 NCC Group Inc. Assessing a computing resource for compliance with a computing resource policy regime specification
GB2519608A (en) * 2013-10-23 2015-04-29 Avecto Ltd Computer device and method for isolating untrusted content
US9026668B2 (en) 2012-05-26 2015-05-05 Free Stream Media Corp. Real-time and retargeted advertising on multiple screens of a user watching television
US9053340B2 (en) 2012-10-12 2015-06-09 Citrix Systems, Inc. Enterprise application store for an orchestration framework for connected devices
US9083727B1 (en) 2012-04-11 2015-07-14 Artemis Internet Inc. Securing client connections
US9106661B1 (en) 2012-04-11 2015-08-11 Artemis Internet Inc. Computing resource policy regime specification and verification
US9154942B2 (en) 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US9171149B2 (en) 2002-06-06 2015-10-27 Google Inc. Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US9189621B2 (en) 1996-11-08 2015-11-17 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US9215225B2 (en) 2013-03-29 2015-12-15 Citrix Systems, Inc. Mobile device locking with context
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US9264395B1 (en) 2012-04-11 2016-02-16 Artemis Internet Inc. Discovery engine
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
WO2016036957A1 (en) * 2014-09-05 2016-03-10 Openpeak Inc. Method and system for data usage accounting in a computing device
US9367512B2 (en) 2009-04-22 2016-06-14 Aventura Hq, Inc. Systems and methods for dynamically updating virtual desktops or virtual applications in a standard computing environment
US9378282B2 (en) 2008-06-30 2016-06-28 Raytheon Company System and method for dynamic and real-time categorization of webpages
US20160191435A1 (en) * 2013-03-26 2016-06-30 Dropbox, Inc. Content-item linking system for messaging services
US9386356B2 (en) 2008-11-26 2016-07-05 Free Stream Media Corp. Targeting with television audience data across multiple screens
US9436838B2 (en) * 2012-12-20 2016-09-06 Intel Corporation Secure local web application data manager
US20160306964A1 (en) * 2015-04-14 2016-10-20 Avecto Limited Computer device and method for isolating untrusted content on a clipboard
US9516022B2 (en) 2012-10-14 2016-12-06 Getgo, Inc. Automated meeting room
US9519772B2 (en) 2008-11-26 2016-12-13 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9560425B2 (en) 2008-11-26 2017-01-31 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US9584378B1 (en) * 2015-12-22 2017-02-28 International Business Machines Corporation Computer-implemented command control in information technology service environment
US9606774B2 (en) 2012-10-16 2017-03-28 Citrix Systems, Inc. Wrapping an application with field-programmable business logic
US9652613B1 (en) 2002-01-17 2017-05-16 Trustwave Holdings, Inc. Virus detection by executing electronic message code in a virtual machine
US9699202B2 (en) * 2015-05-20 2017-07-04 Cisco Technology, Inc. Intrusion detection to prevent impersonation attacks in computer networks
US9787686B2 (en) 2013-04-12 2017-10-10 Airwatch Llc On-demand security policy activation
US20170300320A1 (en) * 2015-01-22 2017-10-19 Fujitsu Limited Application functionality extension method, application functionality extension program, and application functionality extension apparatus
US9813390B2 (en) 2012-12-06 2017-11-07 Airwatch Llc Systems and methods for controlling email access
US9853928B2 (en) 2012-12-06 2017-12-26 Airwatch Llc Systems and methods for controlling email access
US20180054444A9 (en) * 2015-05-28 2018-02-22 Eyal Dotan Scalable application-as-a-service environment and systems and methods useful in conjunction therewith
US9961388B2 (en) 2008-11-26 2018-05-01 David Harrison Exposure of public internet protocol addresses in an advertising exchange server to improve relevancy of advertisements
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US9985850B2 (en) 2013-03-29 2018-05-29 Citrix Systems, Inc. Providing mobile device management functionalities
US9986279B2 (en) 2008-11-26 2018-05-29 Free Stream Media Corp. Discovery, access control, and communication with networked services
US10133858B2 (en) * 2011-12-29 2018-11-20 Paypal, Inc. Applications login using a mechanism relating sub-tokens to the quality of a master token
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US10334324B2 (en) 2008-11-26 2019-06-25 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US10419377B2 (en) * 2017-05-31 2019-09-17 Apple Inc. Method and system for categorizing instant messages
US10419541B2 (en) 2008-11-26 2019-09-17 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US10452837B1 (en) * 2014-09-26 2019-10-22 Amazon Technologies, Inc. Inbound link handling
US10552603B2 (en) 2000-05-17 2020-02-04 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US10567823B2 (en) 2008-11-26 2020-02-18 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US10631068B2 (en) 2008-11-26 2020-04-21 Free Stream Media Corp. Content exposure attribution based on renderings of related content across multiple devices
US10880340B2 (en) 2008-11-26 2020-12-29 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10908896B2 (en) 2012-10-16 2021-02-02 Citrix Systems, Inc. Application wrapping for application management framework
US10977693B2 (en) 2008-11-26 2021-04-13 Free Stream Media Corp. Association of content identifier of audio-visual data with additional data through capture infrastructure
US11106834B2 (en) * 2011-09-28 2021-08-31 EMC IP Holding Company LLC Digital disappearing ink
US11206268B2 (en) * 2018-12-18 2021-12-21 Jpmorgan Chase Bank, N.A. Account lifecycle management

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7137034B2 (en) 2000-05-19 2006-11-14 Vir2Us, Inc. Self repairing computer having user accessible switch for modifying bootable storage device configuration to initiate repair
US7096381B2 (en) 2001-05-21 2006-08-22 Self Repairing Computer, Inc. On-the-fly repair of a computer
US7111201B2 (en) 2000-05-19 2006-09-19 Self Repairing Computers, Inc. Self repairing computer detecting need for repair and having switched protected storage
US7392541B2 (en) 2001-05-17 2008-06-24 Vir2Us, Inc. Computer system architecture and method providing operating-system independent virus-, hacker-, and cyber-terror-immune processing environments
US7849360B2 (en) 2001-05-21 2010-12-07 Vir2Us, Inc. Computer system and method of controlling communication port to prevent computer contamination by virus or malicious code
US7536598B2 (en) 2001-11-19 2009-05-19 Vir2Us, Inc. Computer system capable of supporting a plurality of independent computing environments
US7788699B2 (en) 2002-03-06 2010-08-31 Vir2Us, Inc. Computer and method for safe usage of documents, email attachments and other content that may contain virus, spy-ware, or malicious code
US8775369B2 (en) 2007-01-24 2014-07-08 Vir2Us, Inc. Computer system architecture and method having isolated file system management for secure and reliable data processing
US9853979B1 (en) 2013-03-11 2017-12-26 Amazon Technologies, Inc. Immediate policy effectiveness in eventually consistent systems
US10223526B2 (en) * 2015-05-21 2019-03-05 Airwatch Llc Generating packages for managed applications
US10171502B2 (en) 2015-05-21 2019-01-01 Airwatch Llc Managed applications
US10339302B2 (en) * 2015-05-21 2019-07-02 Airwatch Llc Creating multiple workspaces in a device
US10097606B2 (en) 2016-03-14 2018-10-09 Amazon Technologies, Inc. Application streaming using access and execution environments
US20190102156A1 (en) * 2017-09-29 2019-04-04 Compuware Corporation Streamlined Technique For Deploying Application In Cloud Computing Environment
US11165817B2 (en) * 2019-10-24 2021-11-02 Arbor Networks, Inc. Mitigation of network denial of service attacks using IP location services
CN110851823B (en) * 2019-11-12 2023-03-10 腾讯科技(深圳)有限公司 Data access method, device, terminal and storage medium
US11539695B2 (en) * 2019-11-26 2022-12-27 Twingate, Inc. Secure controlled access to protected resources
US11601399B2 (en) 2021-01-20 2023-03-07 Bank Of America Corporation System and method for detecting forbidden network accesses based on zone connectivity mapping

Citations (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265206A (en) * 1990-10-23 1993-11-23 International Business Machines Corporation System and method for implementing a messenger and object manager in an object oriented programming environment
US5537548A (en) * 1991-08-08 1996-07-16 International Business Machines Corporation Method of computer conferencing by intercepting commands issued by application programs and redirecting to all stations for execution
US5619639A (en) * 1994-10-04 1997-04-08 Mast; Michael B. Method and apparatus for associating an image display area with an application display area
US5634102A (en) * 1995-08-07 1997-05-27 Apple Computer, Inc. Methods and apparatus for a selectable backdrop
US5760769A (en) * 1995-12-22 1998-06-02 Intel Corporation Apparatus and method for identifying a shared application program in a computer during teleconferencing
US5764985A (en) * 1994-12-13 1998-06-09 Microsoft Corp Notification mechanism for coordinating software extensions
US5768519A (en) * 1996-01-18 1998-06-16 Microsoft Corporation Method and apparatus for merging user accounts from a source security domain into a target security domain
US5787428A (en) * 1994-02-16 1998-07-28 British Telecommunications Public Limited Company Control of database access using security/user tag correspondence table
US5797128A (en) * 1995-07-03 1998-08-18 Sun Microsystems, Inc. System and method for implementing a hierarchical policy for computer system administration
US5832263A (en) * 1996-03-15 1998-11-03 Digidox, Inc. System and method for in-place modification of information recorded in read-only storage using modifiable non-volatile storage associated with an agent
US5956507A (en) * 1996-05-14 1999-09-21 Shearer, Jr.; Bennie L. Dynamic alteration of operating system kernel resource tables
US5974470A (en) * 1997-09-03 1999-10-26 Chicago-Soft, Ltd. System for reducing conflicts among dynamic link library modules by aliasing modules
US5991877A (en) * 1997-04-03 1999-11-23 Lockheed Martin Corporation Object-oriented trusted application framework
US6092192A (en) * 1998-01-16 2000-07-18 International Business Machines Corporation Apparatus and methods for providing repetitive enrollment in a plurality of biometric recognition systems based on an initial enrollment
US6141754A (en) * 1997-11-28 2000-10-31 International Business Machines Corporation Integrated method and system for controlling information access and distribution
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6289458B1 (en) * 1998-09-21 2001-09-11 Microsoft Corporation Per property access control mechanism
US20020019941A1 (en) * 1998-06-12 2002-02-14 Shannon Chan Method and system for secure running of untrusted content
US6385724B1 (en) * 1998-11-30 2002-05-07 Microsoft Corporation Automatic object caller chain with declarative impersonation and transitive trust
US6453418B1 (en) * 1995-11-29 2002-09-17 Hitachi, Ltd. Method for accessing information
US20020188649A1 (en) * 2001-06-12 2002-12-12 Ron Karim Mechanism for safely executing an untrusted program
US6513111B2 (en) * 1998-02-09 2003-01-28 Reuters, Ltd Method of controlling software applications specific to a group of users
US6529985B1 (en) * 2000-02-04 2003-03-04 Ensim Corporation Selective interception of system calls
US6587888B1 (en) * 1999-12-15 2003-07-01 Networks Associates Technology, Inc. Dynamic software wrapper
US6772350B1 (en) * 1998-05-15 2004-08-03 E.Piphany, Inc. System and method for controlling access to resources in a distributed environment
US6907396B1 (en) * 2000-06-01 2005-06-14 Networks Associates Technology, Inc. Detecting computer viruses or malicious software by patching instructions into an emulator

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926476A (en) * 1989-02-03 1990-05-15 Motorola, Inc. Method and apparatus for secure execution of untrusted software
US5604490A (en) * 1994-09-09 1997-02-18 International Business Machines Corporation Method and system for providing a user access to multiple secured subsystems
US6167520A (en) * 1996-11-08 2000-12-26 Finjan Software, Inc. System and method for protecting a client during runtime from hostile downloadables
US6128774A (en) * 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
US6295605B1 (en) * 1998-09-10 2001-09-25 International Business Machines Corporation Method and apparatus for multi-level security evaluation
US6477550B1 (en) * 1999-03-16 2002-11-05 Mcafee.Com Corporation Method and system for processing events related to a first type of browser from a second type of browser
US7289964B1 (en) * 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
WO2001048655A1 (en) * 1999-12-07 2001-07-05 Nodlet, S.A. Online commodities trading system with anonymous counter bid/offer function
EP1113361A1 (en) * 2000-01-03 2001-07-04 Wimba.Com S.A. Process of communication between an applet and a local agent using a socket communication channel
US20020010800A1 (en) * 2000-05-18 2002-01-24 Riley Richard T. Network access control system and method
US6931540B1 (en) * 2000-05-31 2005-08-16 Networks Associates Technology, Inc. System, method and computer program product for selecting virus detection actions based on a process by which files are being accessed
US7350204B2 (en) * 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
US20020069198A1 (en) * 2000-08-31 2002-06-06 Infoseer, Inc. System and method for positive identification of electronic files
US6915433B1 (en) * 2000-09-28 2005-07-05 Sumisho Computer Systems Corporation Securely extensible component meta-data
US7181620B1 (en) * 2001-11-09 2007-02-20 Cisco Technology, Inc. Method and apparatus providing secure initialization of network devices using a cryptographic key distribution approach
JP4051924B2 (en) * 2001-12-05 2008-02-27 株式会社日立製作所 Network system capable of transmission control
IL147560A0 (en) * 2002-01-10 2002-08-14 Sphera Technologies Ltd A method and system for hosting a plurality of dedicated servers
WO2003075158A2 (en) * 2002-03-01 2003-09-12 Green Border Technologies Method and system for assured denotation of application semantics
US7613994B2 (en) * 2002-05-29 2009-11-03 International Business Machines Corporation Document handling in a web application
WO2003104954A2 (en) 2002-06-06 2003-12-18 Green Border Technologies Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US20050198319A1 (en) * 2004-01-15 2005-09-08 Yahoo! Inc. Techniques for parental control of internet access including a guest mode
US20060173792A1 (en) * 2005-01-13 2006-08-03 Glass Paul H System and method for verifying the age and identity of individuals and limiting their access to appropriate material
US9057754B2 (en) 2010-03-04 2015-06-16 SeeScan, Inc. Economical magnetic locator apparatus and method
US10144048B2 (en) 2014-11-19 2018-12-04 Ford Global Technologies, Llc High stiffness and high access forming tool for incremental sheet forming

Patent Citations (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265206A (en) * 1990-10-23 1993-11-23 International Business Machines Corporation System and method for implementing a messenger and object manager in an object oriented programming environment
US5537548A (en) * 1991-08-08 1996-07-16 International Business Machines Corporation Method of computer conferencing by intercepting commands issued by application programs and redirecting to all stations for execution
US5787428A (en) * 1994-02-16 1998-07-28 British Telecommunications Public Limited Company Control of database access using security/user tag correspondence table
US5619639A (en) * 1994-10-04 1997-04-08 Mast; Michael B. Method and apparatus for associating an image display area with an application display area
US5764985A (en) * 1994-12-13 1998-06-09 Microsoft Corp Notification mechanism for coordinating software extensions
US5797128A (en) * 1995-07-03 1998-08-18 Sun Microsystems, Inc. System and method for implementing a hierarchical policy for computer system administration
US5634102A (en) * 1995-08-07 1997-05-27 Apple Computer, Inc. Methods and apparatus for a selectable backdrop
US6453418B1 (en) * 1995-11-29 2002-09-17 Hitachi, Ltd. Method for accessing information
US5760769A (en) * 1995-12-22 1998-06-02 Intel Corporation Apparatus and method for identifying a shared application program in a computer during teleconferencing
US5768519A (en) * 1996-01-18 1998-06-16 Microsoft Corporation Method and apparatus for merging user accounts from a source security domain into a target security domain
US5832263A (en) * 1996-03-15 1998-11-03 Digidox, Inc. System and method for in-place modification of information recorded in read-only storage using modifiable non-volatile storage associated with an agent
US5956507A (en) * 1996-05-14 1999-09-21 Shearer, Jr.; Bennie L. Dynamic alteration of operating system kernel resource tables
US6154844A (en) * 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US5991877A (en) * 1997-04-03 1999-11-23 Lockheed Martin Corporation Object-oriented trusted application framework
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US5974470A (en) * 1997-09-03 1999-10-26 Chicago-Soft, Ltd. System for reducing conflicts among dynamic link library modules by aliasing modules
US6141754A (en) * 1997-11-28 2000-10-31 International Business Machines Corporation Integrated method and system for controlling information access and distribution
US6092192A (en) * 1998-01-16 2000-07-18 International Business Machines Corporation Apparatus and methods for providing repetitive enrollment in a plurality of biometric recognition systems based on an initial enrollment
US6513111B2 (en) * 1998-02-09 2003-01-28 Reuters, Ltd Method of controlling software applications specific to a group of users
US6772350B1 (en) * 1998-05-15 2004-08-03 E.Piphany, Inc. System and method for controlling access to resources in a distributed environment
US20020019941A1 (en) * 1998-06-12 2002-02-14 Shannon Chan Method and system for secure running of untrusted content
US6289458B1 (en) * 1998-09-21 2001-09-11 Microsoft Corporation Per property access control mechanism
US6385724B1 (en) * 1998-11-30 2002-05-07 Microsoft Corporation Automatic object caller chain with declarative impersonation and transitive trust
US6587888B1 (en) * 1999-12-15 2003-07-01 Networks Associates Technology, Inc. Dynamic software wrapper
US6529985B1 (en) * 2000-02-04 2003-03-04 Ensim Corporation Selective interception of system calls
US6907396B1 (en) * 2000-06-01 2005-06-14 Networks Associates Technology, Inc. Detecting computer viruses or malicious software by patching instructions into an emulator
US20020188649A1 (en) * 2001-06-12 2002-12-12 Ron Karim Mechanism for safely executing an untrusted program

Cited By (279)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189621B2 (en) 1996-11-08 2015-11-17 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US9444844B2 (en) 1996-11-08 2016-09-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US10552603B2 (en) 2000-05-17 2020-02-04 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7970843B2 (en) 2000-08-28 2011-06-28 Brown Scott T E-mail messaging system and method for enhanced rich media delivery
US20110225253A1 (en) * 2000-08-28 2011-09-15 Brown Scott T E-mail messaging system and method for enhanced rich media delivery
US20100049812A1 (en) * 2000-08-28 2010-02-25 Brown Scott T E-Mail Messaging System and Method for Enhanced Rich Media Delivery
US7584251B2 (en) * 2000-08-28 2009-09-01 Brown Scott T E-mail messaging system and method for enhanced rich media delivery
US8156192B2 (en) 2000-08-28 2012-04-10 Brown Scott T E-mail messaging system and method for enhanced rich media delivery
US8312093B2 (en) 2000-08-28 2012-11-13 Brown Scott T E-mail messaging system and method for enhanced rich media delivery
US20020078158A1 (en) * 2000-08-28 2002-06-20 Brown Scott T. E-mail messaging system and method for enhanced rich media delivery
US10121005B2 (en) 2002-01-17 2018-11-06 Trustwave Holdings, Inc Virus detection by executing electronic message code in a virtual machine
US9652613B1 (en) 2002-01-17 2017-05-16 Trustwave Holdings, Inc. Virus detection by executing electronic message code in a virtual machine
US7607171B1 (en) 2002-01-17 2009-10-20 Avinti, Inc. Virus detection by executing e-mail code in a virtual machine
US20030179244A1 (en) * 2002-03-01 2003-09-25 Ulfar Erlingsson Method and system for assured denotation of application semantics
US7406542B2 (en) * 2002-03-01 2008-07-29 Google Inc. Method and system for assured denotation of application semantics
US10133864B2 (en) 2002-06-06 2018-11-20 Google Llc Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US9171149B2 (en) 2002-06-06 2015-10-27 Google Inc. Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US10922403B1 (en) 2002-06-06 2021-02-16 Google Llc Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US20040268139A1 (en) * 2003-06-25 2004-12-30 Microsoft Corporation Systems and methods for declarative client input security screening
US20140380439A1 (en) * 2003-09-23 2014-12-25 At&T Intellectual Property I, L.P. Methods of Resetting Passwords in Network Service Systems Including User Redirection and Related Systems and Computer Program Products
US9407630B2 (en) * 2003-09-23 2016-08-02 At&T Intellectual Property I, L.P. Methods of resetting passwords in network service systems including user redirection and related systems and computer program products
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
US20050119910A1 (en) * 2003-12-01 2005-06-02 International Business Machines Corporation Content update notification
US8782024B2 (en) * 2004-02-12 2014-07-15 International Business Machines Corporation Managing the sharing of logical resources among separate partitions of a logically partitioned computer system
US20050182788A1 (en) * 2004-02-12 2005-08-18 International Business Machines Corporation Architecture and method for managing the sharing of logical resources among separate partitions of a logically partitioned computer system
US8650612B2 (en) 2004-04-30 2014-02-11 Microsoft Corporation Security context lockdown
US8108902B2 (en) * 2004-04-30 2012-01-31 Microsoft Corporation System and method for local machine zone lockdown with relation to a network browser
US20050246761A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation System and method for local machine zone lockdown with relation to a network browser
USRE43528E1 (en) * 2004-08-07 2012-07-17 Rozman Allen F System and method for protecting a computer system from malicious software
USRE43529E1 (en) * 2004-08-07 2012-07-17 Rozman Allen F System and method for protecting a computer system from malicious software
USRE43103E1 (en) * 2004-08-07 2012-01-10 Rozman Allen F System and method for protecting a computer system from malicious software
USRE43500E1 (en) 2004-08-07 2012-07-03 Rozman Allen F System and method for protecting a computer system from malicious software
USRE43987E1 (en) * 2004-08-07 2013-02-05 Rozman Allen F System and method for protecting a computer system from malicious software
US7716275B1 (en) * 2004-08-31 2010-05-11 Symantec Operating Corporation Method and system for implementing shared quotas
US20060206899A1 (en) * 2005-03-14 2006-09-14 Ntt Docomo, Inc. Access controller and access control method
US8011006B2 (en) * 2005-03-14 2011-08-30 Ntt Docomo, Inc. Access controller and access control method
US8078740B2 (en) * 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
US7792964B2 (en) 2005-06-03 2010-09-07 Microsoft Corporation Running internet applications with low rights
US20060277218A1 (en) * 2005-06-03 2006-12-07 Microsoft Corporation Running internet applications with low rights
US20110106948A1 (en) * 2005-06-03 2011-05-05 Microsoft Corporation Running Internet Applications with Low Rights
US8161563B2 (en) 2005-06-03 2012-04-17 Microsoft Corporation Running internet applications with low rights
US20060277311A1 (en) * 2005-06-03 2006-12-07 Microsoft Corporation Running Internet applications with low rights
US9202045B2 (en) * 2005-11-17 2015-12-01 Koninklijke Philips N.V. System for managing access control
US20080282319A1 (en) * 2005-11-17 2008-11-13 Koninklijke Philips Electronics, N.V. System for Managing Access Control
US8677190B2 (en) 2005-11-30 2014-03-18 At&T Intellectual Property Ii, L.P. Comprehensive end-to-end storage area network (SAN) application transport service
US7945816B1 (en) * 2005-11-30 2011-05-17 At&T Intellectual Property Ii, L.P. Comprehensive end-to-end storage area network (SAN) application transport service
US8458528B1 (en) 2005-11-30 2013-06-04 At&T Intellectual Property Ii, L.P. Comprehensive end-to-end storage area network (SAN) application transport service
US20100024016A1 (en) * 2006-01-09 2010-01-28 Thierry Violleau Method and apparatus for protection domain based security
US7739731B2 (en) * 2006-01-09 2010-06-15 Oracle America, Inc. Method and apparatus for protection domain based security
US8001184B2 (en) * 2006-01-27 2011-08-16 International Business Machines Corporation System and method for managing an instant messaging conversation
US20070180040A1 (en) * 2006-01-27 2007-08-02 Etgen Michael P System and method for managing an instant messaging conversation
WO2007113406A2 (en) * 2006-03-17 2007-10-11 France Telecom System for secure access from a terminal to communication networks
WO2007113406A3 (en) * 2006-03-17 2008-05-08 France Telecom System for secure access from a terminal to communication networks
US7747785B2 (en) * 2006-04-14 2010-06-29 Microsoft Corporation Instant messaging plug-ins
US20070244980A1 (en) * 2006-04-14 2007-10-18 Microsoft Corporation Instant Messaging Plug-Ins
US20070276931A1 (en) * 2006-05-23 2007-11-29 Jamshid Mahdavi Systems and Methods for Protocol Detection in a Proxy
US8793390B2 (en) * 2006-05-23 2014-07-29 Blue Coat Systems, Inc. Systems and methods for protocol detection in a proxy
US8335929B2 (en) 2006-06-23 2012-12-18 Microsoft Corporation Communication across domains
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US20070300064A1 (en) * 2006-06-23 2007-12-27 Microsoft Corporation Communication across domains
US8489878B2 (en) 2006-06-23 2013-07-16 Microsoft Corporation Communication across domains
US20080005315A1 (en) * 2006-06-29 2008-01-03 Po-Ching Lin Apparatus, system and method for stream-based data filtering
US9003524B2 (en) 2006-07-10 2015-04-07 Websense, Inc. System and method for analyzing web content
US9680866B2 (en) 2006-07-10 2017-06-13 Websense, Llc System and method for analyzing web content
US8615800B2 (en) 2006-07-10 2013-12-24 Websense, Inc. System and method for analyzing web content
US9723018B2 (en) 2006-07-10 2017-08-01 Websense, Llc System and method of analyzing web content
US8978140B2 (en) 2006-07-10 2015-03-10 Websense, Inc. System and method of analyzing web content
US20080133540A1 (en) * 2006-12-01 2008-06-05 Websense, Inc. System and method of analyzing web addresses
US9654495B2 (en) 2006-12-01 2017-05-16 Websense, Llc System and method of analyzing web addresses
US8881277B2 (en) 2007-01-09 2014-11-04 Websense Hosted R&D Limited Method and systems for collecting addresses for remotely accessible information sources
US20100154058A1 (en) * 2007-01-09 2010-06-17 Websense Hosted R&D Limited Method and systems for collecting addresses for remotely accessible information sources
US20080189767A1 (en) * 2007-02-01 2008-08-07 Microsoft Corporation Accessing file resources outside a security boundary
US7870596B2 (en) 2007-02-01 2011-01-11 Microsoft Corporation Accessing network resources outside a security boundary
US20080263679A1 (en) * 2007-04-23 2008-10-23 Microsoft Corporation Storing information in closed computing devices
US9473439B2 (en) 2007-05-18 2016-10-18 Forcepoint Uk Limited Method and apparatus for electronic mail filtering
US8799388B2 (en) 2007-05-18 2014-08-05 Websense U.K. Limited Method and apparatus for electronic mail filtering
US8321936B1 (en) 2007-05-30 2012-11-27 M86 Security, Inc. System and method for malicious software detection in multiple protocols
US8402529B1 (en) 2007-05-30 2013-03-19 M86 Security, Inc. Preventing propagation of malicious software during execution in a virtual machine
US10019570B2 (en) * 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US10762195B2 (en) * 2007-06-14 2020-09-01 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US20180293375A1 (en) * 2007-06-14 2018-10-11 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US20080313648A1 (en) * 2007-06-14 2008-12-18 Microsoft Corporation Protection and communication abstractions for web browsers
US20090006847A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Filtering kernel-mode network communications
US20130152186A1 (en) * 2007-06-28 2013-06-13 Microsoft Corporation Filtering kernel-mode network communications
US20150058628A1 (en) * 2007-06-28 2015-02-26 Microsoft Corporation Filtering kernel-mode network communications
US8839407B2 (en) * 2007-06-28 2014-09-16 Microsoft Corporation Filtering kernel-mode network communications
US8341723B2 (en) * 2007-06-28 2012-12-25 Microsoft Corporation Filtering kernel-mode network communications
US9590993B2 (en) * 2007-06-28 2017-03-07 Microsoft Technology Licensing, Llc Filtering kernel-mode network communications
US20090055397A1 (en) * 2007-08-21 2009-02-26 International Business Machines Corporation Multi-Dimensional Access Control List
US20110225202A1 (en) * 2007-08-21 2011-09-15 International Business Machines Corporation Multi-dimensional access control list
US20090307508A1 (en) * 2007-10-30 2009-12-10 Bank Of America Corporation Optimizing the Efficiency of an Organization's Technology Infrastructure
US9378282B2 (en) 2008-06-30 2016-06-28 Raytheon Company System and method for dynamic and real-time categorization of webpages
US8607344B1 (en) * 2008-07-24 2013-12-10 Mcafee, Inc. System, method, and computer program product for initiating a security action at an intermediate layer coupled between a library and an application
US8429741B2 (en) 2008-08-29 2013-04-23 Google, Inc. Altered token sandboxing
WO2010025377A1 (en) * 2008-08-29 2010-03-04 Google Inc. Altered token sandboxing
US20100057774A1 (en) * 2008-08-29 2010-03-04 Google Inc. Altered Token Sandboxing
US20100088360A1 (en) * 2008-10-03 2010-04-08 Joe Jaudon Methods for dynamically updating virtual desktops or virtual applications
US20100088397A1 (en) * 2008-10-03 2010-04-08 Joe Jaudon Systems for dynamically updating virtual desktops or virtual applications
US20120011507A1 (en) * 2008-11-06 2012-01-12 Takayuki Sasaki Maintenance system, maintenance method and program for maintenance
US8776056B2 (en) * 2008-11-06 2014-07-08 Nec Corporation Maintenance system, maintenance method and program for maintenance
US8745610B2 (en) 2008-11-06 2014-06-03 Nec Corporation Maintenance system, maintenance method and program for maintenance
US9167419B2 (en) 2008-11-26 2015-10-20 Free Stream Media Corp. Discovery and launch system and method
US9716736B2 (en) 2008-11-26 2017-07-25 Free Stream Media Corp. System and method of discovery and launch associated with a networked media device
US9706265B2 (en) 2008-11-26 2017-07-11 Free Stream Media Corp. Automatic communications between networked devices such as televisions and mobile devices
US9703947B2 (en) 2008-11-26 2017-07-11 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9686596B2 (en) 2008-11-26 2017-06-20 Free Stream Media Corp. Advertisement targeting through embedded scripts in supply-side and demand-side platforms
US9838758B2 (en) 2008-11-26 2017-12-05 David Harrison Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9848250B2 (en) 2008-11-26 2017-12-19 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9591381B2 (en) 2008-11-26 2017-03-07 Free Stream Media Corp. Automated discovery and launch of an application on a network enabled device
US10986141B2 (en) 2008-11-26 2021-04-20 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9589456B2 (en) 2008-11-26 2017-03-07 Free Stream Media Corp. Exposure of public internet protocol addresses in an advertising exchange server to improve relevancy of advertisements
US9854330B2 (en) 2008-11-26 2017-12-26 David Harrison Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9576473B2 (en) 2008-11-26 2017-02-21 Free Stream Media Corp. Annotation of metadata through capture infrastructure
US9560425B2 (en) 2008-11-26 2017-01-31 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US10977693B2 (en) 2008-11-26 2021-04-13 Free Stream Media Corp. Association of content identifier of audio-visual data with additional data through capture infrastructure
US10419541B2 (en) 2008-11-26 2019-09-17 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US10334324B2 (en) 2008-11-26 2019-06-25 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US9519772B2 (en) 2008-11-26 2016-12-13 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10880340B2 (en) 2008-11-26 2020-12-29 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9866925B2 (en) 2008-11-26 2018-01-09 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10425675B2 (en) 2008-11-26 2019-09-24 Free Stream Media Corp. Discovery, access control, and communication with networked services
US10791152B2 (en) 2008-11-26 2020-09-29 Free Stream Media Corp. Automatic communications between networked devices such as televisions and mobile devices
US9961388B2 (en) 2008-11-26 2018-05-01 David Harrison Exposure of public internet protocol addresses in an advertising exchange server to improve relevancy of advertisements
US9967295B2 (en) 2008-11-26 2018-05-08 David Harrison Automated discovery and launch of an application on a network enabled device
US10771525B2 (en) 2008-11-26 2020-09-08 Free Stream Media Corp. System and method of discovery and launch associated with a networked media device
US9986279B2 (en) 2008-11-26 2018-05-29 Free Stream Media Corp. Discovery, access control, and communication with networked services
US9154942B2 (en) 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US10631068B2 (en) 2008-11-26 2020-04-21 Free Stream Media Corp. Content exposure attribution based on renderings of related content across multiple devices
US10567823B2 (en) 2008-11-26 2020-02-18 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US9386356B2 (en) 2008-11-26 2016-07-05 Free Stream Media Corp. Targeting with television audience data across multiple screens
US10032191B2 (en) 2008-11-26 2018-07-24 Free Stream Media Corp. Advertisement targeting through embedded scripts in supply-side and demand-side platforms
US10142377B2 (en) 2008-11-26 2018-11-27 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10074108B2 (en) 2008-11-26 2018-09-11 Free Stream Media Corp. Annotation of metadata through capture infrastructure
US9258383B2 (en) 2008-11-26 2016-02-09 Free Stream Media Corp. Monetization of television audience data across muliple screens of a user watching television
US20100257471A1 (en) * 2009-04-03 2010-10-07 International Business Machines Corporation Programmatic Information Transfer
US8863007B2 (en) 2009-04-03 2014-10-14 International Business Machines Corporation Programmatic information transfer
US8234332B2 (en) 2009-04-22 2012-07-31 Aventura Hq, Inc. Systems and methods for updating computer memory and file locations within virtual computing environments
US9367512B2 (en) 2009-04-22 2016-06-14 Aventura Hq, Inc. Systems and methods for dynamically updating virtual desktops or virtual applications in a standard computing environment
US20110082938A1 (en) * 2009-10-07 2011-04-07 Joe Jaudon Systems and methods for dynamically updating a user interface within a virtual computing environment
US9946871B2 (en) 2009-10-28 2018-04-17 Microsoft Technology Licensing, Llc Isolation and presentation of untrusted data
US9613228B2 (en) 2009-10-28 2017-04-04 Microsoft Technology Licensing, Llc Isolation and presentation of untrusted data
US9003517B2 (en) * 2009-10-28 2015-04-07 Microsoft Technology Licensing, Llc Isolation and presentation of untrusted data
US10515208B2 (en) 2009-10-28 2019-12-24 Microsoft Technology Licensing, Llc Isolation and presentation of untrusted data
US20110099609A1 (en) * 2009-10-28 2011-04-28 Microsoft Corporation Isolation and presentation of untrusted data
WO2011142996A3 (en) * 2010-05-09 2012-02-16 Madhav Chinta Methods and systems for forcing an application to store data in a secure storage location
US8707457B2 (en) 2010-05-09 2014-04-22 Citrix Systems, Inc. Methods and systems for forcing an application to store data in a secure storage location
US9367703B2 (en) 2010-05-09 2016-06-14 Citrix Systems, Inc. Methods and systems for forcing an application to store data in a secure storage location
US8099596B1 (en) * 2011-06-30 2012-01-17 Kaspersky Lab Zao System and method for malware protection using virtualization
US11106834B2 (en) * 2011-09-28 2021-08-31 EMC IP Holding Company LLC Digital disappearing ink
US9443081B2 (en) 2011-09-30 2016-09-13 Avecto Limited Method and apparatus for controlling access to a resource in a computer device
WO2013045928A1 (en) * 2011-09-30 2013-04-04 Avecto Limited Method and apparatus for controlling access to a resource in a computer device
US9378359B2 (en) 2011-10-11 2016-06-28 Citrix Systems, Inc. Gateway for controlling mobile device access to enterprise resources
US8869235B2 (en) 2011-10-11 2014-10-21 Citrix Systems, Inc. Secure mobile browser for protecting enterprise data
US9143529B2 (en) 2011-10-11 2015-09-22 Citrix Systems, Inc. Modifying pre-existing mobile applications to implement enterprise security policies
US9137262B2 (en) 2011-10-11 2015-09-15 Citrix Systems, Inc. Providing secure mobile device access to enterprise resources using application tunnels
US9286471B2 (en) 2011-10-11 2016-03-15 Citrix Systems, Inc. Rules based detection and correction of problems on mobile devices of enterprise users
US9111105B2 (en) 2011-10-11 2015-08-18 Citrix Systems, Inc. Policy-based application management
US9529996B2 (en) 2011-10-11 2016-12-27 Citrix Systems, Inc. Controlling mobile device access to enterprise resources
US10063595B1 (en) 2011-10-11 2018-08-28 Citrix Systems, Inc. Secure execution of enterprise applications on mobile devices
US10044757B2 (en) 2011-10-11 2018-08-07 Citrix Systems, Inc. Secure execution of enterprise applications on mobile devices
US9521147B2 (en) 2011-10-11 2016-12-13 Citrix Systems, Inc. Policy based application management
US9143530B2 (en) 2011-10-11 2015-09-22 Citrix Systems, Inc. Secure container for protecting enterprise data on a mobile device
US8806570B2 (en) 2011-10-11 2014-08-12 Citrix Systems, Inc. Policy-based application management
US9183380B2 (en) 2011-10-11 2015-11-10 Citrix Systems, Inc. Secure execution of enterprise applications on mobile devices
US11134104B2 (en) 2011-10-11 2021-09-28 Citrix Systems, Inc. Secure execution of enterprise applications on mobile devices
US8799994B2 (en) 2011-10-11 2014-08-05 Citrix Systems, Inc. Policy-based application management
US8886925B2 (en) 2011-10-11 2014-11-11 Citrix Systems, Inc. Protecting enterprise data through policy-based encryption of message attachments
US8881229B2 (en) 2011-10-11 2014-11-04 Citrix Systems, Inc. Policy-based application management
US9213850B2 (en) 2011-10-11 2015-12-15 Citrix Systems, Inc. Policy-based application management
US8769063B2 (en) 2011-10-11 2014-07-01 Citrix Systems, Inc. Policy-based application management
US9043480B2 (en) 2011-10-11 2015-05-26 Citrix Systems, Inc. Policy-based application management
US10469534B2 (en) 2011-10-11 2019-11-05 Citrix Systems, Inc. Secure execution of enterprise applications on mobile devices
US10402546B1 (en) 2011-10-11 2019-09-03 Citrix Systems, Inc. Secure execution of enterprise applications on mobile devices
US10133858B2 (en) * 2011-12-29 2018-11-20 Paypal, Inc. Applications login using a mechanism relating sub-tokens to the quality of a master token
US10853468B2 (en) * 2011-12-29 2020-12-01 Paypal, Inc. Applications login using a mechanism relating sub-tokens to the quality of a master token
US10474806B2 (en) 2011-12-29 2019-11-12 Paypal, Inc. Applications login using a mechanism relating sub-tokens to the quality of a master token
US20130185649A1 (en) * 2012-01-18 2013-07-18 Microsoft Corporation System and method for blended presentation of locally and remotely stored electronic messages
US10255587B2 (en) * 2012-01-18 2019-04-09 Microsoft Technology Licensing, Llc System and method for blended presentation of locally and remotely stored electronic messages
US9083727B1 (en) 2012-04-11 2015-07-14 Artemis Internet Inc. Securing client connections
US9106661B1 (en) 2012-04-11 2015-08-11 Artemis Internet Inc. Computing resource policy regime specification and verification
US8799482B1 (en) 2012-04-11 2014-08-05 Artemis Internet Inc. Domain policy specification and enforcement
US9264395B1 (en) 2012-04-11 2016-02-16 Artemis Internet Inc. Discovery engine
US8990392B1 (en) 2012-04-11 2015-03-24 NCC Group Inc. Assessing a computing resource for compliance with a computing resource policy regime specification
US9344454B1 (en) 2012-04-11 2016-05-17 Artemis Internet Inc. Domain policy specification and enforcement
US9026668B2 (en) 2012-05-26 2015-05-05 Free Stream Media Corp. Real-time and retargeted advertising on multiple screens of a user watching television
US9854063B2 (en) 2012-10-12 2017-12-26 Citrix Systems, Inc. Enterprise application store for an orchestration framework for connected devices
US9189645B2 (en) 2012-10-12 2015-11-17 Citrix Systems, Inc. Sharing content across applications and devices having multiple operation modes in an orchestration framework for connected devices
US9386120B2 (en) 2012-10-12 2016-07-05 Citrix Systems, Inc. Single sign-on access in an orchestration framework for connected devices
US9053340B2 (en) 2012-10-12 2015-06-09 Citrix Systems, Inc. Enterprise application store for an orchestration framework for connected devices
US9392077B2 (en) 2012-10-12 2016-07-12 Citrix Systems, Inc. Coordinating a computing activity across applications and devices having multiple operation modes in an orchestration framework for connected devices
US9516022B2 (en) 2012-10-14 2016-12-06 Getgo, Inc. Automated meeting room
US9654508B2 (en) 2012-10-15 2017-05-16 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US9467474B2 (en) 2012-10-15 2016-10-11 Citrix Systems, Inc. Conjuring and providing profiles that manage execution of mobile applications
US8931078B2 (en) 2012-10-15 2015-01-06 Citrix Systems, Inc. Providing virtualized private network tunnels
US9973489B2 (en) 2012-10-15 2018-05-15 Citrix Systems, Inc. Providing virtualized private network tunnels
US8719898B1 (en) 2012-10-15 2014-05-06 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US8904477B2 (en) 2012-10-15 2014-12-02 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US8887230B2 (en) 2012-10-15 2014-11-11 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US8910239B2 (en) 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
US9521117B2 (en) 2012-10-15 2016-12-13 Citrix Systems, Inc. Providing virtualized private network tunnels
US8914845B2 (en) 2012-10-15 2014-12-16 Citrix Systems, Inc. Providing virtualized private network tunnels
US9602474B2 (en) 2012-10-16 2017-03-21 Citrix Systems, Inc. Controlling mobile device access to secure data
US9606774B2 (en) 2012-10-16 2017-03-28 Citrix Systems, Inc. Wrapping an application with field-programmable business logic
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US9858428B2 (en) 2012-10-16 2018-01-02 Citrix Systems, Inc. Controlling mobile device access to secure data
US8959579B2 (en) 2012-10-16 2015-02-17 Citrix Systems, Inc. Controlling mobile device access to secure data
US10908896B2 (en) 2012-10-16 2021-02-02 Citrix Systems, Inc. Application wrapping for application management framework
US10545748B2 (en) 2012-10-16 2020-01-28 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US20140245008A1 (en) * 2012-12-06 2014-08-28 Airwatch, Llc Systems and Methods for Controlling Email Access
US9450921B2 (en) 2012-12-06 2016-09-20 Airwatch Llc Systems and methods for controlling email access
US9853928B2 (en) 2012-12-06 2017-12-26 Airwatch Llc Systems and methods for controlling email access
US9813390B2 (en) 2012-12-06 2017-11-07 Airwatch Llc Systems and methods for controlling email access
US9391960B2 (en) * 2012-12-06 2016-07-12 Airwatch Llc Systems and methods for controlling email access
US11050719B2 (en) 2012-12-06 2021-06-29 Airwatch, Llc Systems and methods for controlling email access
US20140245381A1 (en) * 2012-12-06 2014-08-28 Airwatch, Llc Systems and Methods for Controlling Email Access
US10243932B2 (en) 2012-12-06 2019-03-26 Airwatch, Llc Systems and methods for controlling email access
US9325713B2 (en) * 2012-12-06 2016-04-26 Airwatch Llc Systems and methods for controlling email access
US10681017B2 (en) 2012-12-06 2020-06-09 Airwatch, Llc Systems and methods for controlling email access
US9436838B2 (en) * 2012-12-20 2016-09-06 Intel Corporation Secure local web application data manager
US11050696B2 (en) 2013-03-26 2021-06-29 Dropbox, Inc. Content-item linking system for messaging services
US20160191435A1 (en) * 2013-03-26 2016-06-30 Dropbox, Inc. Content-item linking system for messaging services
US10469421B2 (en) * 2013-03-26 2019-11-05 Dropbox, Inc. Content-item linking system for messaging services
US9413736B2 (en) 2013-03-29 2016-08-09 Citrix Systems, Inc. Providing an enterprise application store
US20140297756A1 (en) * 2013-03-29 2014-10-02 Citrix Systems, Inc. Providing a managed browser
US8813179B1 (en) 2013-03-29 2014-08-19 Citrix Systems, Inc. Providing mobile device management functionalities
US10476885B2 (en) 2013-03-29 2019-11-12 Citrix Systems, Inc. Application with multiple operation modes
US9948657B2 (en) 2013-03-29 2018-04-17 Citrix Systems, Inc. Providing an enterprise application store
US9369449B2 (en) 2013-03-29 2016-06-14 Citrix Systems, Inc. Providing an enterprise application store
US9355223B2 (en) * 2013-03-29 2016-05-31 Citrix Systems, Inc. Providing a managed browser
US8893221B2 (en) 2013-03-29 2014-11-18 Citrix Systems, Inc. Providing a managed browser
US10097584B2 (en) 2013-03-29 2018-10-09 Citrix Systems, Inc. Providing a managed browser
US8898732B2 (en) 2013-03-29 2014-11-25 Citrix Systems, Inc. Providing a managed browser
US8910264B2 (en) 2013-03-29 2014-12-09 Citrix Systems, Inc. Providing mobile device management functionalities
US8850050B1 (en) * 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing a managed browser
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
US9112853B2 (en) * 2013-03-29 2015-08-18 Citrix Systems, Inc. Providing a managed browser
US10965734B2 (en) 2013-03-29 2021-03-30 Citrix Systems, Inc. Data management for an application with multiple operation modes
US9158895B2 (en) 2013-03-29 2015-10-13 Citrix Systems, Inc. Providing a managed browser
US8996709B2 (en) 2013-03-29 2015-03-31 Citrix Systems, Inc. Providing a managed browser
US8849978B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing an enterprise application store
US9455886B2 (en) 2013-03-29 2016-09-27 Citrix Systems, Inc. Providing mobile device management functionalities
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US9215225B2 (en) 2013-03-29 2015-12-15 Citrix Systems, Inc. Mobile device locking with context
US8849979B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing mobile device management functionalities
US8850049B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing mobile device management functionalities for a managed browser
US9985850B2 (en) 2013-03-29 2018-05-29 Citrix Systems, Inc. Providing mobile device management functionalities
US8850010B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing a managed browser
US10701082B2 (en) 2013-03-29 2020-06-30 Citrix Systems, Inc. Application with multiple operation modes
US8881228B2 (en) 2013-03-29 2014-11-04 Citrix Systems, Inc. Providing a managed browser
US10785228B2 (en) 2013-04-12 2020-09-22 Airwatch, Llc On-demand security policy activation
US9787686B2 (en) 2013-04-12 2017-10-10 Airwatch Llc On-demand security policy activation
US10116662B2 (en) 2013-04-12 2018-10-30 Airwatch Llc On-demand security policy activation
US11902281B2 (en) 2013-04-12 2024-02-13 Airwatch Llc On-demand security policy activation
US20150150142A1 (en) * 2013-10-23 2015-05-28 Avecto Limited Computer device and method for isolating untrusted content
GB2521722A (en) * 2013-10-23 2015-07-01 Avecto Ltd Computer device and method for isolating untrusted content
US9715646B2 (en) * 2013-10-23 2017-07-25 Avecto Limited Computer device and method for isolating untrusted content
GB2521723A (en) * 2013-10-23 2015-07-01 Avecto Ltd Computer device and method for isolating untrusted content
GB2521724A (en) * 2013-10-23 2015-07-01 Avecto Ltd Computer device and method for isolating untrusted content
GB2521722B (en) * 2013-10-23 2016-01-06 Avecto Ltd Computer device and method for isolating untrusted content
US9177237B2 (en) 2013-10-23 2015-11-03 Avecto Limited Computer device and method for isolating untrusted content
GB2521724B (en) * 2013-10-23 2016-01-06 Avecto Ltd Computer device and method for isolating untrusted content
GB2521723B (en) * 2013-10-23 2016-01-06 Avecto Ltd Computer device and method for isolating untrusted content
US9734441B2 (en) 2013-10-23 2017-08-15 Avecto Limited Computer device and method for isolating untrusted content
GB2519608A (en) * 2013-10-23 2015-04-29 Avecto Ltd Computer device and method for isolating untrusted content
WO2016036957A1 (en) * 2014-09-05 2016-03-10 Openpeak Inc. Method and system for data usage accounting in a computing device
US11762984B1 (en) 2014-09-26 2023-09-19 Amazon Technologies, Inc. Inbound link handling
US10452837B1 (en) * 2014-09-26 2019-10-22 Amazon Technologies, Inc. Inbound link handling
US20170300320A1 (en) * 2015-01-22 2017-10-19 Fujitsu Limited Application functionality extension method, application functionality extension program, and application functionality extension apparatus
US10102371B2 (en) * 2015-04-14 2018-10-16 Avecto Limited Computer device and method for isolating untrusted content on a clipboard
US20160306964A1 (en) * 2015-04-14 2016-10-20 Avecto Limited Computer device and method for isolating untrusted content on a clipboard
US10193907B2 (en) 2015-05-20 2019-01-29 Cisco Technology, Inc. Intrusion detection to prevent impersonation attacks in computer networks
US9699202B2 (en) * 2015-05-20 2017-07-04 Cisco Technology, Inc. Intrusion detection to prevent impersonation attacks in computer networks
US20180054444A9 (en) * 2015-05-28 2018-02-22 Eyal Dotan Scalable application-as-a-service environment and systems and methods useful in conjunction therewith
US10382446B2 (en) * 2015-05-28 2019-08-13 Cameyo Inc. Computerized system, method and computer program product, for managing a computer program's operations
US9584378B1 (en) * 2015-12-22 2017-02-28 International Business Machines Corporation Computer-implemented command control in information technology service environment
US9940466B2 (en) 2015-12-22 2018-04-10 International Business Machines Corporation Computer-implemented command control in information technology service environment
US10419377B2 (en) * 2017-05-31 2019-09-17 Apple Inc. Method and system for categorizing instant messages
US11206268B2 (en) * 2018-12-18 2021-12-21 Jpmorgan Chase Bank, N.A. Account lifecycle management

Also Published As

Publication number Publication date
US10133864B2 (en) 2018-11-20
US20160085964A1 (en) 2016-03-24
AU2003238908A8 (en) 2003-12-22
WO2003104954A2 (en) 2003-12-18
AU2003238908A1 (en) 2003-12-22
US20150047030A1 (en) 2015-02-12
EP1525522A2 (en) 2005-04-27
US9171149B2 (en) 2015-10-27
WO2003104954A3 (en) 2004-06-10
US10922403B1 (en) 2021-02-16

Similar Documents

Publication Publication Date Title
US10922403B1 (en) Methods and systems for implementing a secure application execution environment using derived user accounts for internet content
US7191469B2 (en) Methods and systems for providing a secure application environment using derived user accounts
US7966643B2 (en) Method and system for securing a remote file system
US7694328B2 (en) Systems and methods for secure client applications
US11575714B2 (en) Dividing a data processing device into separate security domains
US6684329B1 (en) System and method for increasing the resiliency of firewall systems
US20180302443A1 (en) Dividing a data processing device into separate security domains
Jackson et al. Subspace: secure cross-domain communication for web mashups
US8732794B2 (en) Browser plug-in firewall
US6584508B1 (en) Advanced data guard having independently wrapped components
US20100024036A1 (en) System and Methods Providing Secure Workspace Sessions
US20020138634A1 (en) System and methods for securely permitting mobile code to access resources over a network
US9245108B1 (en) Dynamic adjustment of the file format to identify untrusted files
US20170048298A9 (en) Systems and methods for an automatic fresh browser instance for accessing internet content
US20070162909A1 (en) Reserving resources in an operating system
US9516032B2 (en) Methods and systems for using derived user accounts
JP2010134935A (en) Method and apparatus for performing file operation
Anupam et al. Secure web scripting
WO2003096169A2 (en) Methods and systems for providing a secure application environment using derived user accounts
US20120324569A1 (en) Rule compilation in a firewall
Zohrevandi et al. Auto-FBI: a user-friendly approach for secure access to sensitive content on the web
Briffaut et al. A dynamic end-to-end security for coordinating multiple protections within a linux desktop
Reis Web browsers as operating systems: supporting robust and secure web programs
Gosselin et al. Confining the apache web server with security-enhanced linux
Howard Secure Internet Information Services 5.0 Checklist

Legal Events

Date Code Title Description
AS Assignment

Owner name: GREEN BORDER TECHNOLOGIES, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ERLINGSSON, ULFAR;REEL/FRAME:019711/0115

Effective date: 20021023

AS Assignment

Owner name: GOOGLE INC., CALIFORNIA

Free format text: MERGER;ASSIGNOR:GREEN BORDER TECHNOLOGIES, INC.;REEL/FRAME:019995/0713

Effective date: 20070511

Owner name: GOOGLE INC.,CALIFORNIA

Free format text: MERGER;ASSIGNOR:GREEN BORDER TECHNOLOGIES, INC.;REEL/FRAME:019995/0713

Effective date: 20070511

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION

AS Assignment

Owner name: GOOGLE LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044142/0357

Effective date: 20170929