Mitigating security risks via code movement

US9158923B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9158923-B2
Application numberUS-201314025878-A
CountryUS
Kind codeB2
Filing dateSep 13, 2013
Priority dateJan 23, 2013
Publication dateOct 13, 2015
Grant dateOct 13, 2015

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A method includes performing on a computing system a source-to-sink reachability analysis of code of an application. The reachability analysis is performed using a static analysis of the code and determines flows from sources of information to sinks that use the information. The method includes determining scopes for corresponding security sensitive operations using the determined flows, each of the security sensitive operations corresponding to statements in the code and one or more flows. A scope for a security sensitive operation includes a block of statements in the code that correspond to a set of one or more flows ending at a sink. The method includes, for each of one or more selected scopes, moving statements in a corresponding block of statements that are independent of a security sensitive operation in the block to code before or after the block. Apparatus and program products are also disclosed.

First claim

Opening claim text (preview).

What is claimed is: 1. A computing system comprising: one or more memories storing computer-readable code; and one or more processors, configured in response to executing the computer-readable code to cause the computing system to perform: performing on a computing system a source-to-sink reachability analysis of code of an application, wherein the source-to-sink reachability analysis is performed using a static analysis of the code and determines flows from sources of information to sinks that use the information; determining scopes for corresponding security sensitive operations using the determined flows, each of the security sensitive operations corresponding to statements in the code and one or more flows, wherein a scope for a security sensitive operation comprises a block of statements in the code that correspond to a set of one or more flows ending at a sink; and for each of one or more selected scopes, moving statements in a corresponding block of statements that are independent of a security sensitive operation in the block to a section of code before or after the block. 2. The apparatus of claim 1 , wherein the one or more processors are further configured in response to executing the computer-readable code to cause the computing system to perform performing, prior to moving statements, a dependence analysis to determine statements in the block that are dependent on other statements in the block, wherein moving statements uses output of the dependence analysis in order to determine the statements in the corresponding block of statements that are independent of the security sensitive operation in the block to a section of code before or after the block. 3. The apparatus of claim 2 , wherein a statement s is dependent on statement s′ in response to statement s reading a memory location written by the statement s′, or the statement s writing a memory location accessed by the statement s′. 4. The apparatus of claim 2 , wherein the source-to-sink reachability analysis is performed before the dependence analysis. 5. The apparatus of claim 2 , wherein the source-to-sink reachability analysis is performed after the dependence analysis. 6. The apparatus of claim 2 , wherein performing a dependence analysis further comprises determining relationships between a plurality of atomic statements, wherein the atomic statements correspond to statements in the block. 7. The apparatus of claim 2 , wherein the one or more processors are further configured in response to executing the computer-readable code to cause the computing system to perform: prior to moving statements, finding candidate statements in a block of statements for movement using output of the dependence analysis, and wherein moving statements further comprises moving the candidate statements that are independent of the security sensitive operations in the block to a section of code before or after the blocks. 8. The apparatus of claim 7 , wherein finding candidate statements in a block of statements for movement further comprises finding, using results of the dependence analysis, candidate statements that do not transitively depend on statements in a corresponding security sensitive operation. 9. The apparatus of claim 1 , wherein the one or more processors are further configured in response to executing the computer-readable code to cause the computing system to perform presenting on a display indication of the statements to be moved before or after the block and where the statements would be moved in the code, allowing the changes to be accepted or rejected by a user, and performing the moving the statements in response to a user accepting the changes. 10. The apparatus of claim 1 , wherein the one or more processors are further configured in response to executing the computer-readable code to cause the computing system to perform outputting code comprising statements that were moved statements and statements that were not moved. 11. A computer program product comprising a non-transitory computer readable storage medium having program code embodied therewith, the program code executable by a computing system to cause the computing system to perform: performing on a computing system a source-to-sink reachability analysis of code of an application, wherein the source-to-sink reachability analysis is performed using a static analysis of the code and determines flows from sources of information to sinks that use the information; determining scopes for corresponding security sensitive operations using the determined flows, each of the security sensitive operations corresponding to statements in the code and one or more flows, wherein a scope for a security sensitive operation comprises a block of statements in the code that correspond to a set of one or more flows ending at a sink; and for each of one or more selected scopes, moving statements in a corresponding block of statements that are independent of a security sensitive operation in the block to a section of code before or after the block. 12. The computer program product of claim 11 , wherein the program code executable by a computing system further causes the computing system to perform: prior to moving statements, performing a dependence analysis to determine statements in the block that are dependent on other statements in the block, wherein moving statements uses output of the dependence analysis in order to determine the statements in the corresponding block of statements that are independent of the security sensitive operation in the block to a section of code before or after the block. 13. The computer program product of claim 12 , wherein a statement s is dependent on statement s′ in response to statement s reading a memory location written by the statement s′, or the statement s writing a memory location accessed by the statement s′. 14. The computer program product of claim 12 , wherein the source-to-sink reachability analysis is performed before the dependence analysis. 15. The computer program product of claim 12 , wherein the source-to-sink reachability analysis is performed after the dependence analysis. 16. The computer program product of claim 12 , wherein performing a dependence analysis further comprises determining relationships between a plurality of atomic statements, wherein the atomic statements correspond to statements in the block. 17. The computer program product of claim 12 , wherein the program code executable by a computing system further causes the computing system to perform: prior to moving statements, finding candidate statements in a block of statements for movement using output of the dependence analysis, and wherein moving statements further comprises moving the candidate statements that are independent of the security sensitive operations in the block to a section of code before or after the blocks. 18. The computer program product of claim 13 , wherein finding candidate statements in a block of statements for movement further comprises finding, using results of the dependence analysis, candidate statements that do not transitively depend on statements in a corresponding security sensitive operation. 19. The computer program product of claim 11 , wherein the program code executable by a computing system further causes the computing system to perform: presenting on a display indication of the statements to be moved before or after the block and where the statements would be moved in the code, allowing the changes to be accepted or rejected by a user, and performing the moving the statement

Assignees

Inventors

Classifications

  • Code refactoring · CPC title

  • G06F21/577Primary

    Assessing vulnerabilities and evaluating computer system security · CPC title

  • during program execution, e.g. stack integrity {; Preventing unwanted data erasure; Buffer overflow} · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9158923B2 cover?
A method includes performing on a computing system a source-to-sink reachability analysis of code of an application. The reachability analysis is performed using a static analysis of the code and determines flows from sources of information to sinks that use the information. The method includes determining scopes for corresponding security sensitive operations using the determined flows, each o…
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification G06F21/577. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 13 2015 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).