IP Library Granted Patent US 9,935,984
Granted Patent B1
US 9,935,984 · App. 15/665,368 · Granted Apr 3, 2018

Scalable cloud-based endpoint security system

Inventors: Marcio Castilho (Palm Harbor, FL); Kevin Breton (Palmetto, FL); Jonathan Chan (Brooklyn, NY); Anupam Bandyopadhyay (Tampa, FL); Plamen Stoyanov (St. Petersburg, FL)
Assignee: Malwarebytes Inc.
H04L63/20H04L41/082H04L63/10G06F21/57H04L63/0263
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 9,935,984
App. No.
15/665,368
Granted
Apr 3, 2018
Kind
B1
Abstract

A scalable cloud-based endpoint security system facilitates a security policy on a plurality of endpoints. Configuration data or commands for implementing a security policy are entered via a web browser of an administrative client device and received at a cloud server. An API server generates a message to a queue of a publication/subscription server that publishes the messages from the queue to one or more subscribing communication servers. A communication server sends the message to an endpoint targeted by the message via a persistent connection that the communication server maintains with the endpoint. In response to the message, the endpoint establishes a connection to the API server. The API server then distributes the configuration data or commands to the endpoint.

Claims (73)

1. A method for updating a security policy on a plurality of endpoints in a networked computer environment, the method comprising:

receiving, at an API server, a command including configuration data for configuring the plurality of endpoints within an enterprise network;

sending a connection request message to a queue in a publication/subscription server, the connection request message identifying the plurality of endpoints targeted by the command;

publishing, by the publication/subscription server, the connection request message from the queue to a subscribing communication server, the subscribing communication server maintaining persistent connections to ones of the plurality of endpoints;

identifying, by the subscribing communication server receiving the connection request message, a target endpoint identified by the connection request message;

sending, by the subscribing communication server, the connection request message to the identified endpoint via a persistent connection;

receiving by the API server, a connection request from the identified endpoint in response to the identified endpoint receiving the connection request message;

establishing a temporary connection between the API server and the identified endpoint in response to the request;

communicating, by the API server, the command to the identified endpoint over the temporary connection; and

terminating, by the API server, the temporary connection with the identified endpoint.

2. The method of claim 1 , further comprising:

updating, by the API server, a database based on the command, the database storing configuration information relating to the plurality of endpoints.

3. The method of claim 1 , wherein the API server, communication server, and pub/sub server are implemented as virtual servers in a cloud computing environment coupled to the endpoints over a wide area network.

4. The method of claim 1 , further comprising:

detecting a set of new endpoints joining the enterprise network;

responsive to the detecting the set of new endpoint, generating a number of a new virtual server instances of the communication server, the number of new virtual server instances based on a number of the new endpoints; and

assigning each of the new virtual server instances to a subset of the new endpoints.

5. The method of claim 1 , wherein the persistent connection maintained between the communication server and the endpoints is a WebSocket connection.

6. The method of claim 1 , further comprising:

the API server receiving, from the identified endpoint, an identifier for the received message;

performing a comparison, by the API server, of the received identifier to message identifiers saved in a data store associated with the identified endpoint;

determining, at the API server, whether the identified endpoint missed one or more prior commands intended for the identified endpoint based on the comparison; and

providing, by the API server, the identified endpoint with the missed one or more prior commands.

7. The method of claim 1 , wherein the command comprises a command to perform at least one of: updating an endpoint agent executing on the identified endpoint, updating a configuration parameter associated with an endpoint agent executing on the identified endpoint, reconfiguring a firewall setting on the identified endpoint, changing a scheduled scanning frequency of the identified endpoint, disabling or enabling security features of the endpoint agent executing on the identified endpoint, and requesting status information from the identified endpoint.

8. A non-transitory computer-readable storage medium storing instructions for updating a security policy on a plurality of endpoints in a networked computer environment, the instructions when executed by one or more processors causing the one or more processors to perform steps comprising:

receiving, at an API server, a command including configuration data for configuring the plurality of endpoints within an enterprise network;

sending a connection request message to a queue in a publication/subscription server, the connection request message identifying the plurality of endpoints targeted by the command;

publishing, by the publication/subscription server, the connection request message from the queue to a subscribing communication server, the subscribing communication server maintaining persistent connections to ones of the plurality of endpoints;

identifying, by the subscribing communication server receiving the connection request message, a target endpoint identified by the connection request message;

sending, by the subscribing communication server, the connection request message to the identified endpoint via a persistent connection;

receiving by the API server, a connection request from the identified endpoint in response to the identified endpoint receiving the connection request message;

establishing a temporary connection between the API server and the identified endpoint in response to the request;

communicating, by the API server, the command to the identified endpoint over the temporary connection; and

terminating, by the API server, the temporary connection with the identified endpoint.

9. The non-transitory computer-readable storage medium of claim 8 , the steps further comprising:

updating, by the API server, a database based on the security policy, the database storing configuration information relating to the plurality of endpoints.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the API server, communication server, and pub/sub server are implemented as virtual servers in a cloud computing environment coupled to the endpoints over a wide area network.

11. The non-transitory computer-readable storage medium of claim 8 , the steps further comprising:

