Protecting software development environments from malicious actors
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.
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.