Program Version Identification via Memory Image Signatures
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In mission-critical computing applications, long-running programs in cloud-based provider networks face challenges in determining the exact version running on thousands of hosts, due to the complexity of updates, 'hot-patching,' and potential loss or errors in software change records, which can lead to security and availability issues.
Innovation Solution
The use of version discrimination signatures derived from selected subsets of object files, allowing for the identification of running program versions by comparing development environment signatures with run-time signatures extracted from memory images, minimizing disruptions and resource usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If software updates are frequently deployed to long-running programs, then program functionality and security are improved, but version tracking accuracy deteriorates
Solution Approach 1:
The patent creates a copy of the program's binary image from memory and generates a signature from this copy. This allows version identification without affecting the running program, enabling accurate version tracking even with frequent updates and hot-patching.
Solution Approach 2:
The patent generates version discrimination signatures from binary images before comparing them during runtime. By preparing signatures in advance from the binary image and storing them for later comparison, the system can quickly identify versions without disrupting program execution.
2Productivity
If hot-patching techniques are used to modify in-memory programs, then program availability is improved, but version determination difficulty increases
Solution Approach 1:
The system creates a copy of the binary image from memory for signature generation. This copy approach allows version identification without modifying or interrupting the running program, making it compatible with hot-patching techniques and maintaining high availability.
Solution Approach 2:
The patent extracts specific portions from the binary image that are suitable for version discrimination. By segmenting the binary image into relevant portions and generating signatures from these segments, the system can identify versions efficiently without analyzing the entire program image.
3Loss of information
If comprehensive software change records are maintained, then version tracking is improved, but data loss risk increases
Solution Approach 1:
The system generates signatures from the actual running program's binary image and uses these signatures to determine version information. This feedback mechanism ensures that version tracking reflects the actual state of running programs, compensating for potential losses or errors in maintenance records.
Solution Approach 2:
The running program itself provides the version identification information through its binary image. By extracting signatures directly from the program's memory image, the system makes the program self-describing, eliminating reliance on external records that may be lost or contain errors.
4Measurement precision
If version identification methods require program restarts, then version accuracy is improved, but service availability deteriorates
Solution Approach 1:
The patent creates a copy of the binary image from the running program's memory without requiring program termination. This copying approach enables version identification while the program continues to execute, maintaining service availability while achieving accurate version detection.
Data Source
AI summary
A particular portion of a program which can be read from on-disk representations of the program as well as from memory images of the program is identified for use as a version discriminator. A first representation of the portion may be obtained from a first memory image of the program, corresponding to a first running instance of the program. The first representation may be compared to a second representation obtained at a development environment. Based on the results of the comparison, a particular version of the program corresponding to the first running instance may be identified. An indication of the particular version may be stored.


