US12271497B2 - Monitoring code provenance - Google Patents
Monitoring code provenance Download PDFInfo
- Publication number
- US12271497B2 US12271497B2 US17/993,824 US202217993824A US12271497B2 US 12271497 B2 US12271497 B2 US 12271497B2 US 202217993824 A US202217993824 A US 202217993824A US 12271497 B2 US12271497 B2 US 12271497B2
- Authority
- US
- United States
- Prior art keywords
- code
- access
- location
- segment
- code segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6281—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/102—Entity profiles
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2137—Time limited access, e.g. to a computer or data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Definitions
- One common concern is how to provide a fundamental level of code access without permitting any unnecessary rights or privileges to the code development personnel. For example, when a low-level developer needs to execute code to perform fundamental functions, however, the additional privileges, such as viewing, copying, changing, saving, etc., are all not necessary functions for that particular user profile, then the ideal scenario would include access to perform tests and related operations without any additional privileges.
- Another example embodiment may include an apparatus that includes a processor configured to identify a code access event associated with a code segment, determine whether one or more portions of the code segment require code access permissions, determine whether one or more credentials of a profile associated with the code access event have a required code access credential necessary to permit the code access event, and assign limited access to the code segment and the profile based on the one or more credentials associated with the code access event.
- a processor configured to identify a code access event associated with a code segment, determine whether one or more portions of the code segment require code access permissions, determine whether one or more credentials of a profile associated with the code access event have a required code access credential necessary to permit the code access event, and assign limited access to the code segment and the profile based on the one or more credentials associated with the code access event.
- Still another example embodiment may include a non-transitory computer readable storage medium configured to store instructions that when executed cause a processor to perform, identifying a code access event associated with a code segment, determining whether one or more portions of the code segment require code access permissions, determining whether one or more credentials of a profile associated with the code access event have a required code access credential necessary to permit the code access event, and assigning limited access to the code segment and the profile based on the one or more credentials associated with the code access event.
- Still yet a further example embodiment may include an apparatus that includes a processor configured to identify a code segment accessed during a code access event, scan code of the code segment to identify a degree of sensitivity of the code, append a code access annotation to the code segment based on detected actions performed to the code during the code access event, and update a code log to identify the code access annotation.
- Still another example embodiment may include a non-transitory computer readable storage medium configured to store instructions that when executed cause a processor to perform identifying a code segment accessed during a code access event, scanning code of the code segment to identify a degree of sensitivity of the code, appending a code access annotation to the code segment based on detected actions performed to the code during the code access event, and updating a code log to identify the code access annotation.
- Still another example embodiment may include a method that includes determining one or more of a file type and a code segment accessed during a code access event, identifying code origin information appended to the code segment during previous code access events, appending an updated code access location to the code segment identifying the current code access event and a current code location, and applying one or more code access restrictions to the code segment based on the current code location.
- Still another example embodiment may include a method that includes identifying a plurality of code access events over a period of time, determining whether any of the code access events included any sensitive code segments, determining whether any of the code access events which included the sensitive code segments were unauthorized, and performing one or more automated actions to restrict code access permissions of one or more user profiles.
- Still yet another example embodiment may include an apparatus that includes a processor configured to identify a plurality of code access events over a period of time, determine whether any of the code access events included any sensitive code segments, determine whether any of the code access events which included the sensitive code segments were unauthorized, and perform one or more automated actions to restrict code access permissions of one or more user profiles.
- Still another example embodiment may include a method that includes identifying an attempted action taken to code, determining whether to block the attempted action based on one or more of user profile access rights assigned to a user profile and a code permission assigned to the code, and responsive to determining whether to block the attempted action, blocking one or more of access to the code, access to a file containing the code and a port used to connect to a server hosting the code.
- Still another example embodiment may include an apparatus that includes a processor configured to identify an attempted action taken to code, determine whether to block the attempted action based on one or more of user profile access rights assigned to a user profile and a code permission assigned to the code, and responsive to determination as to whether to block the attempted action, block one or more of access to the code, access to a file containing the code and a port used to connect to a server hosting the code.
- a processor configured to identify an attempted action taken to code, determine whether to block the attempted action based on one or more of user profile access rights assigned to a user profile and a code permission assigned to the code, and responsive to determination as to whether to block the attempted action, block one or more of access to the code, access to a file containing the code and a port used to connect to a server hosting the code.
- FIG. 1 D illustrates an example limited access code access operation performed by a user device according to example embodiments.
- FIG. 2 A illustrates an example code annotation and documentation management configuration according to example embodiments.
- FIG. 2 D illustrates an example flow diagram of an example process for documenting code access events according to example embodiments.
- FIG. 3 A illustrates an example network diagram of multiple code access instances and established provenance of the code modification events according to example embodiments.
- FIG. 4 B illustrates a network device which performs example code detection for code use and related code events according to example embodiments.
- FIG. 4 C illustrates an example configuration for detecting code instances on a network according to example embodiments.
- FIG. 4 D illustrates an example flow diagram of a process for managing code instances on a network according to example embodiments.
- FIG. 5 A illustrates an example network configuration for detecting code egress according to example embodiments.
- FIG. 6 C illustrates an example network configuration for applying different tokens to different code segments according to example embodiments.
- FIG. 6 D illustrates an example flow diagram of a process for enforcing token access according to example embodiments.
- FIG. 7 illustrates an example network entity device configured to store instructions, software, and corresponding hardware for executing the same, according to example embodiments of the present application.
- the application may be applied to many types of network data, such as, packet, frame, datagram, etc.
- the term “message” also includes packet, frame, datagram, and any equivalents thereof.
- certain types of messages and signaling are depicted in exemplary embodiments of the application, the application is not limited to a certain type of message, and the application is not limited to a certain type of signaling.
- Example embodiments provide ways to enforce software code access and permissions to protect code from unauthorized sources attempting to gain access to the code.
- Code access in general, may invoke a managerial event, such as an automated identification procedure to identify whether the code attempting to be accessed, or more specifically, the code segment that was specifically accessed, is permitted to be accessed, altered, etc. Also, a determination may be made as to whether the code was tampered, copied, etc., especially when the profile associated with the access attempt during the code access event has limited rights to access and modify the code.
- any action by a particular user device profile or user profile, which identifies a particular individual and/or device, and which is currently logged into the code repository application may be screened, corroborated/intercepted by a managerial agent application function.
- Any known policies are applied on the fly during such events or periodically during audits of such events which may be performed at certain intervals of time during an active code access session.
- a policy may be applied at the initial access event, such as when credentials are received and access is granted.
- the policies may be recursively applied or checked by the managerial agent at the expiration of certain periods of time, such as every 10 minutes.
- one specific function may be to select a limited portion of the total available code which is identified as authorized based on a user profile permission or other monitoring and management criteria.
- the code may have selective access applied to certain code blocks/segments based on the rights, statuses, and/or other credentials associated with the user profiles or user devices accessing the code.
- access may include the ‘code’ 122 which defines all the code related to the recent access operation.
- the code may be partitioned into segments 124 , which are sub-portions of the code. Within a code segment 124 may be a code block 126 , which is identified as the most fundamental amount of code described with reference to the examples described in the example embodiments.
- FIG. 1 C illustrates yet another example code access network configuration according to example embodiments.
- the configuration 160 includes a code repository 120 in the cloud and not in the enterprise network 110 .
- the code access attempts 112 are forwarded to the remote site 120 and the permissions 106 are applied 114 in the cloud network, which maintains the registration information and the access information necessary to obtain access to the code 122 .
- the servers which maintain the code or provide access to the code may be one and the same and may be in the cloud, in a local network or both.
- an agent may be installed on a user device 102 to maintain constant communication with an agent application on the enterprise server 110 .
- An identity of a user device may be confirmed from credentials which are stored on the device and forwarded during an access attempt. For example, a personal access token may be required to obtain access to the code repository.
- a software source code security function may be stored in the third party cloud code source.
- the agent application may be periodically auditing the user device 102 to ensure the permissions are active and the actions taken are consistent with the permissions associated with that particular user device 102 .
- a code copy may be known to exist in a code repository based on a data file directory and/or data files containing the code in a particular at a particular storage location.
- tracking code and code “copy” permissions a code copy may be detected between an enterprise repository and a data file directory and/or data files containing the code at a particular storage location.
- FIG. 1 D illustrates an example limited access code access operation performed by a user device according to example embodiments.
- the example configuration 170 illustrates how a user device that has received partial access to code may be subject to code access criteria 130 which is managed by a server managing the code access and monitoring code access events.
- the user device 102 has received limited access to the code 122 , by having code segments ‘A’ 132 and ‘C’ 136 accessible and not having access to the segment ‘B’ 134 .
- the access criteria is assigned to the device/user profile.
- the access is limited which indicates that not all types of actions can be taken, for example, the device 102 may not be able to copy or delete code, however, the profile may be able to access, view, read, write and save changes, as identified from the criteria 130 .
- the other portions of the code, such as segment ‘B’ may be accessible and visible, however without any type of modification rights.
- the non-permitted code may be invisible to the profile/device 102 as access may be denied entirely.
- FIG. 1 E illustrates an example limited access code access recording and management operation according to example embodiments.
- the example 180 includes applying the profile access rights (criteria) to the code access system. The access will remain limited, the segments of code are limited and the actions permitted are limited.
- the example includes accessing code segment ‘A’ 132 and performing a read, write, and save operation to both sub-portions including block ‘A’ 142 and block ‘B’ 144 .
- the example also includes attempting a copy operation to block ‘A’ 142 , which is flagged by the code repository server 120 , which in this example is enforcing the limited access rights, however, any device could enforce the rights including an agent operating on the user device 102 .
- the copy operation is not permitted in this example.
- the datastore 140 may store the access time, date, user profile, device profile, actions attempted, actions successful, actions rejected, etc.
- FIG. 1 F illustrates an example flow diagram of an example process for providing limited code access according to example embodiments.
- one example 190 may include identifying a code access event associated with a code segment 192 , and determining whether one or more portions of the code segment require code access permissions 194 .
- the code may have separately stored portions or commonly stored portions separated by different files or access credential requirements.
- the portions of code may be referred to as code segments.
- the code segments may have blocks which are accessed to work and modify line-by-line code and in this example are the most fundamental portion of code, and which can be tracked, monitored, controlled and have limited access applied.
- the process may also include determining whether one or more credentials of a profile associated with the code access event have a required code access credential necessary to permit the code access event 196 .
- the credentials may be based on assigned rights of the profile, a user device hardware profile, a network address, historical access information, etc.
- the process may also include assigning limited access to the code segment and the profile based on the one or more credentials associated with the code access event 198 .
- the profile may be paired with the credentials during the login or access process.
- the credentials may be collected from various different sources and used to comply with the access rights at any given time. If the credential information cannot be collected or some of the information is not available during access times, the access rights can be severely limited.
- the process may include assigning one or more of a limited view permission, a limited modification permission, and no access permission, to the one or more credentials and permitting the code access event. Also, the limited access is assigned to one or more blocks of code of the code segment, and the limited access permits access to the one or more blocks of code but not all blocks of code of the code segment. Generally, most profiles will not receive access to all portions of the code.
- the process may also include assigning the limited access to the code segment by permitting the code segment to be compiled and executed by a user device associated with the one or more credentials and the profile while not providing access to the code segment code.
- the one or more credentials include one or more of a token, a password, a device hardware address, a network address, and a confirmation of a previous access operation.
- the process may include determining whether to block or permit the code access event based on profile access permissions associated with the profile, and permitting the profile to access one or more code segments among a plurality of additional code segments.
- the process may also include creating a log of actions performed to the one or more code segments, and applying the log as a new credential to the profile.
- Example embodiments provide ways to enforce software code access and modification to protect code from unauthorized sources and to track the use of the code on developer devices ‘workstations’. Further to code access operations and application of permissions/restrictions to the code, the code may be accessed and then annotated, tracked, modified, etc. Also, the code's access and changes may be stored to create a code history throughout the access operations both in the enterprise and the cloud. This may include access and changes associated with devices and user profiles/devices associated with accessing the code. One example includes identifying which devices accessed the code, what portions of the code are permitted to be accessed, annotating the actions taken by certain user profiles/devices.
- user ‘A’, device ‘ABC’, at a time 10:01 AM added certain attributes, copied, saved, updated, code segments ‘A’ and ‘B’ and sub-blocks ‘DEF’ and ‘XYZ’, etc.
- identifying other access efforts such as user ‘profiles A’ and user ‘B’ both accessed the code, two copies are circulating at a current time and are tied to the original code source, all such actions are identified, annotated and saved with the original code log or as metatags linked to the code to document those instances with a timestamp and other information necessary to recall such events during an audit operation.
- FIG. 2 A illustrates an example code annotation and documentation management configuration according to example embodiments.
- the configuration 200 may include a code repository server 120 which may be a local enterprise server or a server maintained at a third party source, such as ‘GITHUB’ which can be used to access code and manage code development efforts.
- a code repository server 120 which may be a local enterprise server or a server maintained at a third party source, such as ‘GITHUB’ which can be used to access code and manage code development efforts.
- the code may be organized as segments or blocks 226 which may be accessed according to one or more code access permissions/restrictions 206 associated with the user devices 102 / 103 .
- Each device profile may have a unique copy of the code blocks/segments 225 / 227 depending on the permissions and rights associated with the user devices 102 / 103 .
- An annotation(s) 232 may be appended to the main version or code repository version to reflect which user device/profile accessed the code and made changes to the code.
- the code segment may be copied and supplied to the user devices as separate versions 225 / 227 of the same code.
- FIG. 2 B illustrates another example code annotation and documentation management configuration according to example embodiments.
- the configuration 250 may include each user device having one or more code segments accessible to their respective devices 102 / 103 .
- the code may be subject to restrictions 206 which are applied 252 actively during code access and development sessions via an agent application operating on the user devices.
- each copy of the code, code storage location, code modification, blocked access attempt, etc., which is performed is logged in code access log 240 as part of an active log or a periodic log audit function.
- the user devices 102 / 103 may be performing operations, such as modifying code via a particular storage location ‘ABC’ and via particular code blocks ‘XYZ’, user device 103 may perform a separate copy of particular location ‘ACD’ to modify code blocks ‘XYA’.
- the efforts are unique and based on a common code.
- the copies of the code 225 / 227 are separate and unique but may be combined later into the main code source.
- the device operations 246 / 248 are logged in the log 240 as part of an audit 254 or each time the events occur.
- User device 103 is accessing blocks ‘B’ 144 and ‘C’ 146 . Any modifications made may be combined into one version which is saved with the original source code.
- the changes to block ‘B’ which may differ from each device 102 / 103 may cause the changes/modifications to the code to be merged into a single copy which is stored in the code repository server 120 .
- the changes may instead cause two versions to be stored until a final version can be authorized.
- the other approach may include authorizing changes for one block and only suspending changes to the block being modified by both devices.
- FIG. 2 D illustrates an example flow diagram of an example process for documenting code access events according to example embodiments.
- the example process 290 may include identifying a code segment accessed during a code access event 292 by one or more user devices authorized to access the code.
- the process also includes scanning code of the code segment to identify a degree of sensitivity of the code 294 , this may include determining whether the code includes certain variables, global parameters, etc., which are deemed sensitive. Another criteria may include identifying whether the file associated with the code is marked sensitive by referencing a list of sensitive files.
- the process may also include appending a code access annotation to the code segment based on detected actions performed to the code during the code access event.
- Example embodiments provide ways to enforce software code protections and modifications to protect code from unauthorized sources and to track the use of the code on developer workstations.
- Code ‘provenance’ and application of permissions/restrictions to the code may include the code being accessed, annotated, tracked, modified, etc., according to the code's history throughout the cloud and/or the enterprise computing environments and the user profiles/devices associated with the code events.
- FIG. 3 B illustrates an example network diagram of multiple code access instances and established provenance of the code modification events with code trace data according to example embodiments.
- the example configuration 350 illustrates an example where the copied code segments 332 - 336 may be portions of the master code 302 , which were accessed and/or copied to the user devices.
- the resulting trace data 340 may be a log of code data access and modification events which are collected periodically to create a record of those events based on trace records from audits over time.
- the auditing may be a periodic event that occurs to identify whether code access and modification events are taking place by any device that can be tracked and monitored.
- Information retrieved during a trace event may include, date, time, device storage location, device profile, user profile, network address, portions of the code which are copied/accessed.
- a first device 302 may access and copy code segment 322 and a corresponding version of the code 332 will be created and stored in the code repository for a temporary period of time and/or on the device 302 .
- the code will be accessible and modifiable during the defined period of time and as long as the access is active by the device 302 .
- the code When the inactivity is detected for a certain period of time, the code will be saved and stored and access will be removed and will require additional authorization.
- any changes, such as copying, new data added, new data removed, etc., will be logged in the trace data log 340 along with the time, date, the user profile, the user device information, network information etc., Either concurrently or subsequently, additional code access operations will be implemented by more devices 304 / 306 and the process repeats by copying the code 334 / 336 , creating another code access and development session and when completed the trace data log 340 is updated to reflect an additional access and code development process.
- One example includes identifying code access events which are performed by tracking access event data stored in a log or metadata of a file during a provenance audit effort.
- This audit information can be retrieved and used to confirm code changes, code access and/or storage device locations, user profiles, and may also include details about the origin and current status of the code.
- the provenance record must be identified and confirmed to ensure the origin and last known location are accurate prior to authorizing any further code access events and during a brute force inspection, such as a periodic trace analysis of all registered devices.
- Another example embodiment may include tracking code by a chain of custody, such as by logging access events, such as the profiles which accessed, copied, changed, moved, and/or canceled code.
- certain ‘fingerprint’ characteristics may be created to coincide with the code, such as metadata associated with the code attributes, such as date of creation, certain variables, code length, dates of changes, user profiles accessed code, storage locations of code, size of data, etc.
- Other attributes include file names and portions of code, such as strings which are known to be proprietary to the code development.
- a code copy may be known to exist in a code repository based on a data file directory and or data files containing the code at a particular storage location.
- the code attributes which define the code's presence, contents and/or storage location may be identified and used as the basis for a brute force code tracking session, which may search known code repositories, such as online sites/links which are known for sharing code and other software development tools. Other locations may include queries be sent to search engines to obtain results based on the code attributes.
- File names are one attribute, strings of code language are another attribute, each of which may be used to search for the code in unauthorized locations. Scanning code in public repositories may yield positive or negative results as it pertains to the code being examined for duplicates and unauthorized copies.
- the code may be deemed stolen or breached. If the code is discovered by a file name or other attribute, the code can then be copied and compared to the known versions of the code to ensure there are enough matching attributes to yield an unauthorized copy. If so, the user profiles linked to the code access operations in the enterprise location may be identified to identify the profiles associated with accessing that code prior to the unauthorized code discovery event. In such an event, a token block may be requested to deny tokens which may have been previously available to user profiles to access the code. A token rotation may be initiated automatically responsive to the code breach identification. This prevents previously authorized parties with token access from further access when the token is revoked or rotated.
- FIG. 3 C illustrates an example flow diagram of a process for establishing provenance of the code modification events according to example embodiments.
- the process 290 may include determining one or more of a file type and a code segment accessed during a code access event 292 , which may include identifying a label or identifier that identifies the code that was accessed.
- the process also includes identifying code origin information appended to the code segment during previous code access events 294 .
- the code may have a trace log with various instances of access and location information stored in memory based on previous user device access and code development instances.
- the process also includes appending an updated code access location to the code segment identifying the current code access event and a current code location 296 to identify the current access attempt and code development status.
- the process also includes applying one or more code access restrictions to the code segment based on the current code location 298 .
- the criteria to allow, disallow, limit the amount of access time, permit/not permit code modifications and copying may be based on access location, user profiles and other criteria.
- the current code location may be based on one or more of a user profile, a corresponding device profile, and a network address.
- the information is used to identify a location as acceptable or unacceptable in which case the code will be locked and unobtainable.
- the process also includes identifying a previous code location from the metadata associated with the code and updating code storage repository information based on the current code location, and determining whether the current code location is associated with code access privileges which match the previous code location.
- the code access and development privileges may vary depending on the current location data stored in the code log metadata. When a known location is identified, the privileges may include more options than when the code is in a new location or an unknown location.
- the process may include applying one or more rules to the current code location based on rules associated with the previous code location assuming that the new location is identified as an acceptable location.
- the process also includes performing a string comparison of the code segment to one or more other code segments, and the one or more other code segments are additional copies of the code segment.
- portions of the code are taken as a match criteria and used to scan various machines across the Internet, at known development sites and on known enterprise user devices to identify whether the code is available outside the code repository. This auditing process may be a test to identify if versions of the code are available in unauthorized locations.
- the process also includes detecting a plurality of code segment copies which correspond to a plurality of code segment access events associated with the code segment, hashing the code segments, and storing the hash key in a file associated with the code segment. This provides a way to prevent unauthorized parties from accessing the code.
- the hashing of the code segment may provide storing the hash in a local database and creating an index for efficient search efforts and reference purposes.
- one specific function may be to select a limited portion of the code which ‘checks-out’ ok based on a user profile permission or other governing criteria. Further to the code access and application of permissions/restrictions, the code may have selective access applied to certain code blocks/segments based on the rights, status, and/or other credentials associated with the user profiles or user devices accessing the code.
- an agent may be installed on a user device 102 to maintain constant communication with an agent application on the server.
- An identity of a user device may be confirmed from credentials which are stored on the device and forwarded during an access attempt. For example, a personal access token may be required to obtain access to the code repository.
- a software source code security function may be stored in the third party cloud code source.
- the agent application may be periodically auditing the user device 102 to ensure the permissions are active and the actions taken are consistent with the permissions associated with that particular user device 102 .
- the code auditing/reporting results 400 may be realized by a server or devices which are configured to track instances of metadata or control data, such as: times, dates, locations, user profiles, egress operations, copying operations, modifying operations, deleting operations, etc., associated with the code.
- generated alerts 402 may include secrets identified 404 , such as tokens used, private data, egress actions 406 , such as policy violations, unauthorized actions, new public and private repositories 408 identified as storing the code, etc.
- the number of occurrences 410 may be used to establish an acceptability/unacceptability threshold for action.
- a threshold such as five instances
- the code may be locked from further access to all parties except for certain high level administrators.
- T a threshold
- an automated action may occur which prevents certain access and other functions until the matter is resolved by reducing the number of locations storing the code identified during a next audit process.
- Another operation may be a repository identification process where the repositories storing the code are identified and are required to be approved to alleviate or remove an unauthorized action.
- the insights identified may include a summary of repositories identified 412 , clones of the code 414 and users, such as user profiles linked to the code instances 416 .
- Tt may include 48 hours, one week, etc., that the code is tracked and the results are compiled and compared to acceptability thresholds to determine if certain users are required to have their access privileges revoked. If a code use violation is identified based on unacceptable storage locations or other criteria (e.g., time thresholds instances), then user rights of those with low-level rights or those who accessed the code in those instances may lose their access privileges. Another criteria may be counting the number of duplications, such as clones created and where the clones are stored. A certain number of clones may be considered acceptable while any number over that amount may be deemed unacceptable.
- the various versions of the code may be identifiable via an audit tracing procedure that tracks all user devices, repositories, etc., identified by a central server application over a defined period of time. For example, lines of code may be copied and used as the basis to scan various user devices during an audit so the code tracking application can determine whether certain strings of code are included on those devices and whether the code that was copied is permitted to be used by those devices.
- Other criteria for code tracing includes file names and execution paths of the code, which are traced for existence within the network being monitored.
- FIG. 4 B illustrates a network device which performs example code detection for code use and related code events according to example embodiments.
- the configuration 450 includes the server 120 responsible for storing and managing a master code copy 452 .
- Each instance of the code being accessed, copied, modified, executed, etc. is tracked and stored in the log of trace data 458 .
- the code location, date, time, device information, code type, token data, egress actions, and/or score summary, etc. may all be part of the information stored with reference to a code event 454 / 456 .
- FIG. 4 C illustrates an example configuration for detecting code instances on a network according to example embodiments.
- the code repository server 120 may attempt to perform a trace audit that is based on a core code 462 , which represents one or more code builds which are maintained as master copies.
- the master copies 462 are used as the basis for software code audits performed on a network 464 , such as the Internet, a private Intranet, an enterprise entity, etc.
- the code tracing audits should be performed on targeted locations where the code is likely to be stored, for example, the software development sites used by many are excellent sources to identify code use and unauthorized code usage.
- the code may be locked from access at the code repository source 120 until the unauthorized locations have been secured or the code is removed. Any of the devices in the network 464 which are authorized to access the code may be omitted from the unauthorized code use list data.
- a total number of code existence, use, etc., violations may be applied to a weighted function which weights each unauthorized code instance (location, execution, modification, etc.) to create a sum for a total amount of unauthorized instances.
- the score may be a basis for temporarily preventing code access and other code restrictions (e.g., execution, storage, etc.).
- the trace data 458 may be a tally report of data for all instances of the code identified over a period of time.
- code records 454 / 456 may include a location, date, time, device profile, code type, token data, egress actions, etc., and scores which are summarized based on the results of code monitoring operations. Each violation or unexpected occurrence may cause the score to increase causing an automated action to occur.
- the trace/monitor data 458 may be a log of code data access events which are collected periodically to create a record of those events based on trace records from audit operations.
- the auditing may be a periodic event that occurs to identify whether code access events are taking place by any device that can be tracked and monitored. Information retrieved during a trace event may include, date, time, device storage location, device profile, user profile, portions of the code which are copied/accessed.
- a computer program may be embodied on a computer readable medium, such as a storage medium.
- a computer program may reside in random access memory (“RAM”), flash memory, read-only memory (“ROM”), erasable programmable read-only memory (“EPROM”), electrically erasable programmable read-only memory (“EEPROM”), registers, hard disk, a removable disk, a compact disk read-only memory (“CD-ROM”), or any other form of storage medium known in the art.
- the bus represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
- bus architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus.
- Computer system/server 702 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 702 , and it includes both volatile and non-volatile media, removable and non-removable media.
- System memory 706 implements the flow diagrams of the other figures.
- the system memory 706 can include computer system readable media in the form of volatile memory, such as random-access memory (RAM) 710 and/or cache memory 712 .
- Computer system/server 702 may further include other removable/non-removable, volatile/non-volatile computer system storage media.
- memory 706 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”).
- a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”)
- an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media
- each can be connected to the bus by one or more data media interfaces.
- memory 706 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of various embodiments of the application.
- Program/utility having a set (at least one) of program modules, may be stored in memory 706 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment.
- Program modules generally carry out the functions and/or methodologies of various embodiments of the application as described herein.
- aspects of the present application may be embodied as a system, method, or computer program product. Accordingly, aspects of the present application may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present application may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
- Computer system/server 702 may also communicate with one or more external devices 720 via a I/O adapter 724 , such as a keyboard, a pointing device, a display 722 , etc.; one or more devices that enable a user to interact with computer system/server 702 ; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 702 to communicate with one or more other computing devices. Such communication can occur via I/O interfaces 724 of the adapter 726 . Still yet, computer system/server 702 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter.
- LAN local area network
- WAN wide area network
- public network e.g., the Internet
- adapter 726 communicates with the other components of computer system/server 702 via a bus. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server 702 . Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
- the information sent between various modules can be sent between the modules via at least one of: a data network, the Internet, a voice network, an Internet Protocol network, a wireless device, a wired device and/or via plurality of protocols. Also, the messages sent or received by any of the modules may be sent or received directly and/or via one or more of the other modules.
- a “system” could be embodied as a personal computer, a server, a console, a personal digital assistant (PDA), a cell phone, a tablet computing device, a smartphone or any other suitable computing device, or combination of devices.
- PDA personal digital assistant
- Presenting the above-described functions as being performed by a “system” is not intended to limit the scope of the present application in any way but is intended to provide one example of many embodiments. Indeed, methods, systems and apparatuses disclosed herein may be implemented in localized and distributed forms consistent with computing technology.
- modules may be implemented as a hardware circuit comprising custom very large-scale integration (VLSI) circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components.
- VLSI very large-scale integration
- a module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, graphics processing units, or the like.
- a module may also be at least partially implemented in software for execution by various types of processors.
- An identified unit of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions that may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
- modules may be stored on a computer-readable medium, which may be, for instance, a hard disk drive, flash device, random access memory (RAM), tape, or any other such medium used to store data.
- a module of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices.
- operational data may be identified and illustrated herein within modules and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set or may be distributed over different locations including over different storage devices, and may exist, at least partially, merely as electronic signals on a system or network.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Virology (AREA)
- Automation & Control Theory (AREA)
- Library & Information Science (AREA)
- Storage Device Security (AREA)
- Data Mining & Analysis (AREA)
Abstract
Description
Claims (20)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/993,824 US12271497B2 (en) | 2020-02-18 | 2022-11-23 | Monitoring code provenance |
Applications Claiming Priority (8)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202062978238P | 2020-02-18 | 2020-02-18 | |
| US202062978245P | 2020-02-18 | 2020-02-18 | |
| US202062978250P | 2020-02-18 | 2020-02-18 | |
| US202062978240P | 2020-02-18 | 2020-02-18 | |
| US202062978242P | 2020-02-18 | 2020-02-18 | |
| US202062978248P | 2020-02-18 | 2020-02-18 | |
| US17/178,228 US11550943B2 (en) | 2020-02-18 | 2021-02-17 | Monitoring code provenance |
| US17/993,824 US12271497B2 (en) | 2020-02-18 | 2022-11-23 | Monitoring code provenance |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/178,228 Continuation US11550943B2 (en) | 2020-02-18 | 2021-02-17 | Monitoring code provenance |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20230090586A1 US20230090586A1 (en) | 2023-03-23 |
| US12271497B2 true US12271497B2 (en) | 2025-04-08 |
Family
ID=77271890
Family Applications (7)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/178,224 Abandoned US20210256152A1 (en) | 2020-02-18 | 2021-02-17 | Code access management |
| US17/178,228 Active 2041-03-15 US11550943B2 (en) | 2020-02-18 | 2021-02-17 | Monitoring code provenance |
| US17/178,229 Abandoned US20210256143A1 (en) | 2020-02-18 | 2021-02-17 | Code tracking and identification |
| US17/178,233 Active 2041-02-27 US11556642B2 (en) | 2020-02-18 | 2021-02-17 | Code monitoring and restricting of egress operations |
| US17/178,225 Active 2041-05-06 US11599659B2 (en) | 2020-02-18 | 2021-02-17 | Documenting and annotating code activities |
| US17/989,604 Abandoned US20230082183A1 (en) | 2020-02-18 | 2022-11-17 | Code monitoring and restricting of egress operations |
| US17/993,824 Active 2041-03-03 US12271497B2 (en) | 2020-02-18 | 2022-11-23 | Monitoring code provenance |
Family Applications Before (6)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/178,224 Abandoned US20210256152A1 (en) | 2020-02-18 | 2021-02-17 | Code access management |
| US17/178,228 Active 2041-03-15 US11550943B2 (en) | 2020-02-18 | 2021-02-17 | Monitoring code provenance |
| US17/178,229 Abandoned US20210256143A1 (en) | 2020-02-18 | 2021-02-17 | Code tracking and identification |
| US17/178,233 Active 2041-02-27 US11556642B2 (en) | 2020-02-18 | 2021-02-17 | Code monitoring and restricting of egress operations |
| US17/178,225 Active 2041-05-06 US11599659B2 (en) | 2020-02-18 | 2021-02-17 | Documenting and annotating code activities |
| US17/989,604 Abandoned US20230082183A1 (en) | 2020-02-18 | 2022-11-17 | Code monitoring and restricting of egress operations |
Country Status (1)
| Country | Link |
|---|---|
| US (7) | US20210256152A1 (en) |
Families Citing this family (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12363148B1 (en) | 2017-11-27 | 2025-07-15 | Fortinet, Inc. | Operational adjustment for an agent collecting data from a cloud compute environment monitored by a data platform |
| US12470578B1 (en) | 2017-11-27 | 2025-11-11 | Fortinet, Inc. | Containerized agent for monitoring container activity in a compute environment |
| US12323449B1 (en) | 2017-11-27 | 2025-06-03 | Fortinet, Inc. | Code analysis feedback loop for code created using generative artificial intelligence (‘AI’) |
| US12267345B1 (en) | 2017-11-27 | 2025-04-01 | Fortinet, Inc. | Using user feedback for attack path analysis in an anomaly detection framework |
| US12284197B1 (en) | 2017-11-27 | 2025-04-22 | Fortinet, Inc. | Reducing amounts of data ingested into a data warehouse |
| US12355793B1 (en) | 2017-11-27 | 2025-07-08 | Fortinet, Inc. | Guided interactions with a natural language interface |
| US12309236B1 (en) | 2017-11-27 | 2025-05-20 | Fortinet, Inc. | Analyzing log data from multiple sources across computing environments |
| US12335348B1 (en) | 2017-11-27 | 2025-06-17 | Fortinet, Inc. | Optimizing data warehouse utilization by a data ingestion pipeline |
| US12261866B1 (en) | 2017-11-27 | 2025-03-25 | Fortinet, Inc. | Time series anomaly detection |
| US12470577B1 (en) | 2017-11-27 | 2025-11-11 | Fortinet, Inc. | Kernel-based monitoring of container activity in a compute environment |
| US12489770B1 (en) | 2017-11-27 | 2025-12-02 | Fortinet, Inc. | Agent-based monitoring of a registry space of a compute asset within a compute environment |
| US12526297B2 (en) * | 2017-11-27 | 2026-01-13 | Fortinet, Inc. | Annotating changes in software across computing environments |
| US11790093B2 (en) * | 2021-04-29 | 2023-10-17 | Bank Of America Corporation | Cognitive tokens for authorizing restricted access for cyber forensics |
| US12217050B2 (en) * | 2021-10-18 | 2025-02-04 | HCL America Inc. | Method and system for identifying suspicious code contribution to a source code repository |
| US20230169439A1 (en) * | 2021-11-30 | 2023-06-01 | KnowBe4, Inc. | Automated management of compliance training |
| TWI801092B (en) * | 2022-01-12 | 2023-05-01 | 動力安全資訊股份有限公司 | Method of changing setting for information equipment |
| US20250284784A1 (en) * | 2022-02-01 | 2025-09-11 | Nchain Licensing Ag | Method and system for permission management |
| US11934544B2 (en) * | 2022-03-17 | 2024-03-19 | Lenovo Global Technology (United States) Inc. | Securing data via encrypted geo-located provenance metadata |
| CN114880021B (en) * | 2022-04-27 | 2025-09-09 | 北京达佳互联信息技术有限公司 | Annotation processing method, annotation processing device, annotation processing equipment, storage medium and program product |
Citations (48)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6609115B1 (en) | 1999-12-30 | 2003-08-19 | Ge Medical Systems | Method and apparatus for limited online access to restricted documentation |
| US20050097364A1 (en) | 2003-07-23 | 2005-05-05 | Edeki Omon A. | System and method for securing computer system against unauthorized access |
| US6957366B1 (en) | 2001-09-28 | 2005-10-18 | Bellsouth Intellectual Property Corporation | System and method for an interactive web-based data catalog for tracking software bugs |
| US20050273600A1 (en) | 2003-02-03 | 2005-12-08 | Seeman El-Azar | Method and system for file data access within a secure environment |
| US20060048230A1 (en) | 2002-12-24 | 2006-03-02 | Trusted Logic | Method for securing computer systems incorporating a code interpretation module |
| US20060080546A1 (en) | 2004-08-31 | 2006-04-13 | Brannon Karen W | System and method for regulating access to objects in a content repository |
| US7076496B1 (en) | 2001-02-23 | 2006-07-11 | 3Com Corporation | Method and system for server based software product release version tracking |
| US20070061782A1 (en) | 2005-09-15 | 2007-03-15 | Microsoft Corporation | Independent software integration |
| US20070130149A1 (en) | 2005-10-12 | 2007-06-07 | Lenovo (Singapore) Pte. Ltd. | Method, system, and computer program product for troubleshooting/configuring communications settings of a computer system |
| US20070169071A1 (en) | 2006-01-19 | 2007-07-19 | International Business Machines Corporation | Dynamic granting of permissions in an object-oriented code base |
| US20080288330A1 (en) | 2007-05-14 | 2008-11-20 | Sailpoint Technologies, Inc. | System and method for user access risk scoring |
| US20090293121A1 (en) | 2008-05-21 | 2009-11-26 | Bigus Joseph P | Deviation detection of usage patterns of computer resources |
| US20090328188A1 (en) | 2008-05-01 | 2009-12-31 | Motorola, Inc. | Context-based semantic firewall for the protection of information |
| US20100007489A1 (en) | 2008-07-10 | 2010-01-14 | Janardan Misra | Adaptive learning for enterprise threat managment |
| US20120278902A1 (en) | 2011-04-27 | 2012-11-01 | Cambridge Semantics, Inc. | Incremental deployment of computer software program logic |
| US8432570B1 (en) | 2010-07-30 | 2013-04-30 | Symantec Corporation | Using bit arrays in incremental scanning of content for sensitive data |
| US20140090012A1 (en) | 2005-12-29 | 2014-03-27 | Nextlabs, Inc. | Enforcing Policy-based Application and Access Control in an Information Management System |
| US8819856B1 (en) | 2012-08-06 | 2014-08-26 | Google Inc. | Detecting and preventing noncompliant use of source code |
| US20140283127A1 (en) | 2013-03-14 | 2014-09-18 | Hcl Technologies Limited | Masking sensitive data in HTML while allowing data updates without modifying client and server |
| US20150046463A1 (en) | 2013-08-07 | 2015-02-12 | Red Hat, Inc. | System and method for content storage |
| US20150067861A1 (en) | 2013-08-30 | 2015-03-05 | Bank Of America Corporation | Detecting malware using revision control logs |
| US20150082274A1 (en) * | 2013-08-12 | 2015-03-19 | Khan Academy | Systems and methods for social programming |
| US9449181B1 (en) | 2012-10-19 | 2016-09-20 | Google Inc. | Control and enforcement of access of user data |
| US20160283727A1 (en) | 2015-03-25 | 2016-09-29 | Vera | Policy enforcement |
| US20160352748A1 (en) | 2015-05-28 | 2016-12-01 | Samsung Sds Co., Ltd. | Method for blocking unauthorized data access and computing device with feature of blocking unauthorized data access |
| US20170103192A1 (en) | 2015-10-12 | 2017-04-13 | Renesas Electronics America Inc. | Secure code delivery |
| US20170154188A1 (en) | 2015-03-31 | 2017-06-01 | Philipp MEIER | Context-sensitive copy and paste block |
| US20170366551A1 (en) | 2015-03-26 | 2017-12-21 | Amazon Technologies, Inc. | Using transient processing containers for security authorization |
| US20180097787A1 (en) | 2016-09-30 | 2018-04-05 | Palo Alto Networks, Inc. | Multifactor authentication as a network service |
| US20180129497A1 (en) | 2016-11-04 | 2018-05-10 | International Business Machines Corporation | Monitoring code sensitivity to cause software build breaks during software project development |
| US20180139210A1 (en) | 2016-11-14 | 2018-05-17 | Instrinsic Value, LLC | Systems, devices, and methods for access control and identification of user devices |
| US20190073455A1 (en) | 2017-09-07 | 2019-03-07 | Salesforce.Com, Inc. | Managing the display of hidden proprietary software code to authorized licensed users |
| US10354093B1 (en) | 2018-09-28 | 2019-07-16 | Atlassian Pty Ltd | Managing content authorization in a federated application system |
| US20190220542A1 (en) | 2018-01-12 | 2019-07-18 | Samsung Electronics Co., Ltd | System to customize and view permissions, features, notifications, and updates from a cluster of applications |
| US10387669B1 (en) | 2015-09-17 | 2019-08-20 | Nextlabs, Inc. | Protecting documents with centralized and discretionary policies |
| US20190327271A1 (en) | 2018-04-20 | 2019-10-24 | Orkus, Inc. | Automated access control management for computing systems |
| US20200026865A1 (en) * | 2018-07-17 | 2020-01-23 | Cisco Technology, Inc. | Application security policy management agent |
| US20200104248A1 (en) | 2017-12-15 | 2020-04-02 | Google Llc | Open source software testing |
| US20200104519A1 (en) | 2018-09-28 | 2020-04-02 | Atlassian Pty Ltd | Managing content authorization in a federated application system |
| US10614071B1 (en) | 2017-11-27 | 2020-04-07 | Lacework Inc. | Extensible query interface for dynamic data compositions and filter applications |
| US20200183681A1 (en) * | 2018-12-11 | 2020-06-11 | Sap Se | Method for a software development system |
| US20200218535A1 (en) | 2019-01-08 | 2020-07-09 | Saudi Arabian Oil Company | Source code similarity detection using digital fingerprints |
| US20200242536A1 (en) | 2019-01-25 | 2020-07-30 | Capital One Services, Llc | Automated role engineering for enterprise computer systems |
| US10768929B1 (en) | 2019-11-13 | 2020-09-08 | Atlassian Pty Ltd. | Automatically updating source code in version control systems via a pull request |
| US20210097024A1 (en) | 2019-09-27 | 2021-04-01 | Amazon Technologies, Inc. | Data access control system for object storage service based on owner-defined code |
| US20210243223A1 (en) | 2020-01-31 | 2021-08-05 | Fidelis Cybersecurity, Inc. | Aggregation and flow propagation of elements of cyber-risk in an enterprise |
| US20210247976A1 (en) * | 2020-02-07 | 2021-08-12 | Red Hat, Inc. | Tracking related changes with code annotations |
| US20220279004A1 (en) | 2017-11-27 | 2022-09-01 | Lacework, Inc. | Facilitating developer efficiency and application quality |
-
2021
- 2021-02-17 US US17/178,224 patent/US20210256152A1/en not_active Abandoned
- 2021-02-17 US US17/178,228 patent/US11550943B2/en active Active
- 2021-02-17 US US17/178,229 patent/US20210256143A1/en not_active Abandoned
- 2021-02-17 US US17/178,233 patent/US11556642B2/en active Active
- 2021-02-17 US US17/178,225 patent/US11599659B2/en active Active
-
2022
- 2022-11-17 US US17/989,604 patent/US20230082183A1/en not_active Abandoned
- 2022-11-23 US US17/993,824 patent/US12271497B2/en active Active
Patent Citations (52)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6609115B1 (en) | 1999-12-30 | 2003-08-19 | Ge Medical Systems | Method and apparatus for limited online access to restricted documentation |
| US7076496B1 (en) | 2001-02-23 | 2006-07-11 | 3Com Corporation | Method and system for server based software product release version tracking |
| US6957366B1 (en) | 2001-09-28 | 2005-10-18 | Bellsouth Intellectual Property Corporation | System and method for an interactive web-based data catalog for tracking software bugs |
| US20060048230A1 (en) | 2002-12-24 | 2006-03-02 | Trusted Logic | Method for securing computer systems incorporating a code interpretation module |
| US20050273600A1 (en) | 2003-02-03 | 2005-12-08 | Seeman El-Azar | Method and system for file data access within a secure environment |
| US20050097364A1 (en) | 2003-07-23 | 2005-05-05 | Edeki Omon A. | System and method for securing computer system against unauthorized access |
| US20060080546A1 (en) | 2004-08-31 | 2006-04-13 | Brannon Karen W | System and method for regulating access to objects in a content repository |
| US20070061782A1 (en) | 2005-09-15 | 2007-03-15 | Microsoft Corporation | Independent software integration |
| US20070130149A1 (en) | 2005-10-12 | 2007-06-07 | Lenovo (Singapore) Pte. Ltd. | Method, system, and computer program product for troubleshooting/configuring communications settings of a computer system |
| US20140090012A1 (en) | 2005-12-29 | 2014-03-27 | Nextlabs, Inc. | Enforcing Policy-based Application and Access Control in an Information Management System |
| US20070169071A1 (en) | 2006-01-19 | 2007-07-19 | International Business Machines Corporation | Dynamic granting of permissions in an object-oriented code base |
| US20080288330A1 (en) | 2007-05-14 | 2008-11-20 | Sailpoint Technologies, Inc. | System and method for user access risk scoring |
| US20090328188A1 (en) | 2008-05-01 | 2009-12-31 | Motorola, Inc. | Context-based semantic firewall for the protection of information |
| US20090293121A1 (en) | 2008-05-21 | 2009-11-26 | Bigus Joseph P | Deviation detection of usage patterns of computer resources |
| US20100007489A1 (en) | 2008-07-10 | 2010-01-14 | Janardan Misra | Adaptive learning for enterprise threat managment |
| US8432570B1 (en) | 2010-07-30 | 2013-04-30 | Symantec Corporation | Using bit arrays in incremental scanning of content for sensitive data |
| US20120278902A1 (en) | 2011-04-27 | 2012-11-01 | Cambridge Semantics, Inc. | Incremental deployment of computer software program logic |
| US8819856B1 (en) | 2012-08-06 | 2014-08-26 | Google Inc. | Detecting and preventing noncompliant use of source code |
| US9449181B1 (en) | 2012-10-19 | 2016-09-20 | Google Inc. | Control and enforcement of access of user data |
| US20140283127A1 (en) | 2013-03-14 | 2014-09-18 | Hcl Technologies Limited | Masking sensitive data in HTML while allowing data updates without modifying client and server |
| US20150046463A1 (en) | 2013-08-07 | 2015-02-12 | Red Hat, Inc. | System and method for content storage |
| US20150082274A1 (en) * | 2013-08-12 | 2015-03-19 | Khan Academy | Systems and methods for social programming |
| US20150067861A1 (en) | 2013-08-30 | 2015-03-05 | Bank Of America Corporation | Detecting malware using revision control logs |
| US20160283406A1 (en) | 2015-03-25 | 2016-09-29 | Vera | Securing files |
| US9921976B2 (en) | 2015-03-25 | 2018-03-20 | Vera | Access files |
| WO2016154520A1 (en) | 2015-03-25 | 2016-09-29 | Vera | Access files |
| US20160283727A1 (en) | 2015-03-25 | 2016-09-29 | Vera | Policy enforcement |
| US20160285835A1 (en) | 2015-03-25 | 2016-09-29 | Vera | Access files |
| US20170366551A1 (en) | 2015-03-26 | 2017-12-21 | Amazon Technologies, Inc. | Using transient processing containers for security authorization |
| US20170154188A1 (en) | 2015-03-31 | 2017-06-01 | Philipp MEIER | Context-sensitive copy and paste block |
| US20160352748A1 (en) | 2015-05-28 | 2016-12-01 | Samsung Sds Co., Ltd. | Method for blocking unauthorized data access and computing device with feature of blocking unauthorized data access |
| US10387669B1 (en) | 2015-09-17 | 2019-08-20 | Nextlabs, Inc. | Protecting documents with centralized and discretionary policies |
| US20170103192A1 (en) | 2015-10-12 | 2017-04-13 | Renesas Electronics America Inc. | Secure code delivery |
| US20180097787A1 (en) | 2016-09-30 | 2018-04-05 | Palo Alto Networks, Inc. | Multifactor authentication as a network service |
| US20180129497A1 (en) | 2016-11-04 | 2018-05-10 | International Business Machines Corporation | Monitoring code sensitivity to cause software build breaks during software project development |
| US20180139210A1 (en) | 2016-11-14 | 2018-05-17 | Instrinsic Value, LLC | Systems, devices, and methods for access control and identification of user devices |
| US20190073455A1 (en) | 2017-09-07 | 2019-03-07 | Salesforce.Com, Inc. | Managing the display of hidden proprietary software code to authorized licensed users |
| US10614071B1 (en) | 2017-11-27 | 2020-04-07 | Lacework Inc. | Extensible query interface for dynamic data compositions and filter applications |
| US20220279004A1 (en) | 2017-11-27 | 2022-09-01 | Lacework, Inc. | Facilitating developer efficiency and application quality |
| US20200104248A1 (en) | 2017-12-15 | 2020-04-02 | Google Llc | Open source software testing |
| US20190220542A1 (en) | 2018-01-12 | 2019-07-18 | Samsung Electronics Co., Ltd | System to customize and view permissions, features, notifications, and updates from a cluster of applications |
| US20190327271A1 (en) | 2018-04-20 | 2019-10-24 | Orkus, Inc. | Automated access control management for computing systems |
| US20200026865A1 (en) * | 2018-07-17 | 2020-01-23 | Cisco Technology, Inc. | Application security policy management agent |
| US20200104519A1 (en) | 2018-09-28 | 2020-04-02 | Atlassian Pty Ltd | Managing content authorization in a federated application system |
| US10354093B1 (en) | 2018-09-28 | 2019-07-16 | Atlassian Pty Ltd | Managing content authorization in a federated application system |
| US20200183681A1 (en) * | 2018-12-11 | 2020-06-11 | Sap Se | Method for a software development system |
| US20200218535A1 (en) | 2019-01-08 | 2020-07-09 | Saudi Arabian Oil Company | Source code similarity detection using digital fingerprints |
| US20200242536A1 (en) | 2019-01-25 | 2020-07-30 | Capital One Services, Llc | Automated role engineering for enterprise computer systems |
| US20210097024A1 (en) | 2019-09-27 | 2021-04-01 | Amazon Technologies, Inc. | Data access control system for object storage service based on owner-defined code |
| US10768929B1 (en) | 2019-11-13 | 2020-09-08 | Atlassian Pty Ltd. | Automatically updating source code in version control systems via a pull request |
| US20210243223A1 (en) | 2020-01-31 | 2021-08-05 | Fidelis Cybersecurity, Inc. | Aggregation and flow propagation of elements of cyber-risk in an enterprise |
| US20210247976A1 (en) * | 2020-02-07 | 2021-08-12 | Red Hat, Inc. | Tracking related changes with code annotations |
Non-Patent Citations (4)
| Title |
|---|
| Feiner, Johannes, et al., "RepoVis: Visual Overviews and Full-Text Search in Software Repositories", VISSOFT 2018, Madrid, Spain, Sep. 24-25, 2018, pp. 1-11. |
| Povey, Dean. "Optimistic security: a new access control paradigm." [Online], 1999 [Retrieved on: Jul. 30, 2022], In Proceedings of the 1999 workshop on New security paradigms, pp. 40-45, Retrieved from: < https://dl .acm.org/doi/pdf/10.1145/335169.335188 > ( Year: 1999). |
| Rahman, Mohammad Masudur, et al., "Effective Reformulation of Query for Code Search using Crowdsourced Knowledge an Extra-Large Data Analytics", ICSME 2018, Madrid, Spain, Sep. 23-29, 2018, pp. 473-484. |
| Sharma, Abhishek, et al., "Cataloging GitHub Repositories", EASE '17, Karlskrona, Sweden, Jun. 201, pp. 314-319. |
Also Published As
| Publication number | Publication date |
|---|---|
| US11556642B2 (en) | 2023-01-17 |
| US11599659B2 (en) | 2023-03-07 |
| US20210255851A1 (en) | 2021-08-19 |
| US20210256143A1 (en) | 2021-08-19 |
| US20210256152A1 (en) | 2021-08-19 |
| US11550943B2 (en) | 2023-01-10 |
| US20210256123A1 (en) | 2021-08-19 |
| US20230090586A1 (en) | 2023-03-23 |
| US20210256142A1 (en) | 2021-08-19 |
| US20230082183A1 (en) | 2023-03-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12271497B2 (en) | Monitoring code provenance | |
| US12423373B2 (en) | Identifying and monitoring relevant enterprise data stored in software development repositories | |
| US8769296B2 (en) | Software signature tracking | |
| US9602515B2 (en) | Enforcing alignment of approved changes and deployed changes in the software change life-cycle | |
| US8769605B2 (en) | System and method for dynamically enforcing security policies on electronic files | |
| US9736182B1 (en) | Context-aware compromise assessment | |
| RU2500075C2 (en) | Creating and validating cryptographically secured documents | |
| US20160036841A1 (en) | Database Queries Integrity and External Security Mechanisms in Database Forensic Examinations | |
| EP4338075B1 (en) | Abnormally permissive role definition detection systems | |
| RU2581559C2 (en) | System and method of using security policy to storage in network | |
| US8132261B1 (en) | Distributed dynamic security capabilities with access controls | |
| CN116522308B (en) | Database account hosting method, device, computer equipment and storage medium | |
| CN118862098B (en) | A system and method for detecting security vulnerabilities of open source components | |
| US20220188445A1 (en) | Secure smart containers for controlling access to data | |
| CN120105469A (en) | Data access method, device and electronic device based on cloud control platform | |
| US20240111877A1 (en) | Delivering augmented threat assessment values to a security threat management facility | |
| Jaidi | Requirements, Compliance and Future Directives | |
| Jorge Rey et al. | Keys to securing data as a practitioner | |
| Ng et al. | Let the Right One in: Discovering and Mitigating Permission Gaps | |
| Room | Data Loss Prevention | |
| Yaseen | Mitigating insider threat in relational database systems | |
| Myalapalli et al. | A unified model for cherishing privacy in database system an approach to overhaul vulnerabilities |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: SMAL); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| AS | Assignment |
Owner name: BLUBRACKET, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LINGA, PRAKASH;ARORA, AJAY K.;BUZUEV, VLADIMIR;SIGNING DATES FROM 20210204 TO 20210209;REEL/FRAME:062446/0421 |
|
| AS | Assignment |
Owner name: HASHICORP, INC., CALIFORNIA Free format text: MERGER;ASSIGNORS:BLUEBRACKET INC.;SHAREHOLDER REPRESENTATIVE SERVICES LLC;PUMBAA MERGER SUB, INC.;REEL/FRAME:067245/0001 Effective date: 20230524 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HASHICORP, INC.;REEL/FRAME:072476/0436 Effective date: 20250723 Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW YORK Free format text: ASSIGNMENT OF ASSIGNOR'S INTEREST;ASSIGNOR:HASHICORP, INC.;REEL/FRAME:072476/0436 Effective date: 20250723 |
|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |