IP Library Granted Patent US 12,373,553
Granted Patent B2
US 12,373,553 · App. 17/478,353 · Granted Jul 29, 2025

State-based detection of anomalous API calls within a real-time data stream

Inventor: Stanislav Babourine (Walnut Creek, CA)
Assignee: Salesforce, Inc.
G06F21/554G06F2221/034
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 12,373,553
App. No.
17/478,353
Granted
Jul 29, 2025
Kind
B2
Abstract

Media, methods, and systems are disclosed for detecting anomalous API calls within a real-time data flow. A real-time data stream is received. The real-time data stream is filtered. A stored state is modified based on a log entry data element within the filtered real-time data stream. An API call associated with the modified stored state is detected to be anomalous. Finally, a remediation action is taken for the API call.

Claims (54)

1. One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by a processor, perform a method for detecting anomalous data within a real-time data stream, the method comprising:

receiving the real-time data stream from a real-time data source, the real-time data stream comprising a plurality of log entries, individual log entries of the plurality of log entries including a plurality of data elements, wherein at least one data element of the plurality of data elements is obtained from an application programming interface (API) call, the real-time data source being a group-based communication system and the real-time data stream including group-based communication data associated with the group-based communication system, the group-based communication data including activity within communication channels by users that are authorized to access the communication channels;

filtering, as the real-time data stream is being received, the real-time data stream based at least in part on one or more filter criteria to obtain a filtered real-time data stream comprising a subset of the plurality of log entries;

generating a modified stored state by modifying a stored state corresponding to one or more log entry data elements of a particular type based at least in part on a determination that a log entry of the subset of the plurality of log entries is of the particular type, wherein the modified stored state corresponds to one or more failed log-in attempts by a particular user of the users of the group-based communication system and the particular type corresponds to a count of the one or more failed log-in attempts;

determining whether the count meets or exceeds a predetermined threshold;

determining that the modified stored state is an anomalous state based at least in part on the count meeting or exceeding the predetermined threshold; and

in response to determining that the modified stored state is the anomalous state, taking one or more remediation actions.

2. The one or more non-transitory computer-readable media of claim 1 , wherein the method further comprises:

receiving enriching data from an enriching data source, wherein the enriching data source is an external data feed;

prior to modifying the stored state and based at least in part on one or more enriching rules, modifying the one or more log entry data elements using the enriching data to obtain one or more enriched log entry data elements; and

updating the stored state based at least in part on the one or more enriched log entry data elements.

3. The one or more non-transitory computer-readable media of claim 1 , wherein the one or more remediation actions comprise sending information regarding the anomalous state to an external system.

4. The one or more non-transitory computer-readable media of claim 1 , wherein the one or more remediation actions comprise sending a message via the group-based communication system.

5. The one or more non-transitory computer-readable media of claim 1 , wherein the anomalous state signifies a first potential security threat, and wherein the API call associated with each of the plurality of data elements are also determined to be the first potential security threat or a second potential security threat.

6. The one or more non-transitory computer-readable media of claim 1 , wherein the stored state is associated with a particular user.

7. The one or more non-transitory computer-readable media of claim 1 , wherein the filtering of the real-time data stream comprises:

clustering, using a machine learning model, the plurality of log entries into a plurality of clusters that each include different groups of log entries of the plurality of log entries; and

generating the filtered real-time data stream by:

filtering out at least a first set of clusters of the plurality of clusters that are determined to have a first relevance, wherein the first set of clusters are not retained in memory; and

retaining, in the memory, a second set of clusters of the plurality of clusters that are determined to have a second relevance that is greater than the first relevance.

8. The one or more non-transitory computer-readable media of claim 1 , wherein the method further comprises:

partitioning the plurality of log entries into a first set of log entries that are associated with a first set of user identifiers (IDs) of a first set of users, and into a second set of log entries that are associated with a second set of user IDs of a second set of users, the first set of users being of a first type and the second set of users being of a second type;

assigning the first set of log entries to a first processor that is to process the first set of log entries; and

assigning the second set of log entries to a second processor, different than the first processor, that is to process the second set of log entries, the first processor to process first subsequent log entries associated with the first type and the second processor to process second subsequent log entries associated with the second type.

9. The one or more non-transitory computer-readable media of claim 1 , wherein the method further comprises generating the modified stored state by modifying the stored state corresponding to the one or more log entry data elements of the particular type based at least in part on enriching data that includes geolocation data associated with the log entry, the geolocation data being based at least in part on a mapping between an IP address associated with the log entry and a physical location associated with the log entry.

10. A method for monitoring anomalous data within a real-time data stream, the method comprising:

receiving the real-time data stream from a real-time data source, the real-time data stream comprising a plurality of log entries, individual log entries of the plurality of log entries including a plurality of data elements, wherein each at least one data element of the plurality of data elements is obtained from an application programming interface (API) call, the real-time data source being a group-based communication system and the real-time data stream including group-based communication data associated with the group-based communication system, the group-based communication data including activity within communication channels by users that are authorized to access the communication channels;

