IP Library Granted Patent US 11,269,988
Granted Patent B2
US 11,269,988 · App. 16/235,731 · Granted Mar 8, 2022

Automated software application verification system

Inventor: Sander Bogaert (Aalst, BE)
Assignee: PNC BUSINESS CREDIT
G06F21/52G06F8/75G06F9/30076G06F9/4484G06F11/28G06F21/121G06F21/64
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 11,269,988
App. No.
16/235,731
Granted
Mar 8, 2022
Kind
B2
Abstract

An automated application verification module is provided to identify one or more functions of a software application. There is added, for at least one of the identified functions, a verification prologue at the entry point of the function which does not alter the control flow of the original set of instructions of the function and/or does not change the semantics of the function when the verification prologue is executed in its entirety. There is added at least one corresponding verification prologue check to the software application, such that the verification prologue check is configured to automatically check the integrity of the corresponding verification prologue during execution of the software application.

Claims (58)

1. One or more hardware storage devices having stored thereon computer-executable instructions that are executable by a computer system to cause an automated application verification module to:

receive a software application;

identify one or more functions of the software application;

for at least one of the identified functions:

in which the identified function consists of an original set comprising one or more instructions;

add a verification prologue at the entry point of the function which does not alter the control flow of the original set of the function when the verification prologue is executed in its entirety; and

add at least one corresponding verification prologue check to the software application, such that the verification prologue check is configured to automatically check the integrity of the corresponding verification prologue during execution of the software application.

2. The one or more hardware storage devices according to claim 1 , wherein the verification prologue consists of a predetermined, non-empty set comprising instructions configured such that, when the set is executed in its entirety, the control flow of the original set of the function is not altered.

3. The one or more hardware storage devices according to claim 1 , wherein the verification prologue consists of a predetermined, non-empty set comprising instructions configured such that, when the set is executed in its entirety, the set has no semantic effect on the function.

4. The one or more hardware storage devices according to claim 1 , wherein the verification prologue consists of a predetermined, non-empty set comprising one or more no operation or NOP instructions.

5. The one or more hardware storage devices according to claim 1 , wherein the verification prologue consists of a predetermined, non-empty set comprising instructions configured such that, when the set is executed with modifications and/or not in its entirety:

the execution of the software application is aborted;

the execution of the software application fails;

the execution of the software application continues in an erroneous way; and/or

the execution of a predetermined integrity breach function of the software application is triggered.

6. The one or more hardware storage devices according to claim 1 , wherein the verification prologue consists of a predetermined set comprising one or more predetermined bytes, prefixed by a predetermined jump instruction configured to jump across these predetermined bytes when executed.

7. The one or more hardware storage devices according to claim 6 , wherein the one or more predetermined bytes comprise one or more of the following:

one or more predetermined data;

one or more random bytes;

one or more invalid instructions.

8. The one or more hardware storage devices according to claim 1 , wherein the verification prologue check is configured to:

upon a successful integrity check: continue the execution of the software application; and

upon a failing integrity check:

abort the execution of the software application;

continue the execution of the software application such that it fails;

continue the execution of the software application in an erroneous way; and/or

trigger the execution of a predetermined integrity breach function of the software application.

9. The one or more hardware storage devices according to claim 1 , wherein the verification prologue check is configured to check the integrity by comparing at least a predetermined part of the verification prologue of the function as inserted at build time with the corresponding part of the function at run time.

10. The one or more hardware storage devices according to claim 1 , wherein the verification prologue check is configured to check the integrity by comparing a predetermined checksum of the inserted verification prologue at build time with a checksum of the verification prologue as calculated during execution.

11. The one or more hardware storage devices according to claim 1 , wherein the verification prologue check is configured to check the integrity by means of a decryption function in which at least part of the corresponding verification prologue is used as decryption key.

12. The one or more hardware storage devices according to claim 1 , wherein the verification prologue check is configured to check the integrity by means of one or more opaque predicates which comprises a predetermined evaluation of at least a part of the corresponding verification prologue.

13. A computer-implemented method of operating an automated application verification module, the method comprising:

receiving a software application;

identifying one or more functions of the software application;

for at least one of the identified functions:

in which the identified function consists of an original set comprising one or more instructions;

adding a verification prologue at the entry point of the function which does not alter the control flow of the original set of the function when the verification prologue is executed in its entirety; and

adding at least one corresponding verification prologue check to the software application, such that the verification prologue check is configured to automatically check the integrity of the corresponding verification prologue during execution of the software application.

14. The method according to claim 13 , wherein the verification prologue consists of a predetermined, non-empty set comprising instructions configured such that, when the set is executed in its entirety, the control flow of the original set of the function is not altered.

15. The method according to claim 13 , wherein the verification prologue consists of a predetermined, non-empty set comprising instructions configured such that, when the set is executed in its entirety, the set has no semantic effect on the function.

16. The method according to claim 13 , wherein the verification prologue consists of a predetermined, non-empty set comprising one or more no operation or NOP instructions.

17. The method according to claim 13 , wherein the verification prologue consists of a predetermined, non-empty set comprising instructions configured such that, when the set is executed with modifications and/or not in its entirety:

the execution of the software application is aborted;

the execution of the software application fails;

the execution of the software application continues in an erroneous way; and/or

the execution of a predetermined integrity breach function of the software application is triggered.

18. The method according to claim 13 , wherein the verification prologue consists of a predetermined set comprising one or more predetermined bytes, prefixed by a predetermined jump instruction configured to jump across these predetermined bytes when executed.

19. The method according to claim 18 , wherein the one or more predetermined bytes comprise one or more of the following:

one or more predetermined data;

one or more random bytes;

one or more invalid instructions.

20. The method according to claim 13 , wherein the verification prologue check is configured to:

upon a successful integrity check: continue the execution of the software application; and

upon a failing integrity check:

abort the execution of the software application;

continue the execution of the software application such that it fails;

continue the execution of the software application in an erroneous way; and/or

trigger the execution of a predetermined integrity breach function of the software application.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Feb 13, 2025
From: PNC BUSINESS CREDIT
To: GUARDSQUARE NV
Reel/Frame 070204/0526 →
SECURITY INTEREST Recorded Nov 30, 2020
From: GUARDSQUARE NV
To: PNC BUSINESS CREDIT
Reel/Frame 054548/0550 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ORDER OF THE INVENTOR'S NAME PREVIOUSLY RECORDED ON REEL 048282 FRAME 0181. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 13, 2019
From: BOGAERT, SANDER
To: GUARDSQUARE NV
Reel/Frame 048326/0564 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2019
From: SANDER, BOGAERT
To: GUARDSQUARE NV
Reel/Frame 048282/0181 →
Priority Claims (1)
EP 17210888 · Dec 28, 2017 · regional
Continuity (1)
Related Publication 20190205528A1 · Jul 4, 2019