IP Library Granted Patent US 8,930,327
Granted Patent B2
US 8,930,327 · App. 13/097,027 · Granted Jan 6, 2015

Method and system for scrubbing information from heap dumps

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 8,930,327
App. No.
13/097,027
Granted
Jan 6, 2015
Kind
B2
Abstract

In production applications that process and transfer secure and sensitive customer data, the heap dump files of these applications, which may be useful for debugging production issues and bugs, may contain secure and sensitive information. Thus, to make the useful debugging information available in heap dumps from production applications without compromising secure client data to those assigned to debugging and fixing production issues, these heap dumps may be scrubbed of sensitive information without scrubbing information that is useful for debugging.

Claims (88)

1. A machine implemented method comprising:

analyzing, by a host system a heap dump to determine class dependencies, the host system including at least a processor system having at least one processor, and a memory system having at least one machine readable medium that stores contents of a heap dump, including content that was stored within at least a collection of memory cells used by a function that had been called while an application is running and was dumped into the machine readable medium;

creating a map, by the processor system, of the heap dump, mapping the class dependencies, by mapping which classes depend on which classes;

locating and erasing, by the host system, sensitive information, wherein the steps of locating and erasing sensitive information includes at least determining

whether a piece of information originated from a particular class that is used for storing confidential information, and

whether an object associated with the piece of information is of a particular type, and

if the information originated from that particular class and the object is of the particular type, erasing the information in case the information is sensitive information;

storing, by the host system, into the memory system information that remains after the erasing;

rebuilding, by the host system, the content of the heap dump by at least reconstructing the class dependencies without the sensitive information, therein restoring dependencies of classes on other classes;

a class dependency being an object from which another object derives functionality, the heap dump, after being rebuilt, includes the class dependencies, the reconstructing of the class dependencies including re-establishing references in objects to other objects that are relied on for functionality;

the heap dump data including at least

an instance dump portion, which is a portion of the heap dump data that includes at least an address of an object of interest, information related to a state of the object of interest that the object of interest was in just prior to the dump, and address of objects that referenced the object of interest, and

a class dump portion, which is a portion of the heap dump that identifies objects created as specified by a particular class, the class dump includes at least address allocated to a class and a name of the class.

2. The method of claim 1 , further comprising:

loading the heap dump data into volatile memory;

the mapping including at least creating objects in the volatile memory corresponding to objects referenced in the heap dump, the objects created having dependencies corresponding to dependencies indicated in the heap dump, the objects created being labeled with addresses indicated in the heap dump; and

the method also including at least formatting the heap dump data into one or more views for viewing the heap dump data.

3. The method of claim 1 , the creating of the map including at least comparing the instance dump and the class dump to determine the name of the object of interest in the instance dump; and storing a mapping having the name of the object of interest associated with the object in volatile memory.

4. The method of claim 3 , the comparing including comparing addresses associated with objects of the instance dump to addresses associated with objects of the class dump; when a match is found between an addresses associated with an object of the instance dump with an address associated with an objects of the class dump, copying the name of the object of the class dump and associating the name of the object of the class dump with the name of the object of the instance dump.

5. The method of claim 1 , the creating of the map including at least comparing the class dump of two different objects to determine a relationship between the two different objects; and storing an indication of the relationship as part of a mapping of relationships between objects of the heap dump.

6. The method of claim 5 , the creating of the map including at least determining that an address associated with one of the two different objects is also associated with another of the two different objects.

7. The method of claim 1 , the locating and the erasing of the sensitive information including at least determining dependencies of an object, and determining whether information of the object is associated with dependencies on objects having confidential information, erasing the information.

8. The method of claim 1 , the locating and the erasing of the sensitive information including at least determining whether the information was stored in a variable that has a particular type that is expected to contain sensitive information, and if the information was stored in the variable that is of the particular type that is expected to contain sensitive information, erasing the information.

9. The method of claim 1 , the locating and the erasing of the sensitive information including at least determining whether the information is associated with an instance of a class of a particular type that is expected to contain sensitive information, and if the information that is associated with the instance of the class of the type that is expected to contain sensitive information, erasing the information.

10. The method of claim 1 , the locating and the erasing of the sensitive information including at least determining whether the information was stored in a variable that is greater than a particular size, and if the variable is greater than the particular size, erasing the information, the particular size being a size, such that variables greater than the particular size are expected to contain confidential information.

11. The method of claim 1 , the heap dump data including

the creating of the map including at least

comparing the instance dump and the class dump to determine a name of the object of interest in the instance dump; and

storing a mapping having the name of the object of interest associated with the object of interest in volatile memory

comparing a class dump of two different objects to determine a relationship between the two different objects; and

storing an indication of the relationship as part of a mapping of relationships between objects of the heap dump;

the locating and erasing including at least

determining

whether the information originated from the particular class that is used for storing confidential information, and

whether the object is of a particular type, and

if the information originated from that particular class and is of the particular type, erasing the information;

determining

whether the information originated from a class that inherits from a particular class that is used for storing confidential information and

whether the object is of a particular type, and

if the information originated from a class that inherits from the particular class that is used for storing confidential information and is of the particular type, erasing the information;