filtering, as the real-time data stream is being received, the real-time data stream based at least in part on one or more filter criteria to obtain a filtered real-time data stream comprising a subset of the plurality of log entries;

generating a modified stored state by modifying a stored state corresponding to one or more log entry data elements of a particular type based at least in part on a determination that a log entry of the subset of the plurality of log entries is of the particular type, wherein the modified stored state corresponds to one or more failed log-in attempts by a particular user of the users of the group-based communication system and the particular type corresponds to a count of the one or more failed log-in attempts;

determining whether the count meets or exceeds a predetermined threshold;

determining that the modified stored state is an anomalous state based at least in part on the count meeting or exceeding the predetermined threshold; and

in response to determining that the modified stored state is the anomalous state, taking one or more remediation actions.

11. The method of claim 10 , wherein the method further comprises:

receiving enriching data from an enriching data source, wherein the enriching data source is an external data feed;

prior to modifying the stored state and based at least in part on one or more enriching rules, modifying the one or more log entry data elements using the enriching data to obtain one or more enriched log entry data elements; and

updating the stored state based at least in part on the one or more enriched log entry data elements.

12. The method of claim 10 , wherein the one or more remediation actions comprise sending information regarding the anomalous state to an external system.

13. The method of claim 10 , wherein the one or more remediation actions comprise sending a message via the group-based communication system.

14. The method of claim 10 , wherein the anomalous state signifies a first potential security threat, and wherein the API call associated with each of the plurality of data elements are also determined to be the first potential security threat or a second potential security threat.

15. The method of claim 10 , wherein the stored state is associated with a particular user.

16. A system comprising at least one processor and at least one non-transitory memory storing computer-executable instructions that when executed by the at least one processor cause the system to carry out actions comprising:

receiving a real-time data stream from a real-time data source, the real-time data stream comprising a plurality of log entries, individual log entries of the plurality of log entries including a plurality of data elements, wherein each at least one data element of the plurality of data elements is obtained from an application programming interface (API) call, the real-time data source being a group-based communication system and the real-time data stream including group-based communication data associated with the group-based communication system, the group-based communication data including activity within communication channels by users that are authorized to access the communication channels;

filtering, as the real-time data stream is being received, the real-time data stream based at least in part on one or more filter criteria to obtain a filtered real-time data stream comprising a subset of the plurality of log entries;

generating a modified stored state by modifying a stored state corresponding to one or more log entry data elements of a particular type based at least in part on a determination that a log entry of the subset of the plurality of log entries is of the particular type, wherein the modified stored state corresponds to one or more failed log-in attempts by a particular user of the users of the group-based communication system and the particular type corresponds to a count of the one or more failed log-in attempts;

determining whether the count meets or exceeds a predetermined threshold;

determining that the modified stored state is an anomalous state based at least in part on the count meeting or exceeding the predetermined threshold; and

in response to determining that the modified stored state is the anomalous state, taking one or more remediation actions.

17. The system of claim 16 , wherein the actions further comprise:

receiving enriching data from an enriching data source, wherein the enriching data source is an external data feed;

prior to modifying the stored state and based at least in part on one or more enriching rules, modifying the one or more log entry data elements using the enriching data to obtain one or more enriched log entry data elements; and

updating the stored state based at least in part on the one or more enriched log entry data elements.

18. The system of claim 16 , wherein the one or more remediation actions comprise sending information regarding the anomalous state to an external system.

19. The system of claim 16 , wherein the one or more remediation actions comprise sending a message via the group-based communication system.

20. The system of claim 16 , wherein the anomalous state signifies a first potential security threat, and wherein the API call associated with each of the plurality of data elements are also determined to be the first potential security threat or a second potential security threat.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2023
From: SLACK TECHNOLOGIES, LLC
To: SALESFORCE, INC.
Reel/Frame 064642/0564 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2021
From: BABOURINE, STANISLAV
To: SLACK TECHNOLOGIES, LLC
Reel/Frame 057518/0111 →
Continuity (1)
Related Publication 20230090132A1 · Mar 23, 2023
References Cited (38)
US 20050273673A1 · Gassoway · 2005 [cited by examiner]
US 20150319185A1 · Kirti · 2015 [cited by examiner]
US 20160099963A1 · Mahaffey · 2016 [cited by examiner]
US 20170180403A1 · Mehta · 2017 [cited by examiner]
US 20180069885A1 · Patterson · 2018 [cited by examiner]
US 20180091536A1 · Chrosziel · 2018 [cited by examiner]
US 20180091559A1 · Luger · 2018 [cited by examiner]
US 20180287982A1 · Draeger et al. · 2018 [cited by applicant]
US 20190026491A1 · Telford · 2019 [cited by examiner]
US 20190294796A1 · Elango · 2019 [cited by examiner]
US 20200125715A1 · Yaqub · 2020 [cited by examiner]
US 20200244797A1 · Horelik · 2020 [cited by examiner]
US 20200381017A1 · Garak · 2020 [cited by examiner]
US 20200409826A1 · Balasubramanian · 2020 [cited by examiner]
US 20210081441A1 · Kaushik · 2021 [cited by examiner]
US 20210136095A1 · Dinh · 2021 [cited by examiner]
US 20210227014A1 · Boukhtouta · 2021 [cited by examiner]
US 20210289020A1 · Rolfe · 2021 [cited by examiner]
US 20220086180A1 · Karpovsky · 2022 [cited by examiner]
US 20220116420A1 · Weber · 2022 [cited by examiner]
US 20220171800A1 · Kumaresan · 2022 [cited by examiner]
US 20220342745A1 · Gonzalez Macias · 2022 [cited by examiner]
Al Lelah et al. “Abuse of cloud-based and public legitimate services as command-and-control (c&c) infrastructure: a systematic literature review.” Journal of Cybersecurity and Privacy 3.3. Sep. 1, 2023, p. 558-590. (Yea… [cited by examiner]
“Die, Email, Die! A Flickr Cofounder Aims to Cut Us All Some Slack”, Readwriteweb, LexisNexis, https://advance.lexis.com/api/permalink/33dd79e2-90f5-409d-ae27-5a2c7e86bf31/?context=1000516>. (dated Aug. 14, 2013, 4:15 P… [cited by applicant]
“How Slack changed the way we work by putting the customer experience first”, Repeat Customer Podcast, Episode 3, [online][retrieved May 9, 2019]. Retrieved from the Internet: <URL: https://www.zendesk.com/resources/sla… [cited by applicant]
Adrienne LaFrance, “The Triumph of Email”, Atlantic Online, LexisNexis, https://advance.lexis.com/api/permalink/32d7ddd9-d4c1-4a73-86f7-08ab5842fde6/?context=1000516, (dated Jan. 6, 2016) 5 pages. [cited by applicant]
David Auberbach, “Re-Animator. How Stewart Butterfield created Flickr and Slack out of the ashes of failed projects” [online][retrieved May 9, 2019]. Retrieved from the Internet: <URL: https://slate.com/business/2014/05… [cited by applicant]
Ernie Smith, “Picking up the Slack”, Tedium, [online][retrieved May 9, 2019]. Retrieved from the Internet: <URL: https://tedium.co/2017/10/17/irc-vs-slack-chat-history/>. (dated Oct. 17, 2017) 13 pages. [cited by applicant]
Internet Relay Chat, Wikipedia, [online][retrieved May 30, 2019]. Retrieved from the Internet: <URL: https://en.wikipedia.org/wiki/Internet_Relay_Chat>. (dated May 28, 2019) 20 pages. [cited by applicant]
Jonathan Vanian, “Why these startups think chat apps are the next big thing in workplace collaboration”, GIGAOM, LexisNexis, https://advance.lexis.com/api/permalink/e83778c8-09c8-43aa-9ba0-88526283de69/?context=1000516,… [cited by applicant]
Matsumoto, T. et al., “Chocoa Communicator—A New Communication System Based on Awareness and Text Communications-”, Fujitsu Sci. Tech. J., 36, 2, (Dec. 2000) 154-161. [cited by applicant]
Matthew Ingram, “Flickr co-founder launches Slack, an all-in-one messaging tool designed to kill email forever”, GIGAOM, LexisNexis, https://advance.lexis.com/api/permalink/0b676b7c-aec3-4560-861e-d030d1dd008c/?context=… [cited by applicant]
Michael Carney, “Slack is thriving on a cocktail of whimsy and great timing”, PandoDaily, LexisNexis, https://advance.lexis.com/api/permalink/dd2d4ee5-2ddf-4d3a-a1d9-3bcee5e38b74/?context=1000516, (dated Feb. 6, 2015, 2… [cited by applicant]
Mike Issac, “Slack, a Start-Up With an App to Foster Business Collaboration, Is Valued at $1.1 Billion”, The New York Times Blogs (Bits), LexisNexis, https://advance.lexis.com/api/permalink/3eb84b34-a8f9-4d7d-9573-89d95… [cited by applicant]
Oikarinen, J. & Reed, D., “Internet Relay Chat Protocol”, Request for Comments: 1459, Network Working Group, [online][retrieved May 30, 2019]. Retrieved from the Internet: <URL: https://www.rfc-editor.org/rfc/rfc1459.tx… [cited by applicant]
Rebecca Walberg, “Email biggest office waste of time: survey”, National Post, at FP10, Lexisnexis, https://advance.lexis.com/api/permalink/96268e3f-26ad-48ac-a98f-6c39804ebded/?context=1000516, (dated Mar. 4, 2014) 2 pa… [cited by applicant]
Robert Hof, “Stewart Butterfield on How Slack Became a $2.8 Billion Unicom”, Forbes, [online][retrieved May 9, 2019]. Retrieved from the Internet: <URL: https://www.forbes.com/sites/roberthof/2015/06/02/stewart-butterfi… [cited by applicant]
The Big Pivot w/ Slack's Stewart Butterfield, Masters of Scale Podcast, Episode 13 (Aired Nov. 14, 2017), https://mastersofscale.com/#/stewart-butterfield-the-big-pivot/, (dated Jan. 17, 2018) 27 pages. [cited by applicant]