Label-based taint analysis
AssigneeInternational Business Machines Corporation
InventorsMarco Pistoia, Takaaki Tateishi, Omer Tripp
Life of this patent
Estimating the term…
Abstract
A computer-implemented method and apparatus, adapted to receive a computer program, and dynamically analyze the computer program to determine flow of untrusted data with respect to a computer resource associated with the computer program. Based on the flow of untrusted data, the method and apparatus determine an abstraction of the computerized resource, and performing static analysis of the computer program with respect to the abstraction, wherein the static analysis is for identifying whether the computer program is susceptible to one or more possible security vulnerabilities.
Claims21
A computer-implemented method performed by a computerized device, comprising:
- receiving a computer program configured to use a plurality of memory locations;
- dynamically analyzing the computer program to determine flow of untrusted data during execution of the computer program, wherein the flow of untrusted data is determined by tracking propagation of untrusted data between memory locations;
- identifying at least one likely invariant of the computer program relating to trusted data or untrusted data being retained at a portion of the plurality of memory locations;
- at least based on the at least one likely invariant, determining an abstraction of the computer program useful for statically analyzing whether the computer program is susceptible to at least one possible security vulnerability;
- and
- performing static analysis of the abstraction, wherein the static analysis is for identifying whether the computer program is susceptible to at least one possible security vulnerability.
A computerized apparatus having a processor, the processor being adapted to perform the steps of:
- receiving a computer program configured to use a plurality of memory locations;
- dynamically analyzing the computer program to determine flow of untrusted data during execution of the computer program, wherein the flow of untrusted data is determined by tracking propagation of untrusted data between memory locations;
- identifying at least one likely invariant of the computer program relating to trusted data or untrusted data being retained at a portion of the plurality of memory locations;
- at least based on the at least one likely invariant, determining an abstraction of the computer program useful for statically analyzing whether the computer program is susceptible to at least one possible security vulnerability;
- and
- performing static analysis of the abstraction, wherein the static analysis is for identifying whether the computer program is susceptible to at least one possible security vulnerability.
A computer program product comprising a non-transitory computer readable medium retaining program instructions, which instructions when read by a processor, cause the processor to perform a method comprising:
- receiving a computer program configured to use a plurality of memory locations;
- dynamically analyzing the computer program to determine flow of untrusted data during execution of the computer program, wherein the flow of untrusted data is determined by tracking propagation of untrusted data between memory locations;
- identifying at least one likely invariant of the computer program relating to trusted data or untrusted data being retained at a portion of the plurality of memory locations;
- at least based on the at least one likely invariant, determining an abstraction of the computer program useful for statically analyzing whether the computer program is susceptible to at least one possible security vulnerability;
- and
- performing static analysis of the abstraction, wherein the static analysis is for identifying whether the computer program is susceptible to at least one possible security vulnerability.
Dependencies are inferred from the claim text.