Claims
- 1. A method for detecting an anomalous operation of a computer system, comprising:
(a) monitoring transitions between and among program instrumentation points within an internal operating environment on the computer system and producing program execution trace data; (b) comparing the program execution trace data with data indicative of a nominal operation of the computer system; and (c) identifying an anomalous operation of the computer system based on the result of the comparison.
- 2. A method as recited in claim 1, wherein said monitoring is performed by employing software signals obtained from instrumented code at instrumentation points in an execution path of the computer system.
- 3. A method as recited in claim 1, wherein said monitoring is performed by employing software signals obtained from a hardware address bus associated with the computer system.
- 4. A method as recited in claim 1, wherein said program execution trace data is employed to provide an execution profile including a list of execution paths that have executed in a specified time frame and the frequencies of executions.
- 5. A method as recited in claim 1, wherein the computer system comprises a plurality of program modules in an instrumented software system.
- 6. A method as recited in claim 5, wherein each program module implements a predefined functional requirement.
- 7. A method as recited in claim 6, wherein each program module includes a mechanism for calling another module, and the method further comprises the use of a statistical methodology to identify a relatively small set of cohesive program modules that represent the dynamic bindings among program modules as they execute.
- 8. A method as recited in claim 7, wherein instrumentation points are employed to monitor the activity of an executing program and to indicate an epoch in the execution of the program.
- 9. A method as recited in claim 8, further comprising recording, in an execution profile for the program, telemetry from the instrumentation points at each epoch.
- 10. A method as recited in claim 9, wherein the execution profile comprises an n element vector (X) comprising at least one entry for each program module.
- 11. A method as recited in claim 10, wherein each element, xi, of said vector contains a frequency count for the number of times that the corresponding instrumentation point mi has executed during an era of kepochs, where
- 12. A method as recited in claim 11, wherein an execution profile is recorded whenever the number of epochs, k, reaches a predefined count, K, at which time the contents of the execution profile vector is set to zero.
- 13. A method as recited in claim 12, wherein the recorded activity of the program during its last L=jK epochs is stored in a sequence of j execution profiles, X1,X2, . . . ,Xj, where the value xi,j represents the frequency of execution of the ith program module on the jth execution profile.
- 14. A method as recited in claim 11, further comprising the step of reducing the size of the execution profiles from n, the number of instrumentation points whose activity is highly correlated, to a smaller set of m virtual instrumentation points whose activity is uncorrelated.
- 15. A method as recited in claim 14, wherein the statistical technique of principal components analysis is employed to reduce the dimensionality of the execution profiles.
- 16. A method as recited in claim 14, wherein the statistical technique of principal factor analysis is employed to reduce the dimensionality of the execution profiles.
- 17. A method as recited in claim 14, wherein an n×j, j>n data matrix D=X1,X2, . . . ,Xj is factored into m virtual orthogonal module components, where m is less than n, whereby the dimensionality is reduced from n to m.
- 18. A method as recited in claim 17, wherein an eigenvalue λl is associated with each of the m orthogonal components.
- 19. A method as recited in claim 18, wherein the eigenvalues satisfy the relation
- 20. A method as recited in claim 17, further comprising using a predefined stopping rule in determining a number of components extracted in an orthogonal structure representing an execution profile with reduced dimensionality.
- 21. A method as recited in claim 20, wherein the stopping rule is: extract all components whose eigenvalues are greater that a predefined threshold.
- 22. A method as recited in claim 20, wherein the stopping rule is: extract those components such that the proportion of variation represented by
- 23. A method as recited in claim 17, further comprising constructing a matrix (P), wherein said matrix is an n×m structure whose rows, p·j, contain values showing the degree of relationship of the variation of the ith program module and the jth factor or principal component.
- 24. A method as recited in claim 17, further comprising the step of forming a mapping vector (O) for at least one execution profile vector.
- 25. A method as recited in claim 24, wherein the mapping vector, O, comprises elements oj whose values are defined as follows:
let 9qi=pij1≤j≤mmax;let oj=index(qj) represent the column number in which the corresponding value qj occurs.
- 26. A method as recited in claim 25, wherein the mapping vector contains data to map probe event frequencies recorded in the execution profile vector onto corresponding virtual module equivalents.
- 27. A method as recited in claim 26, wherein a frequency count for each instrumentation point k in an execution profile vector is represented by a value fk, and the mapping vector element ok contains an the index value that k maps into.
- 28. A method as recited in claim 17, wherein m orthogonal sources of variation in the data vector D representing the original n program instrumentation points are identified.
- 29. A method as recited in claim 27, wherein, on each of the original raw execution profiles, the instrumentation point frequency count is represented in the elements xi,j, of the profile vector, Xi.
- 30. A method as recited in claim 24, wherein a frequency count for each instrumentation point k in an execution profile vector is represented by a value fk; wherein the mapping vector element ok contains an the index value that k maps into; wherein the mapping vector contains data to map probe event frequencies recorded in the execution profile vector onto corresponding virtual module equivalents; and wherein, after the mapping vector has been established, a virtual profile vector (Yi) is employed to contain the frequency count for interactions among virtual execution domain sets.
- 31. A method as recited in claim 30, wherein the virtual profile vector, Yi, is defined by:
- 32. A method for detecting an anomalous operation of a computer system including a plurality of program modules, comprising:
(a) monitoring transitions between and among program instrumentation points within an internal operating environment on the computer system, wherein said monitoring is performed by employing software signals obtained from instrumented code in the program modules; (b) providing program instrumentation trace data representative of the transitions between and among program modules within a time frame; (c) identifying a relatively small set of virtual execution domains whose activity is substantially uncorrelated, and using this information to reduce the amount of trace data needed to detect anomalous activity; (d) comparing the reduced amount of trace data with predefined data indicative of a nominal operation of the computer system; and (c) identifying an anomalous operation of the computer system based on the result of the comparison.
- 33. A method as recited in claim 32, wherein said program execution trace data is employed to provide an execution profile including a list of execution paths that have executed in a specified time frame and the frequencies of executions.
- 34. A method as recited in claim 32, wherein each program module includes a mechanism for calling another module, and wherein step (c) comprises the use of a statistical methodology to identify a relatively small set of cohesive program modules that represent dynamic bindings among program modules as they execute.
- 35. A method as recited in claim 32, wherein instrumentation points are employed to monitor the activity of an executing program and to indicate an epoch in the execution of the program.
- 36. A method as recited in claim 35, further comprising recording, in a first execution profile for the program, telemetry from the instrumentation points at each epoch.
- 37. A method as recited in claim 36, wherein for the first execution profile comprises an n element vector (X) comprising at least one entry for each program module, and wherein each element, xi, of said vector contains a frequency count for the number of times that the corresponding instrumentation point mi has executed during an era of k epochs, where
- 38. A method as recited in claim 37, wherein the recorded activity of the program during its last L=jK epochs is stored in a sequence of j execution profiles, X1,X2, . . . , Xj, where the value xi,j represents the frequency of execution of the ith program module on the jth execution profile.
- 39. A method as recited in claim 38, further comprising the step of reducing the dimensionality of the execution profiles from n, the numbers of instrumentation points whose activity is highly correlated, to a smaller set of m virtual instrumentation points whose activity is uncorrelated.
- 40. A method as recited in claim 39, wherein the statistical technique of principal components analysis is employed to reduce the dimensionality of the execution profiles.
- 41. A method as recited in claim 39, wherein the statistical technique of principal factor analysis is employed to reduce the dimensionality of the execution profiles.
- 42. A method as recited in claim 39, wherein an n×j, j>n data matrix D=Xl,X2, . . . ,Xj is factored into m virtual orthogonal module components, where m is less than n, whereby the dimensionality is reduced from n to m.
- 43. A method as recited in claim 42, wherein an eigenvalue λi is associated with each of the m orthogonal components.
- 44. A method as recited in claim 43, wherein the eigenvalues satisfy the relation
- 45. A method as recited in claim 39, further comprising using a predefined stopping rule in determining a number of components extracted in an orthogonal structure representing an execution profile with reduced dimensionality.
- 46. A method as recited in claim 45, wherein the stopping rule is: extracted all components whose eigenvalues are greater that a predefined threshold.
- 47. A method as recited in claim 45, wherein the stopping rule is: extract those components such that the proportion of variation represented by
- 48. A method as recited in claim 45, further comprising constructing a matrix (P), wherein said matrix is an n×m structure whose rows, p·j, contain values showing the degree of relationship of the variation of the ith program module and the jth factor or principal component.
- 49. A method as recited in claim 48, further comprising the step of forming a mapping vector (O) for at least one execution profile vector, wherein the mapping vector, O, comprises elements oj whose values are defined as follows:
let 14qi=pij1≤j≤mmax;let oj=index(qj) represent the column number in which the corresponding value qj occurs.
- 50. A method as recited in claim 49, wherein the mapping vector contains data to map probe event frequencies recorded in the execution profile vector onto corresponding virtual module equivalents.
- 51. A method as recited in claim 50, wherein a frequency count for each instrumentation point k in an execution profile vector is represented by a value ƒk, and the mapping vector element ok contains an the index value that k maps into.
- 52. A method as recited in claim 51, wherein m orthogonal sources of variation in the data vector D representing the original n program instrumentation points are identified.
- 53. A method as recited in claim 52, wherein, on each of the original raw execution profiles, the instrumentation point frequency count is represented in the elements, xi,j, of the profile vector, Xi.
- 54. A method as recited in claim 53, wherein the mapping vector contains data to map probe event frequencies recorded in the execution profile vector onto corresponding virtual module equivalents; and wherein, after the mapping vector has been established, a virtual profile vector (Yi) is employed to contain the frequency counts for interactions among virtual execution domain sets.
- 55. A method as recited in claim 54, wherein the virtual profile vector, Yi, is defined by:
- 56. A computer system, comprising:
(a) a plurality of program modules; (b) monitoring means for monitoring transitions between and among instrumentation points within the program modules, wherein said monitoring is performed by employing software signals obtained from instrumented code in the program modules, and for providing program instrumentation trace data representative of the transitions between and among program modules within a time frame; (c) means for identifying a relatively small set of virtual execution domains whose activity is substantially uncorrelated, and using this information to reduce the amount of trace data needed to detect anomalous activity; (d) means for comparing the reduced amount of trace data with predefined data indicative of a nominal operation of the computer system; and (e) means for identifying an anomalous operation of the computer system based on the result of the comparison.
- 57. A system as recited in claim 56, wherein said program execution trace data is employed to provide an execution profile including a list of execution paths that have executed in a specified time frame and the frequencies of executions.
- 58. A system as recited in claim 56, wherein each program module includes a mechanism for calling another module, and wherein step (c) comprises the use of a statistical method to identify a relatively small set of cohesive program modules that represent dynamic bindings among program modules as they execute.
- 59. A system as recited in claim 56, wherein instrumentation points are employed to monitor the activity of an executing program and to indicate an epoch in the execution of the program.
- 60. A system as recited in claim 59, further comprising recording, in a first execution profile for the program, telemetry from the instrumentation points at each epoch.
- 61. A system as recited in claim 60, wherein the first execution profile comprises an n element vector (X) comprising at least one entry for each program module, and wherein each element, xi, of said vector contains a frequency count for the number of times that the corresponding instrumentation point mi has executed during an era of k epochs, where
- 62. A system as recited in claim 61, wherein the recorded activity of the program during its last L=jK epochs is stored in a sequence of j execution profiles, X1,X2, . . . ,Xj, where the value xi,j represents the frequency of execution of the ith program module on the jth execution profile.
- 63. A system as recited in claim 62, further comprising the step of reducing the dimensionality of the execution profiles from n, the number of instrumentation points whose activity is highly correlated, to a smaller set of m virtual instrumentation points whose activity is uncorrelated.
- 64. A system as recited in claim 63, wherein the statistical technique of principal components analysis is employed to reduce the dimensionality of the execution profiles.
- 65. A system as recited in claim 63, wherein the statistical technique of principal factor analysis is employed to reduce the dimensionality of the execution profiles.
- 66. A system as recited in claim 63, wherein an n×j, j>n data matrix D=X1,X2, . . . ,Xj is factored into m virtual orthogonal module components, where m is less than n, whereby the dimensionality is reduced from n to m.
- 67. A system as recited in claim 66, wherein an eigenvalue λi is associated with each of the m orthogonal components.
- 68. A system as recited in claim 67, wherein the eigenvalues satisfy the relation
- 69. A system as recited in claim 68, further comprising using a predefined stopping rule in determining a number of components extracted in an orthogonal structure representing an execution profile with reduced dimensionality.
- 70. A system as recited in claim 69, wherein the stopping rule is: extract all components whose eigenvalues are greater that a predefined threshold.
- 71. A system as recited in claim 69, wherein the stopping rule is: extract those components such that the proportion of variation represented by
- 72. A system as recited in claim 68, further comprising constructing a matrix (P), wherein said matrix is an n×m structure whose rows, p·j, contain values showing the degree of relationship of the variation of the ith program module and the jth factor or principal component.
- 73. A system as recited in claim 72, further comprising the step of forming a mapping vector (O) for at least one execution profile vector, wherein the mapping vector, O, comprises elements oj whose values are defined as follows:
let 19qi=pij1≤j≤mmax;let oj=index(qj) represent the column number in which the corresponding value qj occurs.
- 74. A system as recited in claim 73, wherein the mapping vector contains data to map probe event frequencies recorded in the execution profile vector onto corresponding virtual module equivalents.
- 75. A system as recited in claim 74, wherein a frequency count for each instrumentation point k in an execution profile vector is represented by a value ƒk, and the mapping vector element ok contains and the index value that k maps into.
- 76. A system as recited in claim 75, wherein m orthogonal sources variation in the data vector D representing the original n program instrumentation points are identified.
- 77. A system as recited in claim 76, wherein, on each of the original raw execution profiles, the instrumentation point frequency count is represented in the elements, xi,j, of the profile vector, Xl.
- 78. A system as recited in claim 77, wherein the mapping vector contains data to map probe event frequencies recorded in the execution profile vector onto corresponding virtual module equivalents; and wherein, after the mapping vector has been established, a virtual profile vector (Yi) is employed to contain the frequency counts for interaction among virtual execution domain sets.
- 79. A system as recited in claim 78, wherein the virtual profile vector, Yi, is defined by:
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] The present application is a continuation-in-part of U.S. patent application No. 09/309,755, filed May 11, 1999, “Dynamic Software System Intrusion Detection,” which is hereby incorporated by reference in its entirety.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09309755 |
May 1999 |
US |
Child |
10099752 |
Mar 2002 |
US |