IP Library Granted Patent US 9,460,293
Granted Patent B1
US 9,460,293 · App. 13/923,212 · Granted Oct 4, 2016

Clipboard hardening

Inventors: Rahul Kashyap (Foster City, CA); Rafal Wojtczuk (Warsaw, PL); Ian Pratt (Cambridge, GB)
Assignee: Bromium, Inc.
G06F21/60
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,460,293
App. No.
13/923,212
Granted
Oct 4, 2016
Kind
B1
Abstract

A software module executes on a first operating system running. The software module determines that the first operating system has caused data to the written to a first clipboard maintained by the first operating system. The software module consults policy data to determine whether the data should additionally be written to a second clipboard maintained by a second operating system. The policy data may only allow the data to be written to the second clipboard if the data was written to the first clipboard at the initiation of or approved by a user. If the software module determines that the policy data allows the data to be written to the second clipboard, then the software module, without human instruction, causes the data to written to the second clipboard.

Claims (60)

1. One or more non-transitory machine-readable storage mediums storing one or more sequences of instructions, which when executed by one or more processors, causes:

upon a software module, executing on a first operating system, determining that the first operating system has caused data to be written to a first clipboard maintained by the first operating system, the software module consulting policy data to determine whether, without ceasing execution and without changing priority of one or more of said first operating system and a second operating system, the data should additionally be written to a second clipboard maintained by said second operating system,

wherein the policy data allows the data to be written to the second clipboard only if a policy defined by the policy data determines that the data was written to the first clipboard at initiation of or approved by a user, and

wherein the policy data does not allow one or more types of clipboard objects to be written to the second clipboard even a particular object of said one or more types of clipboard objects was written to the first clipboard at the initiation of or approved by said user to prevent said user from introducing a potentially hazardous type of object into said second clipboard;

the software module determining whether the data written to the first clipboard was written to the first clipboard at the initiation of or approved by the user;

upon the software module determining that the policy data does not allow the data to be written to the second clipboard because the data was not written to the first clipboard at the initiation of or approved by the user, the software module disallowing the data to be written to the second clipboard; and

upon the software module determining that the policy data allows the data to be written to the second clipboard, the software module, without human instruction, causing the data to be written to the second clipboard.

2. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein user input received from a physical mouse or keystrokes made on a physical keyboard will be treated as an instruction initiated by a human.

3. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein the instruction is deemed initiated by a human by the policy by virtue of the instruction originating from input submitted through a user interface implemented by software executing on the second operating system.

4. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein the policy data resides within the second operating system.

5. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein execution of the one or more sequences of instructions further causes: upon determining that a particular policy defined by the policy data considers separate data transfers to the first clipboard as a single logical unit, the software module causing each of the separate data transfers to be written to the second clipboard as one logical unit after determining the policy data allows the separate data transfers to be written to the second clipboard.

6. The one or more non-transitory machine-readable storage mediums of claim 1 , wherein the software module consulting the policy data further comprises: the software module determining whether the policy defined by the policy data permits an object type of data written to said first clipboard to be written to the second clipboard maintained by said second operating system.

7. One or more non-transitory machine-readable storage mediums storing one or more sequences of instructions, which when executed by one or more processors, causes:

upon a software module, executing in a first operating environment, determining that data was written to a first bounded area of memory belonging to the first operating environment, the software module consulting policy data to determine whether, without ceasing execution and without changing priority of one or more of said first operating environment and a second operating environment, the data should additionally be written to a second bounded area of memory belonging to the second operating environment distinct from the first operating environment,

wherein said second operating environment executes concurrently with said first operating environment on a single computer,

wherein the policy data allows the data to be written to the second bounded area of memory only if a policy defined by the policy data determines that the data was written to the first bounded area of memory at initiation of or approved by a user;

the software module determining whether the data written to the first bounded area of memory was written to the first bounded area of memory at the initiation of or approved by the user; upon the software module determining that the policy data does not allow the data to be written to the second bounded area of memory because the data was not written to the first bounded area of memory at the initiation of or approved by the user, the software module disallowing the data to be written to the second bounded area of memory; and

upon the software module determining that the policy data allows the data to be written to the second bounded area of memory, the software module, without human instruction, causing the data to be written to the second bounded area of memory while the first operating environment continues to execute upon said single computer.

8. An apparatus, comprising:

one or more processors; and

one or more non-transitory computer readable storage mediums storing one or more sequences of instructions, which when executed, cause:

upon a software module, executing on a first operating system, determining that the first operating system has caused data to be written to a first clipboard maintained by the first operating system, the software module consulting policy data to determine whether, without ceasing execution and without changing priority of one or more of said first operating system and a second operating system, the data should additionally be written to a second clipboard maintained by the second operating system,

wherein said second operating system executes concurrently with said first operating system on a single computer,

wherein the policy data allows the data to be written to the second clipboard only if a policy defined by the policy data determines that the data was written to the first clipboard at initiation of or approved by a user;

the software module determining whether the data written to the first clipboard was written to the first clipboard at the initiation of or approved by the user;

upon the software module determining that the policy data does not allow the data to be written to the second clipboard because the data was not written to the first clipboard at the initiation of or approved by the user, the software module disallowing the data to be written to the second clipboard; and

upon the software module determining that the policy data allows the data to be written to the second clipboard, the software module, without human instruction, causing the data to be written to the second clipboard while the first operating system continues to execute upon said single computer.

9. The apparatus of claim 8 , wherein user input received from a physical mouse or keystrokes made on a physical keyboard will be treated as an instruction initiated by a human.

