IP Library Granted Patent US 11,494,484
Granted Patent B2
US 11,494,484 · App. 16/795,422 · Granted Nov 8, 2022

Leveraging instrumentation capabilities to enable monitoring services

Inventors: Greig W. Bannister (Allambie Heights, AU); Randy Yen-pang Chou (San Jose, CA)
Assignee: Nubeva, Inc.
G06F21/53G06F9/45558G06F9/542G06F9/546G06F21/54H04L9/0819H04L63/0245H04L63/30G06F2009/45587G06F2009/45595
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,494,484
App. No.
16/795,422
Granted
Nov 8, 2022
Kind
B2
Abstract

The disclosed embodiments disclose techniques for leveraging instrumentation capabilities to enable monitoring services. During operation, an operating system kernel is instrumented to associate a sub-program with a target operation. Upon receiving a request from an application to perform the target operation, the operating system kernel executes the sub-program with kernel privileges in the process context of the application. The sub-program analyzes the memory space associated with the application to extract a desired data value. This extracted data value is returned to at least one of a specified target process or target location.

Claims (65)

1. A computer-implemented method for leveraging instrumentation capabilities to enable monitoring services, the method comprising:

receiving in an operating system kernel an instrumentation request to associate a sub-program with a target operation;

upon receiving in the operating system kernel from an application an application request to perform the target operation, executing the sub-program with kernel privileges in the address space of the application, wherein the sub-program analyzes the memory space associated with the application to extract a desired data value; and

returning the desired data value to at least one of a specified target process or target location.

2. The computer-implemented method of claim 1 ,

wherein the target operation is a function call into a binary library that provides encryption functionality;

wherein the application is executing the function call to encrypt a message; and

wherein the desired data value is an encryption key.

3. The computer-implemented method of claim 2 ,

wherein the sub-program is generated by an enterprise agent that is not associated with an application developer that has developed the application;

wherein the sub-program is generated subsequent to the development of the application and the binary library;

wherein the sub-program is limited to a subset of instruction and programming parameters that ensure that the sub-program can be verified to execute safely, securely, and reliably in the operating system kernel;

wherein the programming parameters ensure that the sub-program does not include any indefinite loops and is guaranteed to terminate in a specified timeframe; and

wherein the sub-program is verified by the kernel before it is executed in the address space of the application with kernel privileges.

4. The computer-implemented method of claim 3 ,

wherein the operating system kernel is a Linux kernel;

wherein the sub-program is a compiled set of program instructions that were generated from a program specified in enhanced Berkeley packet filter (EBPF) machine language syntax; and

wherein the Linux kernel verifies that the sub-program is guaranteed to execute safely prior to executing the sub-program in the address space of the application.

5. The computer-implemented method of claim 3 ,

wherein the sub-program is generated to leverage knowledge of the layout of a function call stack in the address space of the application;

wherein the sub-program uses the leveraged knowledge of the layout of the function call stack to access a function variable for the function call; and

wherein the sub-program leverages knowledge of (1) a defined type for the function variable and (2) a data structure for the defined type to traverse one or more data structures in the application address space to extract the desired data value.

6. The computer-implemented method of claim 5 , wherein the function variable is a pointer to a first data structure, wherein traversing one or more data structures further comprises:

using the pointer to the first data structure to locate the first data structure in the address space of the application;

leveraging knowledge of the layout of the first data structure to determine a target pointer field in the first data structure that points to a second data structure of a different type in the address space of the application;

dereferencing the pointer field to access the second data structure; and leveraging knowledge of the layout of the second data structure to access the encryption key from the second data structure.

7. The computer-implemented method of claim 6 , wherein accessing the encryption key from the second data structure further comprises reading other known fields in the second data structure that indicate the length and type of the encryption key to determine which and how many bytes of memory for the second data structure need to be extracted to accurately extract the encryption key.

8. The computer-implemented method of claim 7 ,

wherein the operating system kernel and the application execute in a cloud computing environment;

wherein the instrumentation request is sent by the enterprise agent, which also executes in the cloud computing environment; and