detecting a set of new endpoints joining the enterprise network;

responsive to the detecting the set of new endpoint, generating a number of a new virtual server instances of the communication server, the number of new virtual server instances based on a number of the new endpoints; and

assigning each of the new virtual server instances to a subset of the new endpoints.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the persistent connection maintained between the communication server and the endpoint is a WebSocket connection.

13. The non-transitory computer-readable storage medium of claim 8 , the steps further comprising:

the API server receiving, from the identified endpoint, an identifier for the received message;

performing a comparison, by the API server, of the received identifier to message identifiers saved in a data store associated with the identified endpoint;

determining, at the API server, whether the identified endpoint missed one or more prior commands intended for the identified endpoint based on the comparison; and

providing, by the API server, the identified endpoint with the missed one or more prior commands.

14. The non-transitory computer-readable storage medium of claim 8 , wherein the command comprises a command to perform at least one of: updating an endpoint agent executing on the identified endpoint, updating a configuration parameter associated with an endpoint agent executing on the identified endpoint, reconfiguring a firewall setting on the identified endpoint, changing a scheduled scanning frequency of the identified endpoint, disabling or enabling security features of the endpoint agent executing on the identified endpoint, and requesting status information from the identified endpoint.

15. A security system for implementing a security policy on a plurality of endpoints in a networked computer environment, the security system comprising:

one or more computer processors; and

one or more non-transitory computer-readable storage media, the storage media storing computer program instructions executable by the one or more computer processors to perform steps comprising:

receiving, at an API server, a command including configuration data for configuring the plurality of endpoints within an enterprise network;

sending a connection request message to a queue in a publication/subscription server, the connection request message identifying the plurality of endpoints targeted by the command;

publishing, by the publication/subscription server, the connection request message from the queue to a subscribing communication server, the subscribing communication server maintaining persistent connections to ones of the plurality of endpoints;

identifying, by the subscribing communication server receiving the connection request message, a target endpoint identified by the connection request message;

sending, by the subscribing communication server, the connection request message to the identified endpoint via a persistent connection;

receiving by the API server, a connection request from the identified endpoint in response to the identified endpoint receiving the connection request message;

establishing a temporary connection between the API server and the identified endpoint in response to the request;

communicating, by the API server, the command to the identified endpoint over the temporary connection; and

terminating, by the API server, the temporary connection with the identified endpoint.

16. The security system of claim 15 , the steps further comprising:

updating, by the API server, a database based on the command, the database storing configuration information relating to the plurality of endpoints.

17. The security system of claim 15 , wherein the API server, communication server, and pub/sub server are implemented as virtual servers in a cloud computing environment coupled to the endpoints over a wide area network.

18. The security system of claim 15 , the steps further comprising:

detecting a set of new endpoints joining the enterprise network;

responsive to the detecting the set of new endpoint, generating a number of a new virtual server instances of the communication server, the number of new virtual server instances based on a number of the new endpoints; and

assigning each of the new virtual server instances to a subset of the new endpoints.

19. The security system of claim 15 , wherein the persistent connection maintained between the communication server and the endpoints is a WebSocket connection.

20. The security system of claim 15 , the steps further comprising:

the API server receiving, from the identified endpoint, an identifier for the received message;

performing a comparison, by the API server, of the received identifier to message identifiers saved in a data store associated with the identified endpoint;

determining, at the API server, whether the identified endpoint missed one or more prior commands intended for the identified endpoint based on the comparison; and

providing, by the API server, the identified endpoint with the missed one or more prior commands.

Assignments (9)
CHANGE OF NAME Recorded May 18, 2026
From: MALWAREBYTES CORPORATE HOLDCO INC.
To: THREATDOWN INC.
Reel/Frame 075592/0851 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY Recorded Oct 21, 2024
From: COMPUTERSHARE TRUST COMPANY, N.A.
To: MALWAREBYTES INC.
Reel/Frame 069193/0505 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY Recorded Oct 21, 2024
From: COMPUTERSHARE TRUST COMPANY, N.A.
To: MALWAREBYTES CORPORATE HOLDCO INC.
Reel/Frame 069193/0563 →
SECURITY INTEREST Recorded Oct 18, 2024
From: MALWAREBYTES INC.; MALWAREBYTES CORPORATE HOLDCO INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 068943/0937 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2024
From: MALWAREBYTES INC.
To: MALWAREBYTES CORPORATE HOLDCO INC.
Reel/Frame 066900/0386 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 26, 2024
From: MALWAREBYTES CORPORATE HOLDCO INC.
To: COMPUTERSHARE TRUST COMPANY, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 066373/0912 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 1, 2023
From: MALWAREBYTES INC.
To: COMPUTERSHARE TRUST COMPANY, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 062599/0069 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2017
From: CASTILHO, MARCIO; BRETON, KEVIN; CHAN, JONATHAN; BANDYOPADHYAY, ANUPAM; STOYANOV, PLAMEN
To: MALWAREBYTES INC.
Reel/Frame 043686/0674 →
SECURITY INTEREST Recorded Aug 9, 2017
From: MALWAREBYTES INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 043248/0690 →