10. The apparatus of claim 8 , wherein the instruction is deemed initiated by a human by the policy by virtue of the instruction originating from input submitted through a user interface implemented by software executing on the second operating system.

11. The apparatus of claim 8 , wherein the policy data resides within the second operating system.

12. The apparatus of claim 8 , wherein execution of the one or more sequences of instructions further causes: upon determining that a particular policy defined by the policy data considers separate data transfers to the first clipboard as a single logical unit, the software module causing each of the separate data transfers to be written to the second clipboard as one logical unit after determining the policy data allows the separate data transfers to be written to the second clipboard.

13. The apparatus of claim 8 , wherein the software module consulting the policy data further comprises: the software module determining whether the policy defined by the policy data permits an object type of data written to the first clipboard to be written to the second clipboard maintained by the second operating system.

14. An apparatus, comprising:

one or more processors; and

one or more non-transitory computer readable storage mediums storing one or more sequences of instructions, which when executed, cause:

upon a software module, executing in a first operating environment, determining that data was written to a first bounded area of memory belonging to the first operating environment, the software module consulting policy data to determine whether, without ceasing execution and without changing priority of one or more of said first operating environment and a second operating environment, the data should additionally be written to a second bounded area of memory belonging to the second operating environment distinct from the first operating environment,

wherein said second operating environment executes concurrently with said first operating environment on a single computer,

wherein the policy data allows the data to be written to the second bounded area of memory only if a policy defined by the policy data determines that the data was written to the first bounded area of memory at initiation of or approved by a user;

the software module determining whether the data written to the first bounded area of memory was written to the first bounded area of memory at the initiation of or approved by the user;

upon the software module determining that the policy data does not allow the data to be written to the second bounded area of memory because the data was not written to the first bounded area of memory at the initiation of or approved by the user, the software module disallowing the data to be written to the second bounded area of memory; and

upon the software module determining that the policy data allows the data to be written to the second bounded area of memory, the software module, without human instruction, causing the data to be written to the second bounded area of memory while the first operating environment continues to execute upon said single computer.

15. A method for updating a software implemented in software, comprising:

upon a software module, executing on a first operating system, determining that the first operating system has caused data to be written to a first clipboard maintained by the first operating system, the software module consulting policy data to determine whether, without ceasing execution and without changing priority of one or more of said first operating system and a second operating system, the data should additionally be written to a second clipboard maintained by the second operating system,

wherein said second operating system executes concurrently with said first operating system on a single computer,

wherein the policy data allows the data to be written to the second clipboard only if a policy defined by the policy data determines that the data was written to the first clipboard at initiation of or approved by a user;

the software module determining whether the data written to the first clipboard was written to the first clipboard at the initiation of or approved by the user;

upon the software module determining that the policy data does not allow the data to be written to the second clipboard because the data was not written to the first clipboard at the initiation of or approved by the user, the software module disallowing the data to be written to the second clipboard; and

upon the software module determining that the policy data allows the data to be written to the second clipboard, the software module, without human instruction, causing the data to be written to the second clipboard while the first operating system continues to execute upon said single computer.

16. The method of claim 15 , wherein user input received from a physical mouse or keystrokes made on a physical keyboard will be treated as an instruction initiated by a human.

17. The method of claim 15 , wherein the instruction is deemed initiated by a human by the policy by virtue of the instruction originating from input submitted through a user interface implemented by software executing on the second operating system.

18. The method of claim 15 , wherein the policy data resides within the second operating system.

19. The method of claim 15 , further comprising: upon determining that a particular policy defined by the policy data considers separate data transfers to the first clipboard as a single logical unit, the software module causing each of the separate data transfers to be written to the second clipboard as one logical unit after determining the policy data allows the separate data transfers to be written to the second clipboard.

20. The method of claim 15 , wherein the software module consulting the policy data further comprises: the software module determining whether the policy defined by the policy data permits an object type of data written to the first clipboard to be written to the second clipboard maintained by the second operating system.

21. A method for updating a bounded area of memory of a computer system, comprising:

upon a software module, executing in a first operating environment, determining that data was to be written to a first bounded area of memory belonging to the first operating environment, the software module consulting policy data to determine whether, without ceasing execution and without changing priority of one or more of said first operating environment and a second operating environment, the data should additionally be written to a second bounded area of memory belonging to the second operating environment distinct from the first operating environment,

wherein said second operating environment executes concurrently with said first operating environment on a single computer,

wherein the policy data allows the data to be written to the second bounded area of memory only if a policy defined by the policy data determines that the data was written to the first bounded area of memory at initiation of or approved by a user;

the software module determining whether the data written to the first bounded area of memory was written to the first bounded area of memory at the initiation of or approved by the user;

upon the software module determining that the policy data does not allow the data to be written to the second bounded area of memory because the data was not written to the first bounded area of memory at the initiation of or approved by the user, the software module disallowing the data to be written to the second bounded area of memory; and

upon the software module determining that the policy data allows the data to be written to the second bounded area of memory, the software module, without human instruction, causing the data to be written to the second bounded area of memory while the first operating environment continues to execute upon said single computer.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 5, 2020
From: KASHYAP, RAHUL; WOJTCZUK, RAFAL; PRATT, IAN
To: BROMIUM, INC.
Reel/Frame 054286/0992 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2019
From: BROMIUM, INC.
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 051305/0894 →
Continuity (1)
Provisional Application 61662288 · Jun 20, 2012