Techniques are described for dynamically enabling or disabling portions of an executing software module based on control data. During compilation of source code for a software module, switching instructions may be generated to enable the conditional bypassing of executable instructions for one or more functions described in the source code. In some cases, the switching instructions may be generated for the public functions of a software module. During execution of the software module, the switching instructions may trap a call to a function and dynamically determine whether to execute the function based on the value of control data corresponding to the function. A user interface may be presented to enable an operator to set the control data to enable or disable the execution of one or more functions.
Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A system, comprising: at least one computing device configured to implement one or more services, the one or more services configured to: present a user interface (UI) on a display device of one of the at least one computing device, the UI including a plurality of controls corresponding to a plurality of switchable sets of executable instructions in source code; determine selection information indicating that one or more of the switchable sets of executable instructions associated with a security vulnerability are to be bypassed, the selection information generated through a selection of one of the plurality of controls; determine, based on the selection information, control data indicative of bypass of the one or more switchable sets of executable instructions during the execution of the source code; compile the source code to generate executable code, the compiling including: generating executable function code for a function described in the source code; and generating one or more switching instructions, wherein the one or more switching instructions cause the executable function code to be bypassed responsive to the control data including a first value, wherein the one or more switching instructions cause the executable function code to be executed responsive to the control data including a second value, and wherein the one or more switching instructions are not indicated in the source code; and set the control data to include the first value to cause the executable function code associated with the security vulnerability to be bypassed during execution of the executable code.
A system dynamically disables software functions with security vulnerabilities. A user interface displays controls for each function in the source code. Selecting a control indicates a function should be bypassed. Based on these selections, control data (e.g., a flag) is generated. During compilation, the system inserts "switching instructions" before each function. At runtime, these instructions check the control data. If the data indicates a bypass (e.g., flag is set), the function's code is skipped; otherwise, the function executes. The control data is initially set to bypass functions with vulnerabilities. The switching instructions are added during compilation and are not present in the original source code.
2. The system of claim 1 , wherein the generating the one or more switching instructions is responsive to determining that the function is a public function.
The system described in the previous claim dynamically disables software functions with security vulnerabilities. A user interface displays controls for each function in the source code. Selecting a control indicates a function should be bypassed. Based on these selections, control data (e.g., a flag) is generated. During compilation, the system inserts "switching instructions" before each function. At runtime, these instructions check the control data. If the data indicates a bypass (e.g., flag is set), the function's code is skipped; otherwise, the function executes. The control data is initially set to bypass functions with vulnerabilities. The switching instructions are added during compilation and are not present in the original source code, and these switching instructions are specifically added to public functions.
3. The system of claim 1 , wherein the one or more switching instructions are further configured to emit, responsive to the control data including the first value, one or more of: error information indicating that the executable function code has been bypassed; or decoy data.
The system described in the claim about dynamically disabling software functions with security vulnerabilities and inserting switching instructions before functions also emits an error message or decoy data when a function is bypassed. When the control data signals a bypass (e.g., flag is set), instead of running the function, the system can return an error or substitute dummy data. This hides the vulnerability or provides misleading information to an attacker.
4. The system of claim 3 , wherein the error information comprises one or more of a return value, an exception, or an assertion.
The system from the claim where the system emits an error message or decoy data when a function is bypassed specifies the types of error information emitted. This error information can include a specific return value, an exception being thrown, or an assertion failure. These errors are triggered when the control data indicates the function should be bypassed due to a security vulnerability.
5. The system of claim 1 , wherein the one or more services are further configured to: determine that the security vulnerability has been at least partly removed; and set the control data to include the second value to cause the executable function code to be executed during the execution of the executable code.
The system described in the claim about dynamically disabling software functions with security vulnerabilities also allows re-enabling functions after a vulnerability is fixed. The system can determine that a previously identified vulnerability has been mitigated or removed. The control data associated with that function is then updated to allow execution of the function, thus reversing the initial bypass.
6. A computer-implemented method, comprising: determining a security vulnerability in a software module; presenting on a computing device a user interface (UI) including a plurality of controls corresponding to a plurality of switchable sets of executable instructions in the software module associated with the security vulnerability; generating, based at least in part on input to the plurality of controls, control data comprising a value to cause the set of executable instructions to be bypassed during execution of the software module; executing the software module comprising the set of executable instructions generated through processing a portion of source code of the software module; during the executing of the software module, determining that the control data includes the value; and during the executing of the software module, bypassing the set of executable instructions that are associated with the security vulnerability responsive to the control data including the value, wherein the bypassing of the set of executable instructions is not indicated in the source code of the software module.
A method dynamically disables software functions with security vulnerabilities at runtime. First, a security vulnerability is identified in a software module. A user interface presents controls to enable/disable specific sets of executable instructions associated with the vulnerability. User input via these controls generates control data. At runtime, the software module checks this control data before executing a set of instructions. If the control data indicates a function should be bypassed, that function is skipped. The source code of the module does not contain any instructions to perform this disabling, and the disabling is only determined at runtime.
7. The method of claim 6 , wherein: the software module further comprises one or more switching instructions that cause the set of executable instructions to be bypassed responsive to the control data including the value; and the one or more switching instructions are not indicated in the source code.
The method described in the previous claim regarding dynamically disabling software functions with security vulnerabilities relies on switching instructions within the software module. These added instructions check the control data and conditionally bypass function execution. The switching instructions themselves are not present in the original source code.
8. The method of claim 7 , wherein the one or more switching instructions are incorporated into the software module during the processing of the portion of the source code.
In the method for dynamically disabling software functions that utilizes switching instructions, these instructions are incorporated into the software module during the processing (e.g., compilation) of the source code. This allows runtime control over function execution without modifying the original source.
9. The method of claim 6 , further comprising: detecting a call to the set of executable instructions from a calling process external to the software module; disallowing the call to the set of executable instructions, responsive to the control data including the value; and allowing the call to the set of executable instructions, responsive to the control data not including the value.
The method described in the claim about dynamically disabling software functions also intercepts external calls to disabled functions. If an external process tries to call a function flagged for bypass (based on the control data), the call is blocked. If the function is not flagged, the call proceeds normally.
10. The method of claim 9 , wherein: the call is received over a network; and detecting the call to the set of executable instructions further comprises inspecting one or more packets comprising the call to determine that the call is to the set of executable instructions.
The method described in the claim about dynamically disabling software functions where external calls to disabled functions are blocked involves calls received over a network. Detecting calls to the vulnerable function includes inspecting network packets to determine the destination function being called and then comparing this information to the bypass status determined by the control data.
11. The method of claim 6 , wherein: the portion is a function described in the source code; and the processing of the portion of the source code includes compiling the function.
In the method for dynamically disabling functions with security vulnerabilities, the "portion of source code" refers to a function within the source code. Processing this portion includes compiling that specific function. This highlights that disabling occurs at the function level and involves modifying the compiled function's execution.
12. The method of claim 6 , further comprising: presenting the UI using one or more of a display, a speaker, or a haptic device.
The method for dynamically disabling software functions that utilizes a UI specifies how the UI can be presented. The user interface with controls can be displayed using a display screen, through audio output via a speaker, or through haptic feedback using a haptic device.
13. One or more non-transitory computer-readable media storing instructions which, when executed by at least one processor, instruct the at least one processor to perform operations comprising: presenting on a computing device a user interface including one or more controls; generating, based at least in part on input to the one or more controls, control data comprising a value indicative of executable instructions to be bypassed during execution of a software module that are associated with a security vulnerability; processing source code to generate executable code that is executable on at least one computing device; during the processing of the source code, generating a set of executable instructions corresponding to a portion of the source code; and generating one or more switching instructions to control execution of the set of executable instructions, the one or more switching instructions not indicated in the source code, the one or more switching instructions configured to perform one or more of: cause the set of executable instructions associated with the security vulnerability to be bypassed responsive to the control data including a first value; or cause the set of executable instructions to be executed responsive to the control data including a second value.
A non-transitory computer-readable medium stores instructions for dynamically disabling software functions. The instructions, when executed, present a user interface with controls for each function. User input generates control data indicating functions to bypass. The source code is processed (e.g., compiled) to create executable code, where each function results in a set of executable instructions. Switching instructions are then inserted to control execution of these sets of instructions. If the control data indicates a bypass, the function is skipped; otherwise, it's executed. The switching instructions are not present in the source code.
14. The one or more computer-readable media of claim 13 , wherein: the set of executable instructions is a first set of executable instructions corresponding to a first version of the portion of the source code; the one or more switching instructions are further configured to cause a second set of executable instructions to be executed responsive to the control data including the first value; and the second set of executable instructions corresponds to a second version of the portion of the source code.
The computer-readable medium from the previous claim for dynamically disabling functions and adding switching instructions implements function replacement. The original function code (first version) is bypassed using the control data and switching instructions. Instead, a second set of executable instructions, representing a different version of the function, is executed. This allows patching or replacing vulnerable functions at runtime.
15. The one or more computer-readable media of claim 13 , wherein: the processing of the source code includes compiling the source code; the generating of the one or more switching instructions is performed during the compiling; and the operations further comprise generating metadata that describes an association between the control data and the set of executable instructions.
The computer-readable medium for dynamically disabling functions and adding switching instructions also creates metadata. During source code processing/compilation, metadata is generated that links the control data to specific sets of executable instructions (functions). This allows the system to track which functions are affected by the bypass settings.
16. The one or more computer-readable media of claim 13 , wherein generating the one or more switching instructions is responsive to detecting an input parameter to the processing of the source code.
The computer-readable medium from the claim for dynamically disabling functions where switching instructions are inserted also detects an input parameter to the processing of the source code. The generation of switching instructions is triggered by detecting a specific input parameter provided during the compilation or processing of the source code.
17. The one or more computer-readable media of claim 13 , wherein generating the one or more switching instructions is responsive to detecting a directive included in the source code, the directive indicating that the portion of the source code is to be switchable.
In the computer-readable medium for dynamically disabling functions where switching instructions are inserted, the generation of switching instructions is triggered by a directive in the source code. If the source code contains a special instruction (e.g., a pragma or annotation) marking a section as "switchable," then the switching instructions are inserted during compilation.
18. The one or more computer-readable media of claim 13 , wherein the one or more switching instructions are further configured to emit, responsive to the control data including the first value, one or more of: error information indicating that the set of executable instructions has been bypassed; or decoy data.
The computer-readable medium described in the claim for dynamically disabling functions where switching instructions are inserted also emits error messages or decoy data. When a function is bypassed due to the control data, the switching instructions trigger the emission of either an error message indicating the bypass, or decoy data, which could mislead attackers or provide alternative functionality.
19. The one or more computer-readable media of claim 18 , wherein the error information comprises one or more of a return value, an exception, or an assertion.
The computer-readable medium from the claim where the system emits an error message or decoy data when a function is bypassed defines the types of error information emitted. This error information can include a specific return value from the function, an exception being thrown, or an assertion failure triggered when the bypass occurs.
20. The one or more computer-readable media of claim 13 , wherein: the control data includes a bit corresponding to the portion of the source code; the first value is a first binary value; and the second value is a second binary value.
In the computer-readable medium for dynamically disabling functions where switching instructions are inserted, the control data is implemented as a bitmask. Each bit in the control data corresponds to a particular function. A "first binary value" (e.g., 1) represents bypass, while a "second binary value" (e.g., 0) enables execution of the function.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
December 4, 2014
March 21, 2017
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.