determining whether the information was stored in a variable that has a particular type that is expected to contain sensitive information, and

if the information was stored in the variable that is of the particular type that is expected to contain sensitive information, erasing the information;

determining whether the information was stored in a variable that is greater than a particular size, and

if the variable is greater than the particular size, erasing the information, the particular size being a size, such that variables greater than the particular size are expected to contain confidential information;

the method further comprising:

loading the heap dump data into volatile memory;

creating objects in the volatile memory corresponding to objects referenced in the heap dump,

the objects created having dependencies corresponding to dependencies indicated in the heap dump, and

the objects created being labeled with addresses indicated in the heap dump; and

formatting the heap dump data into one or more views for viewing the heap dump data; and

rendering the one or more views of the heap dump at the host machine.

12. The method of claim 1 , the mapping including at least addresses of objects;

for each object, a number representing how many instances of the object were instantiated;

for each object, a list of addresses of referenced by the object; and

for each object, a name for the objects.

13. The method of claim 1 , further comprising linking the class dump portion to the instance dump portion.

14. The method of claim 1 , further comprising rendering at the host system, the content of the heap dump without the sensitive information that results after the rebuilding.

15. The method of claim 1 , further comprising debugging, at the host system, an application that runs on the host system, based on the heap dump without the sensitive information.

16. The method of claim 1 , the rebuilding further comprising reloading, at the host system, the heap dump into an application on the host system that displays the heap dump information with the heap dump information about a first object linked to heap dump information about a second object that the first object depends on, based on the heap dump without the sensitive information.

17. A machine-readable medium carrying one or more sequences of instructions, which instructions, when executed by one or more processors, cause the one or more processors to carry out a method comprising:

analyzing, by a host system, a heap dump to determine class dependencies, the host system including at least a processor system having at least one processor, and a memory system having at least one machine readable medium that stores contents of a heap dump, including content that was stored within at least a collection of memory cells used by a function that had been called while an application is running and was dumped into the machine readable medium;

creating a map, by the processor system, of the heap dump, mapping the class dependencies;

locating and erasing, by the host system, sensitive information, wherein the steps of locating and erasing sensitive information includes at least determining

whether a piece of information originated from a particular class that is used for storing confidential information, and

whether an object associated with the piece of information is of a particular type, and

if the information originated from that particular class and the object is of the particular type, erasing the information in case the information is sensitive information;

storing, by the host system, into the memory system information that remains after the erasing;

rebuilding, by the host system, the content of the heap dump by at least reconstructing the class dependencies without the sensitive information, therein restoring dependencies of classes on other classes;

a class dependency being an object from which another object derives functionality, the heap dump, after being rebuilt, includes the class dependencies, the reconstructing of the class dependencies including re-establishing references in objects to other objects that are relied on for functionality;

the heap dump data including at least

an instance dump portion, which is a portion of the heap dump data that includes at least an address of an object of interest, information related to a state of the object of interest that the object of interest was in just prior to the dump, and address of objects that referenced the object of interest, and

a class dump portion, which is a portion of the heap dump that identifies objects created as specified by a particular class, the class dump includes at least address allocated to a class and a name of the class.

18. An apparatus comprising:

a processor system including one or more processors; and

a memory system including one or more machine readable media;

the machine readable media storing one or more stored sequences of instructions which, when executed by the processor, cause the processor to carry out a method including at least

analyzing, by a host system a heap dump to determine class dependencies, the host system including at least a processor system having at least one processor, and a memory system having at least one machine readable medium that stores contents of a heap dump, including content that was stored within at least a collection of memory cells used by a function that had been called while an application is running and was dumped into the machine readable medium, analyzing, by a host system, a heap dump to determine class dependencies including at least determining which class depends from which classes;

creating a map, by the processor system, of the heap dump, mapping the class dependencies, by mapping which classes depend on which classes;

locating and erasing, by the host system, sensitive information, wherein the steps of locating and erasing sensitive information includes at least determining

whether a piece of information originated from a particular class that is used for storing confidential information, and

whether an object associated with the piece of information is of a particular type, and

if the information originated from that particular class and the object is of the particular type, erasing the information in case the information is sensitive information;

storing, by the host system, into the memory system information that remains after the erasing;

rebuilding, by the host system, the content of the heap dump by at least reconstructing the class dependencies without the sensitive information, therein restoring dependencies of classes on other classes;

a class dependency being an object from which another object derives functionality, the heap dump, after being rebuilt, includes the class dependencies, the reconstructing of the class dependencies including re-establishing references in objects to other objects that are relied on for functionality;

the heap dump data including at least

an instance dump portion, which is a portion of the heap dump data that includes at least an address of an object of interest, information related to a state of the object of interest that the object of interest was in just prior to the dump, and address of objects that referenced the object of interest, and

a class dump portion, which is a portion of the heap dump that identifies objects created as specified by a particular class, the class dump includes at least address allocated to a class and a name of the class.

Assignments (2)
CHANGE OF NAME Recorded Oct 24, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069274/0258 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2011
From: HOSSAIN, FIAZ; ZHENG, ZUYE
To: SALESFORCE.COM, INC.
Reel/Frame 026558/0359 →