wherein the specified target process receiving the encryption key is the enterprise agent.

9. The computer-implemented method of claim 8 ,

wherein the enterprise agent intercepts and stores encrypted traffic generated by the application; and

wherein the enterprise agent uses the extracted encryption key to decrypt and analyze the encrypted traffic generated by the application.

10. The computer-implemented method of claim 9 , wherein the enterprise agent, upon detecting an undesired operation or data value in the encrypted traffic, is configured to perform at least one of raising an alert or terminating the application.

11. The computer-implemented method of claim 9 , wherein executing the enterprise agent further comprises:

determining an inventory of parameters for the cloud computing environment by determining one or more of the operating system type, kernel instrumentation policies, the set of installed binary libraries, and version information for the installed binary libraries;

sending the inventory to an instrumentation configuration service (ICS), wherein the ICS is configured to:

gather and track instrumentation information for a wide range of operating systems, binary libraries, function calls, data structures, and applications; and

use the inventory to generate and send to the enterprise agent a set of target function calls and a set of instrumented sub-programs to apply to the set of target function calls; and

submitting a set of instrumentation requests to the operating system kernel to associate the set of instrumented sub-programs with the target function calls.

12. The computer-implemented method of claim 2 ,

wherein the application performs the target operation in the process of making an encrypted network request to a remote service; and

wherein returning the desired data value facilitates analyzing the encrypted network request to confirm that the encrypted network request is not compromising the security of an enterprise that hosts the application.

13. The computer-implemented method of claim 2 , wherein the method further comprises:

sending the encryption key to a cloud-based security service;

wherein the cloud-based security service executes in a dispatcher virtual machine (VM) executing in a cloud data center;

wherein the cloud-based security service receives from the application a network request to an untrusted network that is external to and distinct from the cloud data center and an enterprise location in which the application is executing;

wherein the cloud-based security service comprises a set of one or more security service VMs executing in the cloud data center that use the encryption key to decrypt and analyze the network request; and

wherein, upon determining in the set of one or more security service VMs that the network request is permitted, the cloud-based security service forwards the network request to the untrusted network.

14. The computer-implemented method of claim 1 ,

wherein the desired data value is a pointer to a linked list; and

wherein the specified target process is a user space program that uses the pointer and knowledge of the format of the linked list to traverse the linked list and retrieve a target data value that is stored in the linked list.

15. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for leveraging instrumentation capabilities to enable monitoring services, the method comprising:

receiving in an operating system kernel an instrumentation request to associate a sub-program with a target operation;

upon receiving in the operating system kernel from an application an application request to perform the target operation, executing the sub-program with kernel privileges in the address space of the application, wherein the sub-program analyzes the memory space associated with the application to extract a desired data value; and

returning the desired data value to at least one of a specified target process or target location.

16. A computing device that leverages instrumentation capabilities to enable monitoring services, comprising:

a processor that executes an operating system kernel that supports executing multiple different lightweight services in a single virtual machine using docker containers;

a receiving mechanism; and

a memory;

wherein the receiving mechanism is configured to receive an instrumentation request to associate a sub-program with a target operation;

wherein the receiving mechanism conveys the instrumentation request to the operating system kernel;

wherein, upon receiving in the operating system kernel from an application an application request to perform the target operation, executing the sub-program in the processor with kernel privileges in the address space of the application, wherein the sub-program analyzes the portion of the memory associated with the application to extract a desired data value; and

wherein, upon completing execution of the sub-program, the processor is configured to return the desired data value to at least one of a specified target process or target location.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2024
From: NUBEVA, INC.
To: NETSKOPE, INC.
Reel/Frame 066821/0660 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2020
From: BANNISTER, GREIG W; CHOU, RANDY YEN-PANG
To: NUBEVA, INC.
Reel/Frame 052430/0704 →
Continuity (5)
Continuation In Part 15842848 · Dec 14, 2017
Continuation In Part 15792679 · Oct 24, 2017
Provisional Application 62864411 · Jun 20, 2019
Provisional Application 62412171 · Oct 24, 2016
Related Publication 20200193017A1 · Jun 18, 2020