IP Library › Granted Patent US 12,639,446
Granted Patent B2
US 12,639,446 · App. 17/949,306 · Granted May 26, 2026

Protecting software development environments from malicious actors

Inventors: Walter Theodore Hulick, Jr. (Pearland, TX); David John Zacks (Vancouver, CA); Thomas Szigeti (Vancouver, CA); Jeffrey Allen Tillett (Grand Prairie, TX)
Assignee: Cisco Technology, Inc.
G06F21/577G06F21/31G06F2221/034G06F2221/2113
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,639,446
App. No.
17/949,306
Granted
May 26, 2026
Kind
B2
Abstract

In one embodiment, a device obtains transaction data regarding a transaction attempted within a software development environment, wherein the transaction data is captured by instrumentation code inserted into the software development environment at runtime. The device identifies, based on the transaction data, an access policy for the transaction. The device makes, based on the access policy, a determination that the transaction is not authorized. The device causes, via the instrumentation code, the transaction to be blocked from completing within the software development environment.

Claims (52)

1 . A method, comprising:

inserting instrumentation code into a software development environment, the software development environment being utilized by a software developer to develop software and track different builds of the software;

obtaining, by a device, transaction data regarding a transaction attempted within the software development environment by the software developer, wherein the transaction data is captured by the instrumentation code and the transaction within the software development environment includes a modification to computer code included in the software development environment and associated with the software being developed;

identifying, by the device and based on the transaction data, an access policy for the transaction;

making, by the device and based on the access policy, a determination that the transaction is not authorized; and

causing, by the device and via the instrumentation code, the transaction to be blocked from completing within the software development environment.

2 . The method as in claim 1 , wherein the access policy limits completion of the transaction to a particular span of time or to one or more geographical locations.

3 . The method as in claim 1 , wherein making the determination that the transaction is not authorized comprises:

providing, by the device, an indication of the transaction to one or more user interfaces; and

receiving, at the device and via the one or more user interfaces, one or more rejections of the transaction.

4 . The method as in claim 1 , wherein making the determination that the transaction is not authorized comprises:

causing, by the device, a multifactor authentication request to be sent to at least one user interface to validate the transaction; and

determining, by the device, that the multifactor authentication request has timed out.

5 . The method as in claim 1 , wherein identifying the access policy for the transaction comprises:

determining, based on the transaction data, that the transaction is being performed by an administrator account of the software development environment.

6 . The method as in claim 1 , wherein the access policy is associated with a particular type of transaction or type of user.

7 . The method as in claim 1 , wherein the transaction comprises at least one of: a user logging into the software development environment, a class being loaded, a job being started, or a plugin starting or stopping.

8 . The method as in claim 1 , further comprising:

generating hashes of binaries of the software development environment; and

determining whether the software development environment has been compromised by comparing a hash of a loaded class or accessed file to that of the hashes of its binaries.

9 . The method as in claim 1 , wherein the instrumentation code is inserted into the software development environment by a Java agent at a time that is after a compilation of the software development environment and before an execution of the software development environment.

10 . The method as in claim 1 , wherein the software development environment is configured to allow its users to develop software and track different builds of the software.

11 . An apparatus, comprising:

one or more network interfaces to communicate with a network;

a processor coupled to the one or more network interfaces and configured to execute one or more processes; and

a memory configured to store a process that is executable by the processor, the process, when executed, configured to:

insert instrumentation code into a software development environment, the software development environment being utilized by a software developer to develop software and track different builds of the software;

obtain transaction data regarding a transaction attempted within the software development environment by the software developer, wherein the transaction data is captured by the instrumentation code, and the transaction within the software development environment includes a modification to computer code included in the software development environment and associated with the software being developed;

identify, based on the transaction data, an access policy for the transaction;

make, based on the access policy, a determination that the transaction is not authorized; and

cause, via the instrumentation code, the transaction to be blocked from completing within the software development environment.

12 . The apparatus as in claim 11 , wherein the access policy limits completion of the transaction to a particular span of time or to one or more geographical locations.

13 . The apparatus as in claim 11 , wherein the apparatus makes the determination that the transaction is not authorized by:

providing an indication of the transaction to one or more user interfaces; and

receiving, via the one or more user interfaces, one or more rejections of the transaction.

14 . The apparatus as in claim 11 , wherein the apparatus makes the determination that the transaction is not authorized by:

causing a multifactor authentication request to be sent to at least one user interface to validate the transaction; and

determine that the multifactor authentication request has timed out.

15 . The apparatus as in claim 11 , wherein the apparatus identifies the access policy for the transaction by:

determining, based on the transaction data, that the transaction is being performed by an administrator account of the software development environment.

16 . The apparatus as in claim 11 , wherein the access policy is associated with a particular type of transaction or type of user.

17 . The apparatus as in claim 11 , wherein the transaction comprises at least one of: a user logging into the software development environment, a class being loaded, a job being started, or a plugin starting or stopping.

18 . The apparatus as in claim 11 , wherein the process when executed is further configured to:

generate hashes of binaries of the software development environment; and

determine whether the software development environment has been compromised by comparing a hash of a loaded class or accessed file to that of the hashes of its binaries.

19 . The apparatus as in claim 11 , wherein the instrumentation code is inserted into the software development environment by a Java agent at a time that is after a compilation of the software development environment and before an execution of the software development environment.

20 . A tangible, non-transitory, computer-readable medium storing program instructions that cause a device to execute a process comprising:

inserting instrumentation code into a software development environment, the software development environment being utilized by a software developer to develop software and track different builds of the software;

obtaining transaction data regarding a transaction attempted within the software development environment by the software developer, wherein the transaction data is captured by the instrumentation code, and the transaction within the software development environment includes a modification to computer code included in the software development environment and associated with the software being developed;

identifying, based on the transaction data, an access policy for the transaction;

making, based on the access policy, a determination that the transaction is not authorized; and

causing, via the instrumentation code, the transaction to be blocked from completing within the software development environment.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2022
From: HULICK, WALTER THEODORE, JR.; ZACKS, DAVID JOHN; SZIGETI, THOMAS; TILLETT, JEFFREY ALLEN
To: CISCO TECHNOLOGY, INC.
Reel/Frame 061163/0157 →
Continuity (1)
Related Publication 20240095370A1 · Mar 21, 2024
References Cited (22)
US 8752182B2 · Amit et al. · 2014 [cited by applicant]
US 9400889B2 · Chess et al. · 2016 [cited by applicant]
US 9594906B1 · Langton · 2017 [cited by examiner]
US 9934385B2 · Chestna · 2018 [cited by applicant]
US 10691810B1 · Freitag et al. · 2020 [cited by applicant]
US 10740469B2 · Zheng et al. · 2020 [cited by applicant]
US 11743256B1 · Chen · 2023 [cited by examiner]
US 11829280B1 · Zhang · 2023 [cited by examiner]
US 11838296B1 · Rossman · 2023 [cited by examiner]
US 20140283069A1 · Call · 2014 [cited by examiner]
US 20180165115A1 · Fusaro · 2018 [cited by examiner]
US 20190095616A1 · Drapeau · 2019 [cited by examiner]
US 20210374037A1 · Grimwood · 2021 [cited by examiner]
US 20230032660A1 · Cobb · 2023 [cited by examiner]
US 20230244782A1 · Fischer · 2023 [cited by examiner]
“TeamCity”, online: https://en.wikipedia.org/wiki/Teamcity, Aug. 18, 2021, accessed Sep. 1, 2022, 2 pages, Wikimedia Foundation, Inc. [cited by applicant]
“Supply Chain Attack”, online: https://en.wikipedia.org/wiki/Supply_chain_attack, Aug. 20, 2022, Accessed Aug. 31, 2022, 10 pages, Wikimedia Foundation, Inc. [cited by applicant]
“2020 United States Federal Government Data Breach”, online: https://en.wikipedia.org/wiki/2020_United_States_federal_government_data_breach, May 6, 2022, accessed Aug. 31, 2022, 27 pages, Wikimedia Foundation, Inc. [cited by applicant]
“CI/CD”, online: https://en.wikipedia.org/wiki/CI/CD, Aug. 5, 2022, accessed Aug. 30, 2022, 2 pages, Wikipedia Foundation, Inc. [cited by applicant]
Precub, Adrian, “Guide to Java Instrumentation”, online: https://www.baeldung, com/java-instrumentation, May 18, 2021, accessed Sep. 1, 2022, 12 pages, baeldung.com. [cited by applicant]
“Jenkins (software)”, online: https://en.wikipedia.org/wiki/Jenkins_(software), Jul. 14, 2022, accessed Aug. 30, 2022, 4 pages, Wikimedia Foundation, Inc. [cited by applicant]
About JetBrains, online: https://www.jetbrains.com/company/customers/, accessed Sep. 6, 2022, 5 pages, JetBrains S.R.O. [cited by applicant]