Software Risk Manager Documentation (v2025 3 5) 2025-04-28-14-01-07
Software Risk Manager Documentation (v2025 3 5) 2025-04-28-14-01-07
Documentation (v2025.3.5)
Contents
Contents
ii
Contents
iii
Contents
iv
Contents
v
Contents
vi
Contents
vii
Contents
viii
Contents
Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Running an Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
IntelliJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Burp Suite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Sending Results to Software Risk Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
OWASP ZAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Sending Results to Software Risk Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
Using Software Risk Manager with Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
GitHub Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Black Duck Bridge CLI Command Line Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Configuring Coverity Thin Client for use with Black Duck Bridge CLI and SRM . . . 536
ix
Software Risk Manager Documentation (v2025.3.5)
1
Software Risk Manager User Guide
Getting Started with Software Risk Manager
Software Risk Manager (SRM) is a complete application security posture management (ASPM) solution.
SRM enables you to set up policy-driven workflows to orchestrate AST tools like Coverity and Black Duck,
prioritize issues, and monitor compliance across your software assets.
Software Risk Manager allows you to do the following with your AppSec data:
• Correlate results
• Prioritize vulnerabilities
• Track remediation
• Centralize risk visibility
SRM also provides issue tracking functionality as well as policy management solutions.
• Software Risk Manager Installation Guide. This guide provides instructions for installing and configuring
Software Risk Manager on Windows and Linux platforms.
• Software Risk Manager Plugins Guide. This guide provides information and instructions for integrating
Software Risk Manager with a variety of development tools and environments.
• Software Risk Manager API Guide. This guide documents the various REST resources provided by
Software Risk Manager, which allows external applications and scripts to interface with SRM core
functionality.
• Black Duck Bridge CLI. This guide explains how to run scans and receive results from the command
line.
• Page names. The Software Risk Manager UI consists of a series of pages. The name of the page
appears in the top-left corner of the screen. In this guide, the page name begins with a capital letter. For
example, the Settings page.
• Button names. Tasks are performed by clicking buttons. The button name begins with a capital letter.
For example, Click Save.
• Icons. Icons appear throughout the Software Risk Manager UI. Icons can provide a visual indication of
10
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
a state or status, such as a policy violation. Icons can also serve as links to other pages. In this guide,
the icons are indicated by the name of the icon, beginning with a capital letter. For example, Click the
Settings icon.
• Menu items. Several pages in Software Risk Manager include sub-pages, which are listed as menu
items along the top or left of the screen. A menu item begins with a capital letter. For example, Select
License from the top menu.
• Dropdown configuration options. When working with certain elements, such as a project or finding, a
configuration icon appears to the right of the page. The icon appears as three horizontal dots. Clicking
this icon displays a dropdown list of options. Options appear in this guide by name, starting with a
capital letter. For example, Click the project's dropdown configuration icon and select New Analysis.
• Code strings and filenames. Code strings and filenames are shown in a mono-spaced font. For
example, Enter the following command: run srm.install
• Projects. This page shows all the currently defined projects in Software Risk Manager.
• Findings. This page displays all the findings from a selected analysis.
• Policies. This page lists all the currently defined policies, policy violations, and other policy-related data
• Integrations. This page provides links to all the tool integrations supported by Software Risk Manager.
• Reports. This page provides a list of existing reports and allows you to create reports to automatically
be run on a custom schedule based on saved filters from the Findings page.
• Hosts. This page lists the currently defined hosts and host-related data.
• Settings. This page provides links to sub-pages where you can configure SRM. The Settings page and
sub-pages allow you configure users, define user groups, view server logs, and so on.
11
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
These pages are accessed by clicking their respective icons (links) in the SRM navigation bar, as shown in
the figure below.
Clicking an icon from the navigation bar opens the corresponding page. The name of the page appears in
the top left of the screen.
Menus, when available, appear along the left side of the page. Clicking a menu option opens the
corresponding page.
12
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The dropdown configuration icon (three horizontal dots) is located to the right of a particular entity, such as
a project or a finding, and provides a dropdown list of options.
The menu in the top right corner of the screen provides additional options and information (from left to
right):
• Software version. This is the version number of the Software Risk Manager installation.
• In-app documentation. Click the question mark icon to access the Software Risk Manager
documentation set. Both PDF and web versions of the guides are available.
• Plugin downloads. Click the plugins download icon to display a list of plugin options you can
download.
• Settings. Click the settings icon to access the Software Risk Manager visual log.
• [username]. Click the username icon to access the My Settings page or to log out of Software Risk
Manager.
13
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Software Risk Manager has several deployment options, depending on your AppSec environment and
requirements. The most common SRM deployment options are as follows:
• Data aggregation
• Tool orchestration (requires the SRM Tool Orchestration module deployed on Kubernetes)
• SRM coupled with SAST (requires the SRM Scan Farm module deployed on Kubernetes)
• SRM coupled with SCA (requires the SRM Scan Farm module deployed on Kubernetes)
• SRM coupled with SAST and SCA (requires the SRM Scan Farm module deployed on Kubernetes)
14
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Supported Platforms
Software Risk Manager APIs are compatible with any operating system and hardware that can connect to
the SRM server or APIs via HTTPS.
Browser Support
The SRM web UI can be accessed using any of the supported browsers shown in the following table:
Table 1.
Browser Versions Provider
Firefox Latest Versions supported by Mozilla
Google Chrome Latest Versions supported by Google
Microsoft Edge Latest Versions supported by Windows 10
Safari Latest Versions supported by Apple
Note: Supported file types and tests apply to integrated Coverity and Black Duck only.
15
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
Language CI via Black Duck
Language Code Upload (UI) Git Integration
Versions Bridge CLI (CLI)
Salesforce Apex Supported Supported Supported
C++23
C++20
C++98
C++03
C++11
C/C++ Not Supported Not Supported Supported
C++14
C++17
C89
C99
C11
16
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
17
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 4.
Package Supported Detectors,
Language Test Mode Supported Entry Point Accuracy
Manager Requirements
Code upload or
Not Supported
SCM integration
Apache Ivy Various Ivy Build Parse
Black Duck
Bridge CLI (CI/ Supported Ivy Build Parse Low
• Files: ivy.zml, build.zml
CLI)
Code upload or
Not Supported
SCM integration
BitBake Various Black Duck
Bridge CLI (CI/ Supported Bitbake CLI
CLI)
Code upload or
Not Supported
SCM integration
Cargo Lock
Cargo Rust Black Duck
Bridge CLI (CI/ Supported Cargo Lock • Files: Cartfile, High
CLI) Cartfile.resolved
Code upload or
Not Supported
SCM integration
Carthage Lock
Carthage Various Black Duck
Bridge CLI (CI/ Supported Carthage Lock • Files: Cartfile, High
CLI) Cartfile.resolved
18
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Code upload or
Not Supported
SCM integration
Conan Lock
High
• Files: conan.lock
Conan CLI
• Files: conanfile.txt or
Conan CLI High
conanfile.py
• Executables: conan
Code upload or
Not Supported
SCM integration
Conda Python
Black Duck
Supported Conda CLI Conda CLI High
Bridge CLI (CI/
19
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Files: environment.yml
CLI)
• Executables: conda
Code upload or
Not Supported
SCM integration
Cpan CLI
CPAN Perl Black Duck
Bridge CLI (CI/ Supported Cpan CLI • File: Makefile.PL High
CLI) • Executables: cpan
Code upload or
Not Supported
SCM integration
CRAN R Packrat Lock
Black Duck
Bridge CLI (CI/ Supported Packrat Lock High
• File: packrat.lock
CLI)
Code upload or
Not Supported
SCM integration
Dart CLI
20
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Files:
pubspec.yaml,pubspec.lo
ck
Code upload or
Not Supported
SCM integration
Go Dep Golang (Go) GoDep Lock
Black Duck
Bridge CLI (CI/ Supported GoDep Lock High
• File: Gopkg.lock
CLI)
Code upload or
Not Supported
SCM integration
Go Gradle Golang (Go) GoGradle Lock
Black Duck
Bridge CLI (CI/ Supported GoGradle Lock High
• File: gogradle.lock
CLI)
Code upload or
Not Supported
SCM integration
Go Modules Golang (Go) Black Duck
Bridge CLI (CI/ Supported GoMod CLI GoMod CLI High
CLI)
21
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Files: go.mod
• Executables: go
Code upload or
Not Supported
SCM integration
Go Vendor
Go Vendor High
• Files: vendor/vendor.json
Go Vendor Golang (Go) Black Duck
Bridge CLI (CI/ Supported
CLI) GoVndr CLI
GoVndr CLI High
• Files: vendor.conf
22
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Files: build.gradle
Code upload or
Not Supported
SCM integration
Rebar CLI
Hex Erlang Black Duck
Bridge CLI (CI/ Supported Rebar CLI • Files: rebar.config High
CLI) • Executables: rebar3
Code upload or
Not Supported
SCM integration
Lerna CLI
• Files: lema.json,
Lerna Node.js package.json
Black Duck
• Executables: Lerna, and
Bridge CLI (CI/ Supported Lerna CLI High
one of the following:
CLI)
• packagelock.json
• npmshrinkwrap.json
• yarn.lock
23
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Files: pom.xml
• Executables: mvnw or
mvn
• Files: pom.groovy
High
• Executables: mvnw or
Maven Wrapper mvn
CLI
Maven Project Inspector
Low
• Files: pom.xml
24
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Files: npm-
shrinkwrap.json. For High
better results, include a
package.json also.
• Files: packagelock.json.
High
For better results, include
NPM Shrinkwrap package.json also.
25
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Files: node_modules,
High
package.json
• Executables: npm
NPM CLI
• Files: node_modules,
High
package.json
• Executables: npm
NPM CLI
26
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
.sln extension
27
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Code upload or
Not Supported
SCM integration
Pear CLI
PEAR PHP Black Duck
Bridge CLI (CI/ Supported Pear CLI • Files: package.xml High
CLI) • Executables: pear
Pipfile Lock
Code upload or
Supported Pipfile Lock • Files: Pipfile or High
SCM integration
Pipfile.lock
Pipfile Lock
pip Python
• Files: Pipfile or
Black Duck Pipfile.lock High
Bridge CLI (CI/ Supported Pipenv Lock • Executables: python or
CLI) python3, and pipenv
28
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Pipfile Lock
High
• Files: Pipfile, Pipfile.lock
Pipfile Lock
High
• Files Pipfile, Pipfile.lock
Pipfile Lock
Pipfile Lock High
• Files: Pipfile, Pipfile.lock
Pnpm Lock
pnpm Node.js All Supported Pnpm Lock High
• Files pnpmlock.yaml,
29
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
package.json
Poetry Lock
Code upload or
Not Supported
SCM integration
Gemfile Lock
High
• Files: Gemfile.lock
Gemspec Parse
Code upload or
Not Supported
SCM integration
SBT Scala
Black Duck Sbt Native
Supported Sbt Native Inspector High
Bridge CLI (CI/ Inspector
30
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Files: build.sbt
CLI) • Plugins: Dependency
Graph
Swift Lock
Code upload or
Supported Swift Lock • Files: Package.swift, High
SCM integration
Package.resolved
Swift Lock
Swift CLI
Code upload or
Not Supported
Xcode Swift SCM integration
Black Duck Supported Xcode Xcode Workspace Lock High
31
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Directories:
*.xcworkspace
Yarn Lock
32
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Package manager version requirements are only applicable to tests created with Black Duck
Bridge CLI (when testing relies on/requires access to executables). "N/A" in the table below indicates
buildless capture is used to test projects that depend on the package manager.
Table 5.
Package Manager Latest Supported Version
Apache Ivy N/A
Bazel 4.2.0
BitBake 2.6.0 (Yocto 4.3.2)
Cargo N/A
Carthage N/A
CocoaPods N/A
Conan 2.0.14
Conda 4.10.3
Cpan Script 1.678
CPAN CPAN.pm 2.36
Cpanm 1.7047
CRAN N/A
Dart 3.1.2
Dart
Flutter 3.13.4
Go 1.20.4
Go Dep N/A
Gogradle N/A
Go Modules 1.20.4
Go Vendor N/A
Gradle 8.2.1
Hex Rebar 3.20.0
Lerna 6.6.2
33
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
nuget 6.2
NuGet
.NET runtime is not required with 7.13.0
Packagist N/A
PEAR 1.10.12
pip 23.1.2
pnpm N/A
Poetry N/A
RubyGems 2.0.0
SBT 1.5.0
Swift 5.6.1
Xcode N/A
Yarn 4.1.0
To provide an overview of how to use Software Risk Manager to run an analysis, the following is an outline
of the process:
34
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Java - WebGoat
We recommend you use one of the WebGoat released war files directly as the input for Software Risk
Manager since those tend to package everything, including the source, bytecode, and third-party
dependencies. For instance, try this release.
• .NET - WebGoat.NET
Since the Software Risk Manager .NET scanners require compiled assemblies, you will need to
download the WebGoat.NET source and build it on your machine. Instructions for how to do so are at
the link above.
For the following datasets, you can configure your new project's Git Config to fetch the source directly from
GitHub using their git URL.
For other datasets, we recommend that you browse GitHub for different projects and scan some of them
for testing purposes. Here are some queries to get you started:
• Java
• C
• C++
• PHP
• Scala
• Python
• Ruby on Rails
• JavaScript
User Configuration settings, or "My Settings," allows you to set notifications, manage passwords, and
configure personal access tokens, which can be used to access the Software Risk Manager REST API.
Click your username in the upper right corner of the page and select My Settings to open the My Settings
page.
35
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
For more information on user configuration settings, see the following topics:
1. Click your username in the upper right corner of the page and select My Settings from the dropdown
menu.
2. Select Notifications from the top menu to open the Notifications page.
36
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click your username in the upper right corner of the page and select My Settings from the dropdown
menu.
37
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click your username in the upper right corner of the page and select My Settings from the dropdown
menu.
This page displays the existing tokens and usage data. Click the column headers to sort the list.
1. Click your username in the upper right corner of the page and select My Settings from the dropdown
menu.
38
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
39
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: This setting will not override or grant permissions that a user doesn't already have.
Deleting a Token
To delete a personal access token:
1. Click your username in the upper right corner of the page and select My Settings from the dropdown
menu.
40
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
3. Locate the token you want to delete and click Delete Token.
41
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Select a settings option from the left menu to open the corresponding Settings page. The page currently
being displayed is shown in the top left corner.
For detailed information on each page, see the following topics:
• Users. Add new users, configure user roles, manage existing user profiles, and so on.
• User Groups. Create and manage groups of users.
• Roles. Create and Manage Roles.
• API Keys. Generate and configure API keys.
• Project Metadata. Create, define, and configure custom metadata for projects.
• Triage Approval Workflow. Configure how status change requests are handled.
• Manual Entry Config. Define custom values that can be entered into selected fields and added as
manual results in a findings report.
• Triage Assistant. Configure SRM to use previous triage determinations to make predictions about future
findings.
• Polaris Assist (Beta). Generate AI Insight information.
• Add-In Tools. Configure additional tools that can be used to analyze code.
• Tags. Create and manage tags that can be assigned to findings.
• License. View license information with an option to update the current license.
• Server Logs. View events and errors associated with an analysis.
User Administration
Before running an analysis, an admin needs to configure user profiles, which includes user roles,
permissions, group associations, and so on.
42
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Users can be managed individually or in groups. (To manage user groups, see Managing User
Groups.)
Click the Settings icon in the navigation bar and select Users from the left menu to open the Users page.
This page displays a list of current users, the date the user last logged in, and whether that user is active.
Clicking the column headings will re-sort the list.
For more information on configuring user profiles, see the following topics:
Note: The superuser's admin and active states may not be modified.
43
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select Users from the left menu.
This page lists each user, when they last logged in, and whether they are "active."
2. Use the filter field to search for a specific user, or click the column headings to re-sort the list.
Adding a User
Admins can add three different types of users: Local, LDAP, and SAML (depending on your configuration).
To add a user:
1. Click the Settings icon in the navigation bar and select Users from the left menu.
44
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
45
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
46
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: The Super User's admin and active states may not be modified.
1. Click the Settings icon in the navigation bar and select Users from the left menu.
2. Click the dropdown configuration icon to the right of the user name and select Configure Roles.
47
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
48
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select Users from the left menu.
2. Click the dropdown configuration icon to the right of the user name and select Change Password.
49
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select Users from the left menu.
2. Click the dropdown configuration icon to the right of the user name and select Delete User.
Project Metadata Fields allow Software Risk Manager users to create and configure custom metadata for
specified projects. Once a field has been defined, you can use that field to enter metadata values for
specified projects. For more information on adding metadata values to projects, see Configuring Project
Metadata.
Click the Settings icon in the navigation bar and select Project Metadata Fields from the left menu to open
the Metadata Fields page.
50
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The Project Metadata Fields page lists currently defined field names and types. Clicking on the column
header will re-sort the list.
There are four field types:
For more information on project metadata fields, see the following topics:
1. Click the Settings icon in the navigation bar and select Project Metadata Fields from the left menu.
51
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
This page shows the existing metadata fields and field type. There are four field types:
• Text. A regular text input that allows a single line of text.
• Multiline. A larger text input that allows for multiple lines of text.
• Dropdown. Text input that a user can select from a dropdown list.
• Tags. A special input that behaves similarly to Text, but each individual word is converted to a "tag."
As you type, pressing the space bar will convert whatever text you already had into a tag. (A space
is required after the last tag.)
2. Click on the column headers to re-sort the list.
1. Click the Settings icon in the navigation bar and select Project Metadata Fields from the left menu.
52
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select Project Metadata Fields from the left menu.
53
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
54
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select Project Metadata Fields from the left menu.
API Keys can be generated for use with the Software Risk Manager API. Typically one key would be
generated for a specific purpose, such as integrating with a specific tool or plugin. This would allow for
fine-grained control over each API key’s active/inactive state, as well as setting specific user roles for each
key. In addition, API keys can be subject to expiration (default is 90 days).
Click the Settings icon in the navigation bar and select API Keys from the top menu to open the API Keys
page.
55
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
This page lists the currently assigned API keys, shows when they were last active, and if they are currently
active.
Note: For more information on Software Risk Manager API capabilities, please refer to the Software Risk
Manager API Guide.
For more information on administering API keys, see the following topics:
1. Click the Settings icon in the navigation bar and select API Keys from the left menu.
This page a list of existing API keys, the date of the most recent activity, and whether the key is active.
2. Use the filter field to search for a specific API key or click the column headings to re-sort the list.
56
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select API Keys from the left menu.
57
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: The API token expiration cannot be edited; however, regenerating an API key allows you to set a
new expiration.
1. Click the Settings icon in the navigation bar and select API Keys from the left menu.
2. Click the dropdown configuration icon and select Edit API Key.
58
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select API Keys from the left menu.
59
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
2. Click the dropdown configuration icon and select Regenerate API Key.
3. Select an expiration period and click Regenerate API Key. (The default is 90 days.)
4. Copy and save the new API key and click Close.
1. Click the Settings icon in the navigation bar and select API Keys from the left menu.
60
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
2. Click the dropdown configuration icon and select Delete API Key.
To simplify user administration, users can be managed as groups. Roles and permissions assigned to a
group will apply to every member of that group. Admins can set up multiple groups with multiple
permissions, including nested groups.
Click the Settings icon in the navigation bar and select User Groups from the left menu to open the User
Groups page.
The User Groups page shows a list of existing groups and the number of members in each. Clicking the
column headers will re-sort the list.
61
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
For more information on managing user groups, see the following topics.
1. Click the Settings icon in the navigation bar and select User Groups from the left menu.
This page shows a list of existing groups and the number of members in each.
2. Use the filter field to search for a specific user group or click the column header to re-sort the list.
1. Click the Settings icon in the navigation bar and select User Groups from the left menu.
62
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
3. Enter a group name and select group members from the list.
4. (Optional) Select a "Parent Group" to create a nested group.
5. Click Save.
1. Click the Settings icon in the navigation bar and select User Groups from the left menu.
63
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select User Groups from the left menu.
64
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
2. Click the dropdown configuration icon and select Edit Group Settings.
65
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select User Groups from the left menu.
66
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: To take advantage of LDAP with User Groups, there must be a valid LDAP configuration in the
Software Risk Manager properties file. For more information, see the SRM Install Guide.
This feature may be presented when LDAP is configured but is only compatible with providers that create a
user attribute containing group membership for SRM to check, such as Active Directory.
To manage mapping of LDAP groups to SRM user groups, pick the LDAP Config option from the group's
config menu.
From here, you can enter a comma-separated list of LDAP group names.
The names for your LDAP groups are pulled from the DN path attribute specified in the SRM properties
file. For more information, see LDAP group mapping in the SRM Install Guide.
When an LDAP user signs in, their LDAP groups will be checked against your mappings configured on this
page. The user will be added to the SRM group if they are a member of any of the listed LDAP groups;
otherwise, they will be removed.
If users are added or removed from an LDAP group, their membership will not be updated until they sign
out and back in. You can force a manual refresh of all group's LDAP members by clicking the "Refresh"
button on this page.
67
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: If the LDAP Group Names textbox is empty, a membership refresh will have no effect on that
group.
Triage settings associated with findings can be changed by users with an admin or manage role. Users
who are unable to change the triage status directly can submit a change for approval. Admins can
configure the triage workflow from the Settings menu and define what users are allowed to do by
configuring user roles. Requests for changing triage status can be approved by admins.
Click the Settings icon in the navigation bar and select Triage Approval Workflow from the left menu to
open the configuration page.
• No triage approval workflow. Select this option to restrict the ability to change status to admins and
users with "update" or "manage" roles.
• Enabled triage approval workflow for all projects. Select this option to enable the approval workflow for
all current and future projects.
• Enable triage approval workflow, but allow it to be configured at the Project level. Select this option to
enable the workflow option on a project level.
Use the radio buttons to select an option. The selection will be saved automatically.
68
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
For more information on changing the status of a finding, see the Change Status section.
1. Click the Settings icon in the navigation bar and select Triage Approval Workflow from the left menu to
open the configuration page.
2. Select the "Enable triage approval workflow for all projects" to include all projects.
1. Click the Settings icon in the navigation bar and select Triage Approval Workflow from the left menu to
open the configuration page.
2. Select the "Enable triage approval workflow for all projects" to include all projects, or select "Enable
triage approval workflow, but allow it to be configured at the Project level" for individual projects.
3. Open the Projects page, click the project's dropdown configuration icon, and select Triage Approval
Config.
69
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
5. Click Save.
70
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The Manual Entry Configuration page allows Software Risk Manager administrators to define custom
values which can be entered into certain fields in the Manual Results.
Click the Settings icon in the navigation bar and select Manual Entry Configuration from the left menu to
open the Manual Entry Configuration page.
71
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
This page displays a list of existing detection methods and allowed tools. From here, you can add, delete,
or rename detection methods, and add or remove allowed tools.
For more information on detection methods and allowed tools, see the following topics:
72
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
These built-in detection methods reflect the types of tools currently supported by Software Risk Manager.
For manual entry, you may wish to specify your own custom detection methods.
1. Click the Settings icon from the navigation bar and select Manual Entry Config from the left menu.
73
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon from the navigation bar and select Manual Entry Config from the left menu.
74
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
2. Click the dropdown configuration icon to the right of the detection method and select Rename.
75
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon from the navigation bar and select Manual Entry Config from the left menu.
76
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
77
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Unlike the Detection Methods delete, you don't need to pick a replacement to delete an item in this
list; this list only controls which tools are available when creating a new manual result, not which tools
exist.
1. Click the Settings icon from the navigation bar and select Manual Entry Config from the left menu.
78
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
79
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
4. Click Save.
1. Click the Settings icon from the navigation bar and select Manual Entry Config from the left menu.
2. Click the dropdown configuration icon to the right of the allowed tool and select Delete.
80
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Triage Assistant
If machine learning is enabled, Software Risk Manager is capable of automatically (re)training a prediction
model so that it does not have to be done manually. The ML Service Management section will
automatically transition from an Idle state to a Working state when Software Risk Manager automatically
initiates a training session. Whether automatic updates of the prediction model occur at all, and the time at
which they occur, are configurable through the SRM props file (see the Install Guide for more information.)
Click the Settings icon in the navigation bar and select Machine Learning (ML) Control Panel from the top
menu to open the Machine Learning Control Panel page.
• Configure Machine Learning for Predicted Status. This part involves switching on the service
management and retraining the prediction model.
81
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Identify projects that may be outliers for the predicted status. This part involves adding exclusions.
When ML Service Management is off, Software Risk Manager will begin training a prediction model when
the Retrain Prediction Model button is clicked. This will transition the section into a On state.
Once training has completed, the section will transition back to an Idle state and will present the user with
when the last training session completed, how long it took, and whether or not it succeeded.
Managing Exclusions
The Excluded Projects section allows admins to configure which projects should not be considered when
Software Risk Manager trains a prediction model. All excluded projects are listed.
1. Click the Settings icon in the navigation bar and select Machine Learning (ML) Control Panel from the
top menu.
82
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
2. Use the search field to search by name or click the column header to re-sort the list.
Adding an Exclusion
Adding exclusions will exclude the selected project from prediction models that Software Risk Manager
trains.
To add an exclusion:
1. Click the Settings icon in the navigation bar and select Machine Learning (ML) Control Panel from the
top menu.
83
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
3. Select from the list of exclusions or use the search field to search by name.
4. Click Add Exclusion.
Removing an Exclusion
You can also choose to re-include an excluded project so that it may be considered during training by
removing it.
To remove an exclusion:
1. Click the Settings icon in the navigation bar and select Machine Learning (ML) Control Panel from the
top menu.
84
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
3. Click Remove.
Use the "Polaris Assist (Beta)" tab on the Settings page to configure and enable Polaris Assist. SRM uses
Azure OpenAI APIs, namely the Chat Completion API, and the Azure OpenAI URL must refer to a service
which exposes this endpoint.
Warning: Polaris Assist generates results created by artificial intelligence (AI) or other automated
technologies. Such results are provided for informational purposes only and should not be relied upon for
any specific purpose without verification of its accuracy or completeness.
SRM will use the model gpt-4o in its requests, which requires that a model with that name be available in
the provided API.
Note: The model gpt-4o is the default. To change this model, see Polaris Assist in the Install Guide.
Enter your Azure OpenAI URL and API Key, then click Test Connection. Use the checkbox to enable
Polaris Assist.
85
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The "Test Connection" button will perform a test request using the configured model-id.
For more information on configuring Polaris Assist and AI Insight, please refer to the Install Guide.
Add-In Tools
An add-in tool is based on a scan request file that you define and register with Software Risk Manager. A
scan request file contains the instructions that the tool service needs to invoke an application security
testing tool on a Kubernetes cluster and ingest its output into Software Risk Manager.
The Add-In Tools section appears when the Tool Orchestration Service is enabled. (See Tool Orchestration
in the Software Risk Manager Install Guide for instructions on how to enable this feature.)
Click the Settings icon in the navigation bar and select Add-In Tools from the top menu to open the Add-In
tools page.
The Add-In Tools page allows you to manage the list of application security testing tools that can run on
your cluster.
Add-In tools must be enabled on a per-project basis, and a registered tool starts in a disabled state. See
the Customize Add-In Tools section to learn how to enable a tool for a specific project. You can also use
the Default enabled toggle to enable a tool for every project, excluding those where it was explicitly
disabled. Avoid enabling tools by default when they include project-based settings.
Some add-in tools, such as DAST tools, do not require an analysis input. Software Risk Manager will offer
to run them with each new analysis. Others require an input file, and Software Risk Manager will scan a file
to build a list of tags describing its contents. Tool registration data lets Software Risk Manager select
appropriate add-in tools to run.
86
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The Matched Tags section lets you associate content tags with an add-in tool. Select the Tag type and
specify the associated criteria for the content tag. For Language, Runtime, and Meta, select from the
options in the dropdown menu. For Extensions, specify any number of extensions to associate with the
add-in tool as either a comma or space-delimited list (e.g., zip, msi, pkg or just zip). Click Add Tag to
link a tool with a content type.
The Language and Runtime tags are detected based on the presence of files with the appropriate
extension for the language or runtime. The Meta tags are based on the presence of other files:
This list shows all the existing add-in tools along with information about how many tags have been
assigned and whether the tool has been enabled.
87
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select Add-In Tools from the left menu.
88
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select Add-In Tools from the left menu.
89
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
90
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Tags are part of a project's metadata, which can be configured by users with a "manage" role. (For more
information, see Configuring Project Metadata.)
Click the Settings icon in the navigation bar and select Tags from the left menu to open the Tags page.
This page lists all tags (alongside the number of findings to which each tag has been assigned) that can be
assigned to findings.
For more information, see the following topics:
91
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select Tags from the left menu.
Adding a Tag
To add a tag:
1. Click the Settings icon in the navigation bar and select Tags from the left menu.
92
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Renaming a Tag
Note: If you attempt to rename a tag to a name that already belongs to a tag that has been assigned to
at least one finding, then you will be prompted with a dialog asking you to confirm the operation. If you
confirm the operation, then the tag will be renamed, and the finding assignments between the involved
tags will be merged. Note that the number of assignments is not necessarily equal to the sum of the
finding assignments between tags once they have been merged, as it is possible for tags to have
overlapping finding assignments. If you do not confirm the operation, then the operation will be cancelled.
To rename a tag:
1. Click the Settings icon in the navigation bar and select Tags from the left menu.
93
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
2. Click the dropdown configuration icon to the right of the tag name and select Rename.
Deleting a Tag
Note: If you attempt to delete a tag which has been assigned to at least one finding, then you will be
prompted with a dialog asking you to confirm the operation. If you confirm the operation, then the tag will
be deleted and, as a consequence, the tag will be unassigned from all findings to which the tag had been
94
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
assigned. If you do not confirm the operation, the operation will be cancelled.
To delete a tag:
1. Click the Settings icon in the navigation bar and select Tags from the left menu.
Server Logs
95
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The Server Logs page displays the contents of the Web App log, which includes details related to analysis
progress, user changes, issue tracker updates, and warnings and errors. The Web App log can be useful
in troubleshooting issues within Software Risk Manager as well as providing context when creating a
support ticket.
Click the Settings icon in the navigation bar and select Server Logs from the top menu to open the Server
Logs page.
Software Risk Manager maintains additional log files that provide detailed information about runtime
operations for various other tools bundled with Software Risk Manager. These files are located in the log-
files folder in the Software Risk Manager appdata directory.
(For more information about the appdata directory, see "Understanding the AppData Directory" in the
Software Risk Manager Install Guide.)
1. Click the settings icon in the navigation bar and select Server Logs from the left menu.
96
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
License Information
The License page provides information pertaining to the current SRM license and includes an option for
upgrading your license.
Click the Settings icon in the navigation bar and select License from the left menu to open the License
page.
97
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
In addition to the SRM license ID, the following information is also displayed:
Roles
Roles enable users to interact with SRM in ways permitted by the set of permissions included in their
definition. Role definitions can be viewed, edited, and created on the Roles page.
Click the Settings icon in the navigation bar and select Roles from the left menu to open the Roles page.
98
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
This page displays both Global Roles and Project Roles. SRM comes preconfigured with a collection of
built-in roles, each of which is denoted by a padlock symbol next to its name.
Built-in roles can only be viewed, while all other roles can be edited, deleted, and replaced. Only custom
project roles can be created.
View Role
A built-in role's name and its set of associated permissions can be viewed on the Roles page.
To view a role's definition:
1. Click the Settings icon in the navigation bar and select Roles from the left menu.
2. Open the context menu for the role and select the View Role option.
99
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Edit Role
A custom project role's name and its associated set of permissions can be edited on the Roles page.
To edit a custom project role's definition:
1. Click the Settings icon in the navigation bar and select Roles from the left menu.
2. Open the context menu for the role and select the Edit Role option.
100
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
3. Review the role's name and set of associated permissions and make changes as necessary.
Note: Role names are unique. An error will be presented in the event that a role's name is changed
to one that already exists.
4. To save the changes made, click Save, otherwise click Cancel to discard them.
Delete Role
Custom project roles can be deleted on the Roles page.
To delete a custom project role:
1. Click the Settings icon in the navigation bar and select Roles from the left menu.
2. Open the context menu for the role and select the Delete Role option.
101
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
3. If the role to be deleted has been assigned to users or user groups, a replacement can be selected by
checking the "Reassign all..." checkbox and then selecting a replacement role.
1. Click the Settings icon in the navigation bar and select Roles from the left menu.
2. Open the context menu for the role and select the "Reassign Users and User Groups to Another Role."
Note: The "Reassign Users and User Groups to Another Role" context menu option will be disabled
if the role is not assigned to an users or user groups.
102
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Settings icon in the navigation bar and select Roles from the left menu.
2. Click on the New Custom Role button in the Project Roles section of the Roles page and choose to
base the new role on an existing one or to build the new role from scratch.
103
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Role names are unique. An error will be presented in the event that a role is attempted to be
created with a name that already exists.
4. To create the new custom role, click Save, otherwise click Cancel.
For more information on how to assign roles, see the following topics:
Before you can run an analysis on a file, you need to create a project. Once projects are configured, which
includes policy associations, tool configurations, analysis settings, and so on, you can add files for
analysis. SRM analyzes the files in that project and creates findings that can be viewed on the Findings
page.
When working with projects, it's important to understand the following terms:
104
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Click the Project icon in the navigation bar to open the Projects page.
105
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Project name and branch. This includes the project name, child projects, and associated branch. A
paperclip "attachment" icon signifies that the project has linked attachments. (Clicking the icon displays
the Attachments page with its list of attached files.)
2. Analysis information. Shows the current number of findings, when the last analysis was completed,
and how long the analysis took to complete. Click the Findings link to open the project's Findings page.
3. Policy information. This includes an icon next to the project name to indicate policy violation status, a
tally of how many violations in each status category, and how many policies are associated with this
project.
106
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
4. Task options. Click the dropdown configuration icon for a list of configuration options.
1. Click the Project icon in the navigation bar to open the Projects page.
2. Click the dropdown configuration icon for the desired project and select Attachments.
3. Use "drag-and-drop" to add a file or click Add Attachment.
New files will be displayed in the attachment list, which includes the file name, file size, type, who
attached the file, and when the file was added.
107
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Project icon in the navigation bar to open the Projects page.
2. Locate the desired project and click the Findings link.
108
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Filters can make it easier to find a specific project without having to scroll through the entire project list.
Click the Projects icon in the navigation bar to open the Projects page. The Filter field is located at the top
of the page on the right side.
109
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
If the project includes metadata, advanced filters are available by clicking the filter icon next to the Add
Project button.
Filtering Projects
To filter the project list:
1. Click the Projects icon in the navigation bar to open the Projects page.
2. Enter a search term in the filter projects field and the list will filter automatically.
Use the "x" to clear the search field.
3. (For projects including metadata) Click the Filter icon to open the advanced filter options.
110
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Adding a Project
1. Click the Projects icon in navigation bar to open the Projects page.
111
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Project Branches
A Branch is a unique line of development containing a collection of scans over time. Each project contains
at least one branch.
New branches can only be created by running an analysis. When creating a new branch for an analysis, a
parent branch needs to be chosen. Conceptually, this represents the development line that this new
branch was forked from. The new branch will be created by cloning the Findings and Results from the
chosen parent branch, and then running the new analysis. The newly created branch will have the same
contents as if the analysis had been run on the parent branch. However, since this is a new branch, the
parent branch will be left untouched, and thus the two branches will be able to be tracked independently of
each other over time.
The Branch Management page is used to manage the branches for a project and is accessible by users
with the manage role.
Click the Projects icon in the navigation bar, then click the project's dropdown configuration icon and select
Manage Branches.
From the Manage Branches page, you can view all branch hierarchies for a project as well as rename and
delete individual branches. To navigate to a project's Branch Management page, click the project's
dropdown configuration icon and select Manage Branches.
When viewing the finding and result information for a branch, a contextualized view of that information is
given. Some information is shared globally across all branches containing the finding, while other
information may differ based on the branch.
Globally shared finding information will be visible on every branch where that finding is present and will not
change based on which branch is being viewed.
Information that is global includes the following:
112
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Tags
Contextual information will be tailored to the selected branch. Contextual information includes the
following:
• Finding Status. Each branch includes a finding status, which includes "new," "existing," and "gone."
• Severity Override. Each branch has its own severity override for each finding.
• Associated Results. Different results may be present on each branch, depending on the analyses
performed.
• Location. Note that line numbers may differ between branches.
• Source Code. Source code mapping will be based on the latest copy of source code uploaded for the
branch.
The Activity Stream will be tailored for the branch that is being viewed and will include the global
information as well as the contextual information (listed above) that is relevant to the branch. Contextual
information is inherited from the parent branch at the time the branch is created. After the analysis for a
new branch begins, any changes to the parent branch will diverge from the new branch and will not be
visible in the child branch.
Project Groups
Projects may be repositioned in a hierarchy, where one project may become the parent (or group)
containing another project.
Once you move one or more projects into a parent project, the parent project can be considered as a
"project group." The Projects page displays project groups as a summary of all findings for all projects in
that group, including the group project itself.
Note: A project group is still a project, and can still have findings of its own. The summary of findings
specific to the parent project will appear above the child projects when you expand the group. There is no
inherent limit to how deeply-nested projects can be. A child project can have its own child projects, and
so on.
Before files can be analyzed, the project needs to be configured for an analysis. Configuration settings
include auto-archiving, hybrid analysis, rule set associations, and so forth.
To configure a project analysis:
1. Click the Project icon in the navigation bar to open the Projects page.
2. Select a project and click the project's dropdown configuration icon and select Analysis Config.
3. Refer to the information below to complete each section.
113
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Archive (change status to gone) findings not seen in subsequent tool inputs from the same tool
As files are analyzed with Software Risk Manager, each one is remembered as an analysis input. As
more and more analyses are performed, the number of analysis inputs can become very large. The
Auto-Archival setting controls how old analysis inputs are handled.
By default, auto-archival is enabled. As new inputs are analyzed, old inputs of the same type will be
archived. For example, two analyses are performed in series on a project, both supplying a SpotBugs
results file. In this scenario, the SpotBugs results file provided for the second analysis is perceived as
"newer," so it will replace the SpotBugs results from the first analysis. The analysis input for SpotBugs
results in the first analysis will be archived. Any findings that were present in the first file but not the
second will have their statuses changed to Gone as a part of this process.
114
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
With auto-archival disabled, the two SpotBugs result files will both remain present. This can be useful if
you wish to provide one SpotBugs results file for a part of your application, but a different SpotBugs
results file for a different part of your application. Both files may be analyzed without interfering with
each other. However, keep in mind that without manual management of the analysis inputs, inputs will
begin to pile up, potentially degrading the performance of filters and other interactions. Note: You can
manually archive old inputs from the Analysis Inputs List.
• Allow gone findings to be reopened
If the Allow gone findings to be reopened option is checked, then findings will be reused and have their
status set to Reopened if they reappear later at the same location. With this option disabled, a new
finding will be created instead.
• Reopen resolved findings when updated
If the Reopen resolved findings when updated option is checked, then findings set to a resolved status
(i.e., Ignored, False Positive, Fixed, Mitigated) will have their status changed to Reopened if new data
is brought in from a tool (not matching previously seen data). Findings set to Fixed will be changed to
Reopened if reported, regardless of if the data is new or not (since this signals that the issue has not
been fixed).
115
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Modes control how Software Component Analysis (SCA) tool results are correlated to findings (for more
information, see Understanding Component Correlation). The options are as follows:
• vulnerability, component name/version, and type
• vulnerability, component identifier, and type
• component identifier and type
• component name/version and type
• vulnerability and type
• Exclude host when correlating infrastructure security-related findings
If the Exclude host option is checked, then host information will be excluded from the correlation criteria
when processing security-related findings. This will produce one finding with tool results from all hosts
for each applicable rule. When this option is not checked, one finding will be produced for each host for
each applicable rule.
By default, new projects will use the built-in "Software Risk Manager Rules" set. The "Don't use any Rules"
option is available if you don't want tool results to be mapped to rules. More information on Rule Sets can
be found in the Rule Sets section of this guide.
Users with the admin role can use this section to manage Rule Sets by creating, cloning, or deleting them.
Click the dropdown configuration icon to open, copy, or delete the Rule Set.
Adding a Rule Set using the Add button will initialize a blank Rule Set.
A cloned Rule Set will be initialized as a copy of the "parent" set. This can be useful if you want one project
to use mostly the same correlation logic, but with a few alterations from another project. Note that the
default Software Risk Manager Rules set is read-only.
To make modifications to a rule set, you need to create a clone first. Click the dropdown configuration icon
116
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
and select Copy to create a clone, then make modifications to the clone.
To view or modify an existing Rule Set, click the dropdown configuration icon and select Open.
Reminder: When making changes in the Analysis Configuration window, make sure to click OK to save
any changes.
Reminder 2: Since a project's configured Rule Set determines the manner in which results are correlated,
changing that configuration necessitates an update of the correlation. This happens when the configured
Rule Set for a project is modified in any way, or if the Analysis Configuration is changed to use a different
Rule Set. When this happens, the Findings page will display a notification prompting users to do so.
Note: This section is only applicable to Software Risk Manager users with the InfraSec add-on.
Host Scopes are sets of projects that share host information with each other. They allow the Host
Normalization process to determine which hosts are actually the same hosts within a Host Scope.
Selecting any of the Host Scopes in the associations list will associate the current project with that Host
Scope, which implies that the current project's host information belongs to the selected Host Scope. Click
the Manage Host Scopes link to open the Hosts page.
117
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The two Input Content Rule sections in the Analysis Configuration window share a common format. Each
row represents a rule, where files matching that rule's pattern will be subject to the decision chosen from
its respective dropdown menu. Later rules (further down the list) take precedence over earlier rules. The
first rule will always use ** as its pattern, since it is the fallback for all zip entries. Its pattern may not be
changed, but its decision may be changed. The patterns must be Glob Patterns, e.g., **.java matches
any .java file in any folder. Patterns should use forward slashes (/) to denote directories instead of
backslashes (\), even on Windows.
The / button at the right of the pattern input can be clicked to add a nested pattern that will apply to files
nested in a zip-like file matched by the first pattern. For example, in a project where a .war file is typically
uploaded, you could configure a pattern to match a particular .jar file inside that .war file, then click the
/ button to configure a pattern to match certain .class files inside that particular .jar. To undo adding a
nested pattern, mouse over the > icon to the left of its text input. The icon will become a delete button,
which can be clicked to remove the nested pattern.
To remove an entire rule, click the (-) icon to the right of the rule.
118
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Schedule Analyses
You can set your project to schedule an analysis for its Tool Orchestration, Tool Connectors, and Git
configurations. Scheduling intervals include hours and minutes, number of days with a specified time of
day, and number of weeks with a specified day and time. Click the checkbox "Automatically run an
analysis," then use the radio buttons to select how often to run the analysis. Click Save to keep your
settings.
1. From the Projects page, click a project's dropdown configuration icon and select Tool Connectors.
2. The Tool Connectors window shows your existing tool connectors. Click the add icon (+) for each tool
connector that you want to include in every analysis.
3. Check Run this connector during normal analyses. This will let the tool connector run during an
analysis.
During an analysis, tool results are identified by a tool result type, which is a combination of the tool's
name, any number of "groupings" (e.g., categories), and a name. The Tool Configuration page allows
users with the manage role on a project to enable and disable tool result types for that project. Results
whose tool result types are disabled by configuration will be ignored during an analysis.
Click the Projects icon in the navigation bar to open the Projects page, then click the Project's dropdown
119
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Any changes made on this page are project-wide, impacting all users of the project.
Software Risk Manager comes with a large set of predefined tool result types, based on the results
generated by a collection of open-source tools. When Software Risk Manager encounters a new type of
120
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
tool result, it will create a corresponding entry based on the result's raw tool code. These entries are
referred to as "observed," and are marked with an eye icon.
If a change to the tool configuration would cause existing tool results to be disabled, it does not
immediately remove those results. Instead a notification will appear, indicating the number of results that
would be affected, prompting the user to purge those results. Clicking the Purge button in the notification
will remove any tool results that still exist despite being disabled. Doing so is highly recommended, as
having fewer tool results will improve the performance and responsiveness of Software Risk Manager. If
you do not purge disabled tool results, they will remain present in the project and will continue to appear in
filters and affect future analyses.
Tool Connectors allow Software Risk Manager to pull results directly from external tools without manually
exporting the results from those tools and uploading them. Software Risk Manager provides tool
connectors for a variety of app-sec tools. For a complete list, click here.
Note: Users with the manage role need only configure a connection to their tools once.
The Tool Connectors window for a project can be accessed from the project's dropdown configuration icon
on the Projects page.
This window shows any tool connectors that have already been added, along with any tool connectors
configured via central configuration, as well as a list of available tool connectors.
121
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Connection tab
• Tool-Specific Fields. To connect to a tool's API, SRM requires valid credentials for that tool.
Different tools will require different fields; however, typically there will be a URL in combination with
user authentication, such as a username/password combination or API Token.
• Project tab
• Project (or similar). Different tools may use different terminology, such as Build or Application. This
field is used to tell Software Risk Manager which of the tool's projects to pull from. This tab will be
disabled until valid credentials have been entered.
• Version tab
122
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Target SRM Branch. This specifies the name of an SRM branch that the user wants to run analyses
with the selected tool connector.
• Derive version information based on SRM branch name during analysis. This checkbox, when
available, disables other fields from the integration. For example, if there was a "branch" dropdown
from the integration, and you selected this checkbox, the "branch" dropdown would be disabled.
This allows SRM to determine the rest of the configuration based on the SRM branch where you are
running the analysis.
• Fields defined by the integration.
• Options tab
• Available options depend on the specific tool connector.
• Schedule tab
• Auto-update. Selecting Auto-update along with one of the options below it tells Software Risk
Manager to automatically perform an analysis using the configured connector at a regular interval.
Selecting the first option will tell Software Risk Manager to auto-update at a fixed time interval, e.g.,
every 12 hours. Selecting the second option will tell Software Risk Manager to auto-update at a
specified time each day.
• Run this connector during normal analyses. This selection will cause the tool connector to
appear on the New Analysis page as if it were a bundled tool, allowing the tool connector to run
during a normal analysis, alongside any other files you might want to upload for analysis.
Note: Credentials entered for tool connector configurations will be stored (encrypted, but still reversible)
by Software Risk Manager. For added security, it is recommended that users create one-off accounts in a
tool, with the sole purpose of connecting Software Risk Manager to that tool.
Some tools support a "branch" abstraction (though each tool may have its own name for it, such as
"Stream" or "Version"), allowing you to choose different incarnations of a selected project. When supported
by Software Risk Manager, the corresponding field in that tool's connector config form will include a
checkbox that allows you to opt in to sync that tool's "branch" with a corresponding Software Risk Manager
Branch. The sync setting affects the auto-update behavior of the tool connector, as well as setting the
default behavior of the Run Now form when you manually run the tool connector. When enabled, Software
Risk Manager will try to run the tool connector on a Software Risk Manager Branch whose name
corresponds to the selected value in the tool connector configuration dropdown.
Once all of the fields are completed, click OK to save the configuration and return to the connectors list.
Each configured connector has three buttons:
• Run Now. This can be used to start an analysis using a particular tool connector. This process is
independent of the auto-update setting: it can be done regardless of whether or not the connector is
configured to auto-update and will not interrupt the auto-update schedule. Users with the create role
(specifically, the project:manage-tool-connectors and analysis:create permissions) for the
project will be able to interact with this button.
• Edit. This reopens the configuration form for an individual tool connector. Only users with the manage
role will be able to interact with this button.
• Delete. This deletes an individual tool connector. Only users with the manage role (specifically, the
project:manage-tool-connectors permission) will be able to interact with this button.
After clicking Run Now in the list of configured connectors, a form will appear, allowing you to choose the
123
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Software Risk Manager Branch in which the analysis will be run. If you configured one of your tool
connector's fields to sync with a Software Risk Manager Branch, the form will default to the corresponding
branch. If the configured sync target branch does not exist, you must also select a parent branch so that
Software Risk Manager can create a new branch, forked from your selected parent branch, to correspond
with the sync target from your connector configuration. Once you complete the branch selection in the
form, submit it by clicking Run Now. This will initiate a new analysis to run the connector in the
background, close the Tool Connectors dialog, and display a notification.
Qualys VM Tool Connector and Scheduling Auto Update
For more information, see the following sections:
Tool Connectors allow Software Risk Manager to pull results directly from external tools, without the
manual work of exporting the results from those tools and uploading the results into Software Risk
Manager. Users with the manage role can configure a connection to their tools one time and have
Software Risk Manager take care of the rest.
Software Risk Manager currently provides connectors for the following tools:
• 42Crunch
• Aqua Enterprise
• Acunetix 360
• APIsec
• AWS Security Hub
• Black Duck SCA
• Black Duck Binary Analysis
• Burp Enterprise
• Check Point CloudGuard
• Checkmarx
• Checkmarx One
• Checkmarx-IAST
• Checkmarx OSA
• CodeSonar
• Contrast
• Coverity Connect
• Coverity on Polaris
• Data Theorem Mobile Secure
• DefenseCode ThunderScan
• Dependency-Track
• Dynatrace
• Faraday
• Fortify Software Security Center
• GitHub Advanced Security
124
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: The GitHub Advanced Security tool connector requires the user associated with the access
token to have permission to access the repositories, scopes public_repo for Dependabot and/or
scopes security_events for Code Scanning.
• Hacker One
• HCL AppScan Enterprise
• HCL AppScan on Cloud (ASoC)
• Imperva
• Invicti Enterprise (formerly Netsparker Enterprise)
• IriusRisk
• JFrog Xray
Note: The JFrog Xray tool connector requires the user associated with the access token to have the
"Manage Reports" role.
• Mend
• Microsoft Defender For Cloud
• NeuVector
• NowSecure
• Orca Security
Note: The Orca Security connector requires an API token with the following permissions:
• Authorization - Integration API tokens Read
• Shift Left - CLI (All)
• Shift Left - Scan Logs (All)
• Shift Left - Projects Read
Note: The Rapid7 InsightAppSec tool connector requires the user associated with the access token to
have the "InsightAppSec Admin" role.
• Rapid7 InsightVM
• SD Elements
• Seeker
125
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: The Seeker tool connector requires an API key with "Manage Projects," "View Reports," and
"View Vulnerabilities" permissions.
• Semgrep
• Snyk
• SonarQube/SonarCloud
• Sonatype Nexus
• Black Duck Managed Services Platform
• Tenable.io
• Tenable.sc
• Tenable.io Web App Scanning
• Tinfoil API
• Tinfoil Web
• Trustwave App Scanner
• Veracode
• WhiteHat
• Wiz
Note: This section is only applicable to Software Risk Manager users with the InfraSec add-on.
The Qualys VM connector has two unique form configurations to choose from. The default form
configuration has customization options including severity types, Asset Group Titles, IP Ranges, and
Include findings last seen field. Include findings last seen is a required field and determines how far back to
consider vulnerabilities that will be pulled into Software Risk Manager. Asset Group Titles and IP Ranges
are optional fields and act as filters. For example, if you provide an IP range, only that information will be
pulled into Software Risk Manager. Additionally, if both fields are left blank, all vulnerability information in
Qualys will be pulled into Software Risk Manager. Multiple IPs can be specified by separating them with a
comma, and IP ranges can be specified by separating them with a hyphen.
To access the second form configuration, select the Import data using a Report Template option. This form
will present you with a Report Template dropdown and Check on report every field. Both fields are required
for this configuration. The Check on report every field determines how often Software Risk Manager will
interface with Qualys to get the status of the report being analyzed. The Report Template dropdown is
populated with report templates that have been configured for your Qualys VM subscription. Software Risk
Manager will request that Qualys generate a report using the selected report template; once the report has
been generated, it will be imported into Software Risk Manager.
126
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Projects icon in the navigation bar to open the Projects page.
2. Click the Project's dropdown configuration icon and select Tool Connectors.
3. Select a tool connector, then click the dropdown configuration icon and select Edit.
• To choose a daily time to update, select Every day at and fill in the time of day to run the analysis.
• To choose a specific schedule to update, select Every and enter the number of analyses to run and
the time frame (minutes, hours, days).
4. Select Run this connector during normal analyses if you want your tool connector to run during a
scheduled analysis.
127
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: If you configured one of your tool connector's fields to sync with a Software Risk Manager branch
which does not yet exist, the connector will not be able to run. This will be indicated with a warning icon
next to the tool connector's name in the list of configured tool connectors. The appropriate Software Risk
Manager branch can be created by running a normal analysis or by clicking the Run Now button and
submitting the subsequent form. Once the appropriate Software Risk Manager branch has been created,
auto-update can continue.
Software Risk Manager can be used to analyze code stored in a Git repository.
1. Click the Projects icon in the navigation bar to open the Projects page.
2. Click the project's dropdown configuration icon and select Git Config.
3. Enter the Repository URL and branch name.
4. If the repository requires credentials to access, click Use Credentials and enter the credentials.
5. Click Test Configuration to validate the configuration.
6. Click Ok to save the configuration.
The Git Configuration popup will appear.
The form inside is used to tell Software Risk Manager to use a Git repository as the subject of analysis for
this project. Once configured, Software Risk Manager will automatically include the contents of the
configured repository as an input for each analysis with this project.
The Git Configuration window has two fields: Repository URL and Branch. The Repository URL should be
filled out with the URL that you would use to clone the repository. The Branch field should be filled with the
name of the branch in that repository that you want Software Risk Manager to analyze. By default, the
branch is set to "main", which is the main branch for most Git repositories.
For many projects, setting up a Git configuration is as easy as copying the repository's URL into the text
128
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
field and clicking Test Configuration. For example, if you wanted to analyze the contents of the open-
source WebGoat repository, you would find the clone URL on the side of the GitHub repository page, then
copy it into the Repository URL field in the Git Configuration window.
Software Risk Manager will verify the repository's existence and determine whether it needs credentials to
connect. Click Ok to save and close the form.
Note: For public (open-source) repositories, credentials are not required. However, if credentials are
required, see Working with Git Credentials for more information on how to manage credentials.
Once you have entered a URL and branch, and entered whatever credentials are necessary, click Ok to
save the configuration. Doing so will close the window and tell Software Risk Manager to obtain a local
clone of the configured repository. Depending on the size of the repository, the length of its history, and
your network connection, the clone operation may take anywhere from seconds to hours. Once started, a
progress bar will be displayed underneath the project's title on the Projects page.
129
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The "cloning" job has several subtasks, so you will see the progress bar fill up several times. When the job
is complete, the progress bar will turn blue, remain for a couple of seconds, then slide out of view.
Once the clone is ready, the New Analysis page will automatically include the latest contents of the
configured branch of the configured repository as an input. See the Analysis Overview section for more
detail.
HTTP Credentials
HTTP credentials consist of a username and password. For GitHub repositories, these will generally be
your GitHub account name and password. GitHub also supports creating "Personal access tokens," which
can be used in place of a password.
SSH Credentials
SSH uses a pair of files known together as a "keypair," or separately as a "private key" and "public key."
For Software Risk Manager to connect to a repository through SSH, it needs your private key. The system
in charge of the repository's security will also need your public key.
If you are trying to access a private GitHub repository, visit your SSH Keys page at https://github.com/
settings/ssh to register your SSH key with GitHub. GitHub also provides help with SSH-related issues at
https://help.github.com/categories/ssh/.
Some users will already have an SSH keypair on their computer. The two files are generally located in
<userhome>/.ssh/ and will be named id_rsa for the private key and id_rsa.pub for the public key. It
is possible to use this pair, but you may want to generate a separate pair for use with Software Risk
130
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Manager.
Once you have located or generated a keypair, copy the contents of the private key file into the Private Key
field.
When generating a keypair, you have the option to provide a passphrase for the private key. If you do this,
Software Risk Manager will need that passphrase to use your private key. Enter it in the Key Passphrase
field.
Software Risk Manager allows you to associate findings with issues or work items in an issue tracker,
either by creating a new issue or work item, or by identifying an existing issue or work item.
Software Risk Manager currently supports the following issue trackers:
• Azure DevOps (requires "Read" permission for "Graph" and "Project & Team" scopes, and "Read,
Write, Manage" permissions for "Work Items" scope)
• GitLab (requires "api" access token scope)
• Jira (requires "Browse projects" project permission, "issue-level security" permission if issue-level
security is configured, and the "read:jira-work" OAuth scope if using OAuth)
• ServiceNow
• GitHub and GitHub Enterprise (requires "repo" access token scope)
131
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Projects icon in the navigation bar to open the Projects page.
2. Click the project's dropdown configuration icon and select Issue Tracker Config.
3. Enter the URL for your Issue Tracker server (including the "http://" or "https://"—even if you're using an
IP address) as well as the credentials required for the user in whose name the issues or work items
will be created.
4. Click Verify.
Software Risk Manager will connect with the server and retrieve a list of projects the user can access.
5. Select the project you want to use from the dropdown menu.
Software Risk Manager will periodically query the issue tracker server to refresh the status for all of the
issues or work items associated with a given project. The Refresh Interval specifies the number of
minutes between refreshes (the default is 60 minutes).
132
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
When creating an issue or work item from Software Risk Manager, several standard fields are provided
(e.g., summary, description). However, many issue trackers provide more than just a few fields for issues
or work items and can be configured to require these additional fields when creating an issue or work item.
Issue trackers can also allow the creation of custom fields on a per-project or per-server basis. Software
Risk Manager provides for this situation through "Advanced Fields." Jira users should note that while
Software Risk Manager supports all of Jira's "Standard" custom fields as well as many of Jira's "Advanced"
custom fields, some are implemented via third-party plugins and are not fully supported. These fields will
still appear and can be used if the correct format is known, but they should be left empty otherwise.
You can create template expressions for any of the available fields when creating an issue or work item for
the configured issue tracker server. These expressions will be applied to the relevant Software Risk
Manager finding (or findings) when you create an issue or work item, which allows Software Risk Manager
to pre-populate the field with data from the finding, according to your specification. More technical users
should be advised that the template language is the JavaScript Handlebars library and that all of the
template expressions are Handlebars Expressions.
Software Risk Manager will use its own default values for the Summary (Jira), Title (Azure DevOps,
GitLab), Short Description (ServiceNow), Description and Due Date (Azure DevOps, GitLab, Jira,
ServiceNow) fields if none are specified.
Note: Users should note that by default, the Due Date fields are based on the Software Risk Manager
finding Fix By Date. The finding Fix By Date value is just a date; some issue trackers like Azure DevOps
and ServiceNow also expect a time component in the Due Date value. So, SRM sends its local midnight
as the time component value for these trackers, which may be rendered differently on the respective UI
depending on the instance's timezone settings.
Users should also note that because fields can be given template expressions, which won't be evaluated
until a finding is available, the validation that can be done on the fields is limited. The issue tracker field
mappings are an advanced feature, and it is up to the user to make sure that the default values and
expressions entered will produce valid values for the relevant issue tracker field types.
133
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Expression Basics
• Expression Logic
• Helpers
• Enumerable Fields
Expression Basics
The template engine will use the text you provide as-is, but it will treat anything inside pairs of double
braces {{ }} as an expression to be evaluated using the active finding or findings. Software Risk Manager
defines five basic data objects that can be used in the template expressions:
• allFindings - An array of all of the active findings ordered first by the severity then by finding ID.
• finding - The first element in allFindings (i.e., for multiple-finding issues, this will be the finding
with the highest severity and lowest finding ID); this field is most useful for single-finding issues.
• common - An abstract finding containing any field whose value is shared by all of the findings in
allFindings, containing the same fields enumerated below for finding objects; any value not shared
by all findings will be reported as null.
• project - An object containing information about the project.
• trackerType - The type of issue tracker that the template is being generated for ("jira", "azure",
"servicenow", or "gitlab").
These objects can be used to construct expressions containing data from the active findings. For example,
will, when applied to a Software Risk Manager finding with ID 1 and High severity, produce the following
text:
ServiceNow: Use [code]<code> before the code block and </code>[/code] after the code block.
134
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Azure DevOps and GitLab (triple backticks): Use ``` before and after the code block.
```
{{{requestBody}}}
```
```
{{{responseBody}}}
```
Finding Objects
The following fields are available on all finding objects (each element in the allFindings array, finding, and
common). Fields marked as being optional can be omitted or set to null, all other fields will be present. The
only exception to this rule is the common object, where any value not shared by all findings will be set to
null regardless of whether it is optional or not.
135
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• detection - A helper object containing booleans for some pre-defined detection methods.
• isDast - True if the finding is a DAST finding.
• isSast - True if the finding is a SAST finding.
• isComponent - True if the finding is a Component Analysis finding.
• isHybrid - True if the finding is a Hybrid finding.
• isInteractive - True if the finding is an IAST finding.
• isThreatModel - True if the finding is a Threat Modeling finding.
• isNetwork - True if the finding is a Network Security finding.
• isDatabase - True if the finding is a Database Analysis finding.
• isContainer - True if the finding is a Container Analysis finding.
• isCloudInfrastructure - True if the finding is a Cloud Infrastructure Analysis finding.
• detectedBy - The list of tools that detected the finding, in text form.
• descriptor - An object describing the type of finding.
• id - An identifier for the descriptor.
• code - A unique identifier for the descriptor.
• name - A human-friendly name for the descriptor.
• type - The type of descriptor; possible values can include the following:
• rule - This finding represents one or more results that matched a rule in the current Rule Set.
• tool-code / observed-tool-code - This finding directly represents a result from a tool.
• manual-entry - This finding was manually entered.
• cve-group - This finding was created to represent a group of CVEs.
• hierarchy - The hierarchy of the type of finding, corresponding with the nesting represented in the
Type filter on the Findings page; this is an array of strings, with name as the last element.
• cwe - An optional object representing the CWE associated with the finding.
• id - The CWE ID associated with the finding.
• name - The name of the CWE.
• location - The location where the finding has been identified.
• lines - An object representing the line number range on which the finding is present, if available;
uses the format {start: <Number>, end: <Number>}.
• line - The line number of the location, if available, in text form (e.g., '3-5' or '100').
• columns - An object representing the start and end columns of the finding's location, if available;
uses the format {start: <Number>, end: <Number>}.
• column - The column number of the location, if available (e.g., '12-44' or '440').
• path - An object representing the location's path:
136
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
137
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• projectId - The ID of the Software Risk Manager Project this finding is on.
• state - The state of the analysis, can be one of: Created, Queued, Running, Failed,
Complete.
• createdBy - The object representing the user who created the analysis.
• id - The ID of the user.
• name - The name of the user.
• creationTime - When an analysis was created.
• startTime - When an analysis started.
• endTime - When an analysis ended.
• name - The name of the analysis (note that this value is blank by default unless explicitly set).
• sourceSnippet - An object representing a snippet of code the finding occurs in.
• lines - A list that contains the lines of source code for the snippet.
• startLine - The line number from the source file corresponding with the first element of the list.
• branch - An object containing information about the branch the issue is associated with.
• id - The id of the Software Risk Manager branch.
• name - The name of the Software Risk Manager branch.
• branches - An array containing the branches this finding appears on.
• results - An array of all of the results (ingested from tools and manually entered) on the finding,
corresponding with the Evidence section of the details page, ordered first by the severity and then by
result ID. Each entry contains:
• id - The ID of the Software Risk Manager Result.
• firstSeenOn - The date the result was first seen in ISO 8601 extended format; suitable for use
with the {{formatDate}} and {{formatDateTime}} template helpers.
• isManual - A boolean indicating if the result was manually entered.
• detectionMethod - An object representing the result's detection method (in the same format as
the Finding detectionMethod above).
• tool - An optional string representing the tool name (always present for tool results, but optional for
manual results).
• severity - An object representing the result's reported severity (in the same format as the Finding
severity above).
• cwe - An optional object representing the result's reported CWE (in the same format as the Finding
cwe above); note that the result's cwe may be different from the finding's cwe, due to correlation
based on rule sets.
• descriptor - An object describing the type of result (in the same format as the Finding
descriptor above).
• location - An optional object representing the raw location reported by the result:
138
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• rawDisplayPath - The full display path, as reported by the tool; this will be null for manually
entered results.
• pathObject - An object representing the result's reported path (in the same format as the
Finding location.path above); this path represents the normalized version of the path as
understood by Software Risk Manager, and therefore may be slightly different from
rawDisplayPath.
• lines - An optional { start: <Number>, end: <Number> } object for the result's
reported line numbers, if specified.
• columns - An optional { start: <Number>, end: <Number> } object for the result's
reported column numbers, if specified.
• descriptions - An object containing the general and contextual descriptions for the result.
• general - A description object describing general information about the result (in the same
format as the Finding description objects above).
• contextual - A description object containing specific contextual data reported by the tool or
manual entry (in same format as the Finding description objects above).
• metadata - An object containing tool-specific metadata; keys in this object are a camel case
version of the name shown in the Evidence section of the details page - some (non-exhaustive)
examples are as follows:
• cvssV3 - The CVSS V3 score (typically for component analysis results).
• cpe - The CPE of the associated component (typically for component analysis results).
• veracodeFlawId - The Veracode Flaw ID (for Veracode tool results).
• whitehatVulnerabilityId - The WhiteHat Vulnerability ID (for WhiteHat tool results).
• sonatypeThreatLevel The Sonatype Threat Level (for Sonatype tool results).
• prismaCloudComputeTwistlockDistro The distro of the image scanned (for Prisma Cloud
Compute [Twistlock] results).
• httpMetadata - An object containing the values associated with the result's HTTP Activity;
similarly to metadata, the keys in this object are camel case and corresponds with the values
displayed in the Metadata section for each HTTP variant on each associated result - for example:
• whitehatSentinelAttackVectorId - ["123", "456", "789"] for a result with three
WhiteHat Sentinel Attack Vectors with the IDs 123, 456, and 789.
• cves - An array of CVEs associated with the finding, in text form (each element in the array is a
string in the format CVE-YYYY-NNNN).
• vulnerabilities - An array of vulnerability IDs (e.g., CVE and BDSA) associated with the
finding, in text form (each element in the array is a string in the vulnerability format, such as BDSA-
YYYY-NNNN for BDSAs and CVE-YYYY-NNNN for CVEs).
• variants - An object containing the values associated with the result's request & response HTTP
Activity.
• requestData - Formatted info for an HTTP request as seen in the "Raw Request Data" for a
Result (does not include request body).
139
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• responseData - Formatted info for an HTTP response as seen in the "Raw Response Data" for
a Result (does not include response body).
• requestBody - The body of the corresponding HTTP request.
• responseBody - The body of the corresponding HTTP response.
• hostInfo - An object containing the values associated with the result's Host Info.
• formattedHostname - A formatted list of Host Names.
• formattedFqdn - A formatted list of FQDN.
• formattedIp - A formatted list of IP Addresses.
• formattedMac - A formatted list of MAC Addresses.
• formattedNetBios - A formatted list of NetBIOS Names.
• formattedOs - A formatted list of Operating Systems.
• formattedPorts - A formatted list of Ports in the form of [Port][Protocol][State].
• formattedEnvironment - A formatted list of Environments.
• formattedHostInfo - Full formatted Host Info using all previously listed items.
Project Object
• id - The ID of the Software Risk Manager Project.
• name - The name of the project.
• metadata - An array of value objects entered via the Project Metadata dialog.
• name - The name of the metadata field.
• value - The value entered for the field.
• valueId - For "dropdown" fields, the choice ID.
Expression Logic
Most Handlebars expressions can be used. Some basic examples are given here, but much more
information is available in the Handlebars documentation. Specific sections of interest are Expressions,
Block Helpers, and Built-in Helpers.
Boolean Expressions
You can add basic boolean logic to your expressions by using the helpers if, ifeq, and ifneq. Note that
ifeq and ifneq are custom helpers provided by Software Risk Manager.
• If
140
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
{{#if finding.detection.isDast}}
This finding is a DAST finding.
{{else}}
This finding is not a DAST finding.
{{/if}}
will result
when
• ifeq
The ifeq helper allows you to test the equality between two string or number values for a boolean
result. Comparing values of types other than strings or numbers is unsupported, and the block will
always evaluate to false.
Note that else can not be used with ifeq; you may use ifneq instead to simulate else.
will result in
141
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
will result in
Iterating Lists
You can iterate over arrays by using the each helper.
For example, the expression
{{#each allFindings}}
{{id}},
{{/each}}
will result in
1, 2, 3, 4,
{{#each allFindings}}
{{#each results}}
{{{hostInfo.formattedHostInfo}}}
{{#each variants}}
Request:
{{{request-data}}}
Response:
{{{response-data}}}
{{/each}}
142
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
{{/each}}
{{/each}}
Understanding and utilizing {{#each}} is important, because as you can see in the above summary of
the properties of the finding objects, many of the properties are arrays and therefore can't simply be
accessed directly—you need to iterate over them and access each property inside the loop.
Helpers
Software Risk Manager includes all the #if, #unless, #each, and #with helpers provided by Handlebars.
Several other helpers are also provided to assist as well.
formatDate
Note: It is recommended to use the new formatDateTime helper which gives you more flexibility to
define both custom input and output format strings.
The formatDate helper allows you to format a date by specifying a format string. For example:
{{formatDate finding.firstSeenOnDate 'YYYY-MM-DD'}}
will take the first-seen date for the finding and convert it into an ISO-8601 valid format. You can use the
symbols below to create your format string:
The formatDate helper uses Moment.js under the hood, so you can look at its documentation for more
formatting symbols.
formatDateTime
The formatDateTime helper allows you to format a datetime by converting it from a specified input
format to a specified output format. For example:
143
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The formatDateTime helper uses java.time under the hood, so you can look at its documentation for
more formatting symbols.
makeOxfordList
The makeOxfordList helper assists in generating an Oxford list from an array of elements. The body will
be evaluated for every item in the list.
For example, to list all of the Software Risk Manager Finding IDs, the template
will result in
when evaluated on a group of findings with the IDs 39955, 39956, 39939, and 39940.
formatLocation
The formatLocation helper formats a location object into a user-readable version similar to those
144
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
{{formatLocation finding.location}}
will result in
AbstractLesson.java:182
will result in
WEB-INF/classes/org/owasp/webgoat/lessons/AbstractLesson.java:182:25-50
formatCWE
The formatCWE helper creates a more informative representation of a finding's CWE (if one is available).
Note: When using this helper, the last two parameters are optional.
The true/false parameter determines if a link to MITRE will be available. The trackerType parameter will
default to the issue tracker type currently being processed.
For example,
will result in
145
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
false, or to "No Common Weakness Enumeration information available" if the second argument is true.
stripHtmlMarkup
The stripHtmlMarkup helper takes an HTML string and returns a copy with all HTML tags removed,
with newlines/spaces inserted as necessary while attempting to preserve native formatting. By default,
HTML escape sequences will be converted in the result; use false for the second parameter (as seen
below) instead to prevent this. Whitespace-equivalent escape sequences (e.g., ) will simply be
replaced with a space regardless of the second parameter value.
For example, a finding with a description of the following
<h1>Explanation</h1>
<p>
Cross-site scripting vulnerabilities occur when:
<ol>
<li>Data enters through an untrusted source</li>
<li>The data is included in dynamic content without being va
lidated for malicious code</li>
</ol>
</p>
will result in
Explanation
Cross-site scripting vulnerabilities occur when:
146
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• The un-escaped HTML content may be re-converted to the escape sequences automatically by
Handlebars. (e.g., HTML content with &is un-escaped to & by stripHtmlMarkup, but gets
converted back to & in the output by Handlebars.) Use {{{}}} instead of {{}} to prevent this
behavior.
makeMarkupFromHtml
The makeMarkupFromHtml helper takes an HTML string and reformats it into appropriate markup for the
current issue tracker. The helper uses the following formats:
The helper takes three arguments: the first is required and the following two are optional: the HTML to
convert and the name of the issue tracker type to target (use trackerType if not manually overriding;
accepted values are jira, azure, servicenow, and gitlab), and a boolean flag (true/false),
indicating whether to pre-clean the HTML of any non-textual elements (defaults to false). The pre-
cleaning flag is usually not necessary, but if there are formatting issues, the pre-cleaning option may
prevent these issues.
For example, a finding with a description of
<h1>Explanation</h1>
<p>
Cross-site scripting vulnerabilities occur when:
<ol>
<li>Data enters through an untrusted source</li>
</ol>
</p>
(If configured tracker is Jira or using `jira` as the second argument value)
h1. Explanation
147
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
(If configured tracker is Azure DevOps or using `azure` as the second argume
nt value)
<h1>Explanation</h1><p>Cross-site scripting vulnerabilities occur when: <o
l><li>Data enters through an untrusted source</li></ol></p>
Keep in mind that the use of {{}} vs {{{}}} will affect how Handlebars escapes any HTML-like
content—typically, the {{{}}} literal format is appropriate.
The following are known issues and limitations:
148
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
jiraMarkupFromMd
The jiraMarkupFromMd helper is intended to be used to translate descriptions formatted using
markdown into Jira markup.
For example,
{{{jiraMarkupFromMd descriptions.contextual.content}}}
# Header
Here is a *description*
1. Number one
2. Number two
3. Number three
into:
h1. Header
Here is a _description_
# Number one
# Number two
# Number three
makeSource Snippet
The makeSourceSnippet helper takes the finding.sourceSnippet object and outputs a formatted
source snippet.
For example,
{{makeSourceSnippet finding.sourceSnippet}}
will result in
149
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
function foo() {
console.log('bar');
}
• Jira/Atlassian shows line numbers, but by default do not support configuring the line numbers. The line
numbers will start at 1.
• Jira/Atlassian has an issue with preserving the first source line's level of indentation.
• GitLab, Azure, and ServiceNow do not show line numbers.
• Service now only supports code blocks in specific fields, like the Additional Comments field.
will result in
when evaluated on a group of findings, where the lowest severity finding has the ID of 10 and severity of
info.
In the case of a tie (e.g., multiple findings or results with the minimum or maximum value), the first item
with that value will be used. As outlined in Finding Objects, in the case of a tie, this will give the finding or
result with the highest severity and lowest numeric ID.
150
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
will result in
when evaluated on a group of findings, where the lowest Fix By Date finding has the ID of 10.
In the case of a tie (e.g., multiple findings or results with the minimum or maximum date), the first item with
that value will be used.
Nested Arrays
These helpers can also handle nested arrays in a more advanced use case. This is signified by adding a
.[] at any point the helper should continue iterating over inner arrays. The expression body's context will
be at the inner-most object, and the parent object(s) may be referenced if desired.
Here are two examples to illustrate these points:
will result in
when evaluated against a group of one or more findings where the highest severity result across all of the
findings is a result on finding 10, with a descriptor name of "My Weakness" and medium severity.
will result in
9.8
when evaluated against a group of findings where the highest CVSS V3 metadata entry on any of the
151
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Enumerable Fields
Custom fields that are represented as one of a set of enumerable values (e.g., a set of radio buttons or a
dropdown menu) can be configured to be pre-populated by selecting the enumerable Software Risk
Manager field from the available dropdown menu. The currently defined enumerable fields are as follows:
• Severity
• Triage Status
• Detection Method
• Static Value
Once you select a Software Risk Manager enumerable field, you'll see a table with a row for each possible
value, along with a dropdown containing the possible values of your custom field. Choose which custom
values from the dropdown menu that you want to use for each Software Risk Manager value. The Static
Value option is available if you wish to define a single value for the Jira field regardless of the values in
the Software Risk Manager finding.
Software Risk Manager can be configured to automatically update issue or work item fields in response to
any changes to a finding within Software Risk Manager. This is configurable on the "SRM -> *" tab.
Each field listed on the "SRM -> *" tab will have a "Keep synced" checkbox located to the right of the field's
title. Enable this option to have Software Risk Manager push updates to editable fields for issues when the
issue or work item's associated Software Risk Manager finding has changed. The values pushed to the
issue tracker will be based on the branch associated with the issue at the time of creation. Currently,
issues created via Auto Create can only be associated with a project's default branch.
Software Risk Manager can also be configured to watch specific issue or work item fields and update
associated findings accordingly. This is configurable on the "* -> SRM" tab. Currently, only single select
dropdowns and radio button fields can be mapped to affect Software Risk Manager finding Triage Status,
Severity Override and/or Fix By Date1. Note that these changes will only take effect on the issue's
associated branch; findings on other branches will be unaffected.
Note: 1. Only the Azure DevOps, GitLab, Jira and ServiceNow issue trackers support mapping of
152
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: This section is only applicable to Software Risk Manager users who are configuring a Jira
integration.
Software Risk Manager can be configured to automatically update Jira issue statuses in response to status
changes within Software Risk Manager. This is configurable on the "Status Mapping" tab.
Click the Projects icon in the navigation bar to open the Projects page, then select Issue Tracker Config
from the project's dropdown configuration options.
When automatic status updating is enabled, a list of Software Risk Manager triage statuses will be shown,
along with a dropdown list to pick the associated Jira status. These mappings are optional: if one is not
selected, then no action will be taken on findings with that status.
After configuring status mappings, any time the status of a finding on the issue's associated branch is
updated, the associated Jira issue will be updated according to the mapping (if applicable). If a transition is
not available, then no action will be taken. If a transition requires some input for a field, Software Risk
Manager will attempt to use any defined mappings in the "SRM -> Jira" tab that are marked "Keep synced"
to satisfy those requirements. If multiple findings are associated with the same Jira issue, the Jira status
will only be updated if all findings map to the same status.
Software Risk Manager can be configured to automatically create issues or work items based on a number
of different criteria. This is configurable on the "Auto Create" tab of the Issue Tracker Configuration screen.
By default, Auto Create is disabled. To enable Auto Create, Jira and GitLab users should check the box
labeled "Automatically create issues for findings," Azure DevOps users should check the box labeled
"Automatically create work items for findings," and ServiceNow users should check the box labeled
"Automatically create incidents for findings."
After enabling Auto Create, the rest of the form will be enabled and further configuration options are
available.
Note: In contrast to manual issue creation, Auto Create currently only supports associating issues with a
project's default branch.
Issue Configuration
153
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Issue Type. What "Issue Type" Software Risk Manager will use when creating issues or work items.
• Issue Assignee. The user Software Risk Manager will assign these issues to (Jira and ServiceNow
only; Azure DevOps and GitLab users can configure this on the "SRM -> *" tab).
• Finding Grouping. How Software Risk Manager should group findings (or not) when creating issues or
work items.
• Ticket Summary Template. The summary or title Software Risk Manager will provide when creating
issues or work items.
Finding Grouping
The "Finding Grouping" section allows users to either have Software Risk Manager create one issue or
work item per finding, or group multiple findings together per single issue or work item. If Multiple findings
per ticket, grouped by... is selected, the dropdown menu will be populated.
The selection(s) made here determines how findings are grouped. Multiple selections are allowed, but the
order of the selections matters. For example, if "Location" is selected first, and "Severity" is selected
second, Software Risk Manager will first group findings by their Location and then by their Severity.
Therefore, if you had two findings at the same location but with different severities, these findings would be
154
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Ticket Summary
The Ticket Summary - Template field determines what Software Risk Manager uses for the summary or
title when issues or work items are created. This field supports the same templates used on the field
mappings tab (i.e., "SRM -> *" tab). For example, if you want Software Risk Manager to create issues or
work items and have the summary display the finding's location and severity, you could configure a Ticket
(Work Item) Summary as follows:
{{finding.location.path.path}} {{finding.severity.name}}
The Insert placeholder... control under the input will help in determining what kind of template expression
to use.
The option to "Use Policy" or "Use Filters" to create issues allows users to choose to either use configured
Policy rules or the following filter options to determine which findings should have an issue automatically
created.
Note: By default, "Use Policy to create issues" is selected. Users must assign a policy to this project, and
that policy must have a rule where the action is "Create Ticket(s)." See Configuring Polices for more
information.
Filtering
SRM provides a number of options you can use to filter which findings should have issues automatically
created.
155
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Only create tickets or work items for New findings. If this is checked, only findings with a status of
"New" will have issues or work items created for them.
• Rule. Select any number of Rules and only findings that match the selected Rules will have issues or
work items created for them.
• Tool. Select any number of Tools and only findings that match the selected Tools will have issues or
work items created for them.
• Severity. Check any number of Severities and only findings that match the checked Severities will have
issues or work items created for them.
• Tool Overlaps. Select a number range and only findings that are in the selected Tool Overlap range will
have issues or work items created for them.
• Detection Method. Check any number of Detection Methods and only findings that match the checked
Detection Methods will have issues or work items created for them.
• CWE. Select any number of CWEs and only findings that match the selected CWEs will have issues or
work items created for them.
• Standard. Select any number of Standards and only findings that match the selected Standards will
have issues or work items created for them.
156
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
If a filter is left blank, that filter will not be used and all findings will be considered. For example, if you
leave the Severity filter blank (i.e., nothing is checked), all severities will be considered.
Project Metadata allows users of Software Risk Manager to enter values into Project Metadata Fields for
any project they have the manage role for.
Click the Projects icon from the navigation bar to open the Projects page, then click the project's dropdown
configuration icon and select Project Metadata.
It is up to an admin user to define the fields; once defined, they will be available to every project in your
Software Risk Manager installation.
1. Click the Projects icon from the navigation bar to open the Projects page.
2. Click the project's dropdown configuration icon and select Project Metadata.
• Click Reset (a circular arrow icon) to undo any changes and return to the last saved state.
• Click Clear (an "X" icon) to clear all the fields.
3. Configure the fields as necessary.
There are four of field types:
• Text. A regular text input which allows a single line of text (e.g., Project Owner in the screenshot
above).
• Multiline. A larger text input which allows for multiple lines of text (e.g., Description in the
screenshot above).
• Dropdown. A dropdown select which allows users to pick one of the options (e.g., Criticality in the
screenshot above).
• Tags. A special input that behaves similarly to Text, but each individual word is converted to a "tag."
157
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
As you type, pressing the space bar will convert whatever text you already had into a tag.
Remember to enter a space after the last tag.
4. Click OK.
When the Tool Orchestration Service is enabled, the Tool Service Configuration page allows you to
configure tool orchestration for an entire Software Risk Manager project.
Click the Projects icon in the navigation bar, then click the project's dropdown configuration icon and select
Tool Config.
• Manage Certificates
• Project Secrets
• Customize Add-In Tools
Manage Certificates
This section allows you to manage a list of certificates that tool orchestration components should trust.
158
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The Manage Certificates section lets a tool or the Tool Orchestration Service handle applications that use a
self-signed certificate or a certificate issued by a certificate authority that is not well-known. Click Add
Certificate and specify a certificate file to update the list. You will see your certificate in the list after an
upload completes. Software Risk Manager will give you the option to overwrite an existing certificate file or
cancel your upload if you choose a file that is already in the list. The upload time will appear in the list
under each certificate filename to help you manage your certificates.
Deleting a certificate removes it from the list and prevents future access by tool orchestration components.
However, removing a certificate will not remove the certificate from any in-progress orchestration-related
activity.
Project Secrets
This section allows you to manage data that you can share with one or more tool orchestration
components that may require account credentials, keys, or other types of sensitive data.
Click Add New Secret to start generating data for your secret. Specify a name, and click OK to define your
list of fields.
To add a field, click Add Field. To add a sensitive field, click Add Sensitive Field. Specify a name for the
field, and click OK.
With sensitive data entry, your value is masked as you type, and you must confirm the correct value by
entering it twice. Also, sensitive values are write-only and cannot be retrieved from the API of the Tool
Orchestration Service. When you have finished specifying fields and field values, click Save to store your
secret.
Project secrets get stored as Kubernetes Secrets, so it's recommended that you follow the Kubernetes
guidance on encrypting secret data at rest (https://kubernetes.io/docs/tasks/administer-cluster/encrypt-
data/).
You can edit field values at any time. Project secrets support limited editing: you cannot change a secret's
name, add or remove fields, or change the data entry mode for a field value.
Project secrets are meant to be used with add-in tools, so Software Risk Manager will display a warning
icon to highlight those that are not yet assigned to a tool. You can learn about assigning secrets to tools in
the Customize Add-In Tools section below.
159
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
What you can customize will vary by tool. For example, the default Security Code Scan tool has no project-
specific TOML configuration, and it does not read project secrets, but the Enabled/Disabled toggle lets you
customize whether it is available for your project.
Alternatively, the ZAP tool allows you to use project secrets to make authenticated requests during
scanning. The interpretation of project secret data is tool dependent—ZAP, for example, will ignore any
secrets with missing username or password fields.
The Config box shows any project-specific TOML configuration for the tool you selected.
You should avoid using the Default enabled feature for tools with project-specific TOML configuration
unless you have a process for specifying project configuration before a tool runs. Tools with insufficient
configuration details typically fail when run.
Remember to click Save to keep changes, and you must save any changes you want to keep before
selecting another tool.
[checkmarx]
baseUrl = ""
projectId = 0
[scan]
checkScanStatusDelay = 60
Use the Customize Add-In Tools feature to specify values for the above configuration before enabling the
tool. Refer to the following table for an explanation of the configuration parameters.
160
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
Parameter Description Example
The base URL endpoint for
baseUrl the Checkmarx scanner "https://cxprivatecloud.checkmarx.net"
(default="")
The Checkmarx-assigned ID
of a project created by the
projectId any integer value greater than 0
Checkmarx software at the
base URL (default=0)
The delay in seconds
checkScanStatusDe
between requests to fetch 60
lay
scan status (default=60)
Note that you may have constant values for both checkScanStatusDelay and baseUrl, so you can
specify values that will not vary by project.
You must also provide an account credential that authorizes use of the Checkmarx software at the base
URL. The Checkmarx Add-In Tool expects to find a project secret named checkmarx-project-credential that
includes both a username and a password field. The credential must grant permission to start a new scan
in the configured Checkmarx project and to generate a Checkmarx report with scan findings.
[context]
target = ""
[scanOptions]
runActiveScan = false
[reportOptions]
minRiskThreshold = 0
minConfThreshold = 0
[authentication]
type = "none"
loginIndicatorRegex = ""
[formAuthentication]
161
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
formURL = ""
formUsernameFieldName = ""
formPasswordFieldName = ""
formAntiCrossSiteRequestForgeryFieldName = ""
formExtraPostData = ""
[scriptAuthentication]
authenticationScriptContent = ""
Use the Customize Add-In Tools feature to specify values for the above configuration before enabling the
tool. Refer to the following table for an explanation of the configuration parameters.
Table 2.
Parameter Description Example
The URL where the scan
target the ZEST script for script authentication (default="")
starts (default="")
The decision to run an active
runActiveScan true
scan (default=false)
The minimum risk code for
minRiskThreshold ZAP report findings 1
(default=0)
The minimum confidence for
minConfThreshold ZAP report findings 1
(default=0)
The authentication type:
none, formAuthentication, or
type formAuthentication
scriptAuthentication
(default=none)
The regex to indicate a
loginIndicatorRege
successful login request '\QSet-Cookie: .AspNetCore.Identity.Application=\E'
x
(default="")
The URL of the login form for
formURL forms authentication "http://host.docker.internal/contosou/account/login"
(default="")
formUsernameFiel The login form's username
"Email"
dName field name (default="")
formPasswordField The login form's password
"Password"
Name field name (default="")
formAntiCrossSite The anti-XSRF token field "__RequestVerificationToken"
162
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
When you have ZAP authentication configured, you can provide account credentials by creating project
secrets that include both a username and a password field. The ZAP scanner will send authenticated
requests using each credential it finds. Be sure to specify the correct username and password with each
credential so that ZAP can log on successfully.
Orchestrated Analysis
When the Tool Orchestration Service is enabled, the Orchestrated Analyses page can be used to view the
portion of an analysis that's orchestrated on your Kubernetes cluster. Keep in mind that a Software Risk
Manager analysis may include bundled tools for which Kubernetes support is unavailable—the
Orchestrated Analysis page will not include information about those tools.
163
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Every orchestrated analysis for a project will appear in a list on the left.
Software Risk Manager will automatically select the most recent analysis when you visit the page.
Selecting an analysis lets you see summary information to include analysis status and start time. An
orchestrated analysis has a unique, numerical identifier and executes as a multi-step workflow running on
Kubernetes. Under the status information, you will find collapsed sections that represent each workflow
step. Steps labeled with an ID and tool name represent tools running on your cluster. They differ from
system steps, like prepare, which support the overall workflow.
An orchestrated analysis that completes successfully will show a Success status, also represented with a
green checkmark icon in the analysis list. Failed analyses will show a Failed status and a red exclamation
icon. The summary information for failed analyses will include a Status reason field that may provide
further information. Failed steps may also include a Message field describing why a step failed to complete
successfully.
Orchestrated analyses abandoned by previous Software Risk Manager instances continue to run to
completion. Software Risk Manager will display a message when there's an orchestrated analysis whose
results will be entered into Software Risk Manager as a brand new analysis.
Viewing Logs
Every workflow step includes one or more logs. You can expand a step section to reveal a log viewer with
support for live updates showing log data available from the Kubernetes API. Software Risk Manager
shows you the *main* log by default, but you can view log data from other available sources using the
dropdown shown below.
164
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
For tool completed steps, you can click Download Logs to fetch every tool log referenced by the tool's
registration data. The Download Logs option will be unavailable when a tool run is in progress. Keep in
mind that add-in tool authors may write log data that's unavailable via the Kubernetes API, so downloaded
logs may include data that's not included in what's shown with live updates on the Orchestrated Analysis
page.
Some steps of an orchestrated analyses may repeat in an attempt to recover from unexpected failures.
How often they repeat and with what delay in between is step dependent. When log data is available for
multiple tries, a "tabbed" log viewer will be displaed. Each tab will show you the log details for a specific
attempt.
165
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Termination
Software Risk Manager lets you stop orchestrated analyses from running to completion. Click Terminate to
submit a request to cancel an analysis.
It may take a few moments before an analysis displays a terminated status, but you will see immediate
feedback indicating that your termination request has been submitted, and you will not be able to submit
additional termination requests.
Intelligent Orchestration can determine which security tools are best suited for a particular analysis,
depending on factors such as code changes, risk score, and security policies. In Software Risk Manager,
Intelligent Orchestration is enabled by adding a pre-scan policy to a project.
Note: Intelligent Orchestration requires a separate IO license and must be properly configured before
use. For instructions, see "Enabling Intelligent Orchestration" in the Software Risk Manager Install Guide.
166
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Projects icon in the navigation bar to open the Projects page, then select Intelligent
Orchestration from the project's dropdown configuration options.
3. Enter the name of the project in the Project Name field (required).
The IO Project Name refers to an existing project in your IO server.
4. Select the SCM Type.
There are three options: GitHub, GitLab, and Bitbucket.
5. Enter the required configuration information according to the selected SCM type, as described below:
Type: GitHub
• SCM Owner
• SCM Repository Name
• GitHub API URL
• GitHub Username
• GitHub Token
Type: GitLab
• SCM Owner
• SCM Repository Name
• GitLab API URL
• GitLab Token
Type: Bitbucket
• SCM Owner
• SCM Repository Name
167
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Policies Overview
Policies in Software Risk Manager allow you to track compliance to specified requirements. Once defined,
policies can be applied to projects, and policy violations can be monitored. In this way, polices can be used
to prioritize which security issues need to be addressed, and so on.
Click the Policies icon in the navigation bar to open the Policies page.
The Policies page displays a list of all the currently defined policies, along with the following information:
• Policy Name. Lists the existing policies. Click the policy name to open the View Policy window, where
you can view or edit the policy definition.
• Status. Provides a visual representation of the policy status. There are four status icons:
• Red triangle: Fail (Overdue)
• Orange hourglass: Warn (Due Soon)
• Purple hourglass: Pass (On Track)
• Green checkmark: Pass (No Violations)
• Findings Violating Policy. Provides the following statistics:
• The total number of findings that violate the policy. Clicking the link opens the Findings page and
lists all the findings violating the policy.
• A color-coded breakdown of findings according to violation status. The numbers inside the colored
boxes correspond to the number of findings for each category: Overdue (red), Due Soon (orange),
On Track (purple), No Fix-by date (gray). Clicking a box opens the Findings page. Findings are
sorted according to the corresponding Policy Violations and Policy Violation Urgency filters.
168
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• The number of assigned projects with policy violations. Clicking the link opens the Projects modal,
which lists the projects using this policy.
• Using This Policy. Shows the number of projects using the selected policy. Clicking the link opens the
View Policy Projects window, which lists all the projects associated with the policy.
Click the column headers to re-sort the list. You can also use the search field to search for a specific policy.
Policy Configuration
When creating, editing, or viewing policies, each part—Description, Rules, Projects—will be displayed in a
separate window. Clicking the "button" tabs along the top will switch to that corresponding window. Click
Done to close the window.
169
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Policies icon in the navigation bar to open the Policies page.
2. Click a policy name to open the Policy Description window for that policy.
Note: Click Done to close the window. Click Close and Edit to open a window where you can edit the
policy's configuration. For more information, see Creating a Policy.
3. Click the Rules tab to see a list of all the rules that define the policy.
170
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
4. Click the Projects tab to see a list of all the projects that use this policy.
171
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• View. Opens the policy Description window (same as clicking a policy name).
• Edit. Opens the policy configuration page where you can edit the policy's configuration (see Creating a
Policy).
• Duplicate. Creates a new policy with duplicate settings. This is useful when creating a new policy that
includes many of the same rules as the original. Creating a policy with duplicate settings eliminates the
need to recreate rules that have already been defined.
• Set as default. Specifies that the policy will be automatically assigned to all new projects (but not to
existing ones). If a policy is a default policy, it will appear as part of the policy name. (A default policy
must be "unset as the default" before it can be deleted.)
• Delete. Deletes the policy and all its associations with existing projects. Deleting a policy is irreversible.
A warning pop-up window will list all the projects associated with the policy and ask for confirmation
before deleting the policy.
Policies are created and updated from the Policies page. (Note that there are often alternative ways to
perform the same task. The most common are detailed below.)
• Creating a Policy
• Editing a Policy
• Deleting a Policy
Note: Policy functionality is role-based: users assigned to the "Manager" role are limited to assigning and
removing projects.
Creating a Policy
To create a new policy:
1. Click the Policies icon in the navigation bar to open the Policies page.
172
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
173
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
174
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Regarding the use of the Policy Violations and Policy Violation Urgency filters in saved
private filters, if either (or both) of these filters are added to a saved filter, those options will be
ignored when using that filter as a Policy rule.
• Fix by. Sets the number of days before the violation status changes to overdue. Select the number
of days from the dropdown list. Select "Not Required" if no date is necessary.
• Action. Specifies what action should be taken when the rule is violated. The options are "Nothing,"
"Create ticket(s)," and "Break Build."
175
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
9. Select the projects to associate with this policy and click Add Projects.
Use the checkboxes to select projects. You can search for projects using the search field. The Current
Policies column shows the number of policies that have already been assigned to that project.
10. Click Finish.
Editing a Policy
To edit an existing policy:
1. Click the Policies icon in the navigation bar to open the Policies page.
176
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Deleting a Policy
To delete an existing policy:
1. Click the Policies icon in the navigation bar to open the Policies page.
177
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
There is more than one way to apply a policy to a project. The instructions below detail the most common
method of applying a single policy to a single project.
To apply a policy to a project:
1. Click the Projects icon in the navigation bar to open the Projects page.
178
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
3. Click Assign Policy and select which policy(ies) to add from the list.
Click the plus icon to select policies. You can search for policies using the search field. Clicking the
minus icon next to an existing assignment will remove the policy association from the project. (For
information on creating a policy, see Creating and Editing Policies.)
4. Click Save Changes.
There is more than one way to apply a policy to multiple projects. The instructions below detail the most
common method.
To apply a policy to multiple projects:
1. Click the Policies icon in the navigation bar to open the Policies page.
179
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
4. Click Add Projects and select the projects you want to apply this policy to.
Use the checkboxes to select projects. You can search for projects using the search field. The Current
180
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Policies column shows the number of policies that have already been assigned to that project. Clicking
the minus icon removes the project association.
5. Click Add Projects.
6. Click Finish.
Once a policy has been defined and applied to a project, Software Risk Manager will track policy violations
and provide violation status in a variety of ways. Policy information and violation status appears on the
following pages:
• Projects page
• Findings page
• Policies page
Note: Email notifications for changes to policy violation status can be configured on the user
configuration page. For more information, see User Configuration Settings. For information on
customizing the policy email template, see Customizing the Policy Email Template.
If > 100 findings matching Only Critical and Highs, fix by 14 days and Creat
e
Tickets
If your project only has one new critical or high finding, a ticket will be created for that finding even though
the policy itself is still passing because it hasn't hit the threshold and hasn't gone over the fix-by date
When using the Policy filters, note the following range definitions:
181
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
This page shows the number of policy violations for each project along with links to additional information.
Policy information is displayed in the second and third columns to the right of the total number of findings
for that project. The total number of policy violations for a specific project is broken out by policy violation
status, shown in color-coded boxes. Clicking a box takes you to the Findings page, where the findings
have been filtered according to that status.
• Red: Overdue
• Orange: Due soon
• Purple: On track
• Gray: Unspecified "fix-by"
The third column shows the number of policies associated with that project. Clicking the link displays the
policies associated with that project.
182
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Integrations Overview
Click the Integrations icon in the navigation bar to open the Integrations page.
The default view lists all the currently configured integration tools.
• Use the menu on the left to display supported tools arranged by tool type.
• Select All to display all the analysis tools, integration tools, IDEs, issue tracking systems, plugins, and
version control tools supported by SRM.
• Select Configured to display all the currently configured integration tools.
• Enter a search term in the Search Integrations field to search for a specific tool.
183
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Analysis Tools
• Continuous Integration
• Integrated Development Environments
• Issue Tracking
• Plugins
• Source Code Management
Analysis Tools
SRM supports the following Analysis Tools:
• 42Crunch
• Acunetix Desktop (XML)
• Acunetix 360
• Anchore (JSON)
• Android Lint (XML)
• APIsec
• AppScan DAST (XML)
• AppScan Enterprise
• AppScan Source (OZASMT)
• AppSpider (XML)
• Aqua Enterprise
• Arachni (JSON and XML)
• Armorize CodeSecure (XML)
• ASoC (XML)
• AWS Security Hub (JSON)
• Azure Security Center (CSV)
• Black Duck SCA
• Black Duck Binary Analysis (CSV and JSON)
• Brakeman (JSON and ZIP of JSON outputs) (Built-in tool)
• Burp Enterprise
• Burp Suite (XML)
• C++test (XML)
• CAT.NET (XML) (Built-in tool)
• Checkmarx (XML)
• Checkmarx IAST
• Checkmarx One
• Checkstyle (XML) (Built-in tool)
• Clang (ZIP of HTML outputs)
• Clang-Tidy (TXT: console log)
• Clippy (JSON and ZIP of JSON outputs) (Built-in tool)
• CodePeer (CSV)
• CodeSonar (CodeSonar-Scrape ZIP)
• Contrast
• Coverity (JSON v8+)
• Coverity on Polaris
• Cppcheck (XML v2) (Built-in tool)
• CycloneDX (JSON and XML)
• Data Theorem Mobile
184
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
185
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Polaris
• Prisma Cloud (RedLock) (CSV and JSON: List Alerts V1 endpoint)
• Prisma Cloud Compute (Twistlock) (CSV and JSON)
• Pylint (JSON and ZIP of JSON outputs)
• Q-MAST
• Qualys CS (CSV)
• Qualys VM (XML)
• Qualys VMDR
• Qualys WAS
• Rapid Scan SAST (JSON)
• Rapid7 InsightAppSec
• Rapid7 Nexpose (XML)
• SafeSQL (TXT: console log)
• SARIF (JSON v2.1.0)
• SATE (XML)
• Scalastyle (XML) (Built-in tool)
• SCAP (XML)
• SciTools Understand (CSV)
• SD Elements
• Black Duck Seeker
• Semgrep (JSON)
• Snyk (JSON)
• SonarQube
• Sonatype Nexus
• SPDX (JSON and SPDX)
• SpotBugs (XML) (Built-in tool)
• SRM Custom Integration (XML)
• Staticcheck (JSON)
• STIG (CKL)
• SWAMP (XML)
• Black Duck Managed Services Platform (XML)
• Tenable.io
• Tenable.io Web App Scanning
• Tenable.sc
• Black Duck Tinfoil API
• Black Duck Tinfoil Web
• Trivy (JSON: container image results)
• TruffleHog (JSON)
• Trustwave App Scanner
• Veracode (XML and ZIP)
• Vet (JSON)
• WebInspect (XML)
• WhiteHat
• Wiz
• WPScan (JSON)
• ZAP (XML)
• ZPA (JSON) (Built-in tool)
186
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Continuous Integration
SRM supports the following CI tools (click the link for more information):
Issue Tracking
SRM supports the following issue tracking tools (click the link for more information):
• Azure DevOps
• GitHub
• GitLab
• Jira
• ServiceNow
Plugins
SRM supports the following plugins (click the link for more information):
• Burp
• Splunk
• ZAP
• Git
Analysis Tools
187
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Click the Integrations icon in the navigation bar and select Analysis Tools to open the Analysis Tools page.
1. Click the Integrations icon in the navigation bar and select Analysis Tools to open the Analysis Tools
page.
2. Click the Set Up button for the tool you want to configure.
Not all tools are configurable.
188
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
a. Add an API token with "API Security Audit" rights in the API Token field.
To test the connection, click the Test Connection button.
b. Select sharing options with users or user groups.
c. Select permissions.
4. Click Add Options.
5. Enter a name in the Options Name field and select which options to include.
6. Click Save Options.
Note that you can edit existing options.
7. Select Schedules from the upper menu.
8. Click Add Schedule.
189
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
9. Add projects.
190
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• The first URL performs a "dry run" of the conversion, providing a report of all the decisions and
consolidations that will be made during the actual conversion process.
• The second URL performs the conversion.
To perform the dry run and see a text-based report, log in as an admin and enter the following into your
browser: <SRM Base URL>/x/integrations/tool-connector/migration/dry-run. You can
also use your HTTP client-of-choice to send a GET request to that URL to obtain the report.
To trigger the actual conversion, use <SRM Base URL>/x/integrations/tool-connector/
migration/commit-run. This URL responds with a 204 No Content upon success.
Warning: Running the conversion is irreversible. Making a backup of your database prior to performing
this action is highly recommended.
Continuous Integration
Click the Integrations icon in the navigation bar and select CI to open the Continuous Integration page.
191
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• TeamCity
Click the Integrations icon in the navigation bar and select IDEs to open the IDEs page.
Issue Tracking
Click the Integrations icon in the navigation bar and select Issue Tracking to open the Issue Tracking page.
192
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Azure DevOps
• GitHub
• GitLab
• Jira
• ServiceNow
Plugins
Click the Integrations icon in the navigation bar and select Plugins to open the Plugins page.
• Burp
• Splunk
• ZAP
Click the Integrations icon in the navigation bar and select SCM to open the Source Code Management
options.
193
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Git
• GitHub
Software Risk Manager can automatically create projects based on existing GitHub repositories.
Click the Integrations icon in the navigation bar and select SCM to open the Source Code Management
page.
194
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Integrations icon in the navigation bar and select SCM to display the GitHub option.
2. Click the configuration icon for GitHub, then select the Connections tab from the top menu.
195
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Integrations icon in the navigation bar and select SCM to display the GitHub option.
2. Click the configuration icon for GitHub, then select the Repositories tab from the top menu.
196
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
197
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: When the name (chosen by the naming convention) for a repository corresponds to an
existing SRM Project, SRM will associate the repository with the existing project rather than
creating a new project, but only if the user has the manage role for that project.
• Parent Projects. Enables you to specify a parent project for the projects you are creating.
• Analyses. Instructs SRM to run an analysis after creating the new projects.
7. Click Create Projects.
The new projects will appear on the Projects page.
Clicking the git branch icon opens the SCM Configuration window, which displays the connection name
and repository URL.
For projects that are set up with a git configuration, SRM will automatically create a ZIP archive of the files
from that git repo and include it in the analysis prep area as a "source from" item, as shown in the example
below.
198
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Analyses Overview
When the Scan Farm has been configured, Software Risk Manager can automatically run Coverity SAST
and Black Duck SCA scans. Software Risk Manager also comes with bundled open source tools to scan a
wide variety of applications. Supported languages and expected inputs for the built-in open source
scanners are described in the Built-in Open Source Code Scanners and the Built-in Open Source
Dependency Scanners sections. In addition to the bundled tools, Software Risk Manager can import the
results of several commercial and open source tools. The supported tools and generic input formats are
described in the Importing Scan Results section. There are a number of different options to configure and
run analyses for Software Risk Manager: manually using the web interface, Jenkins plugins, or
automatically (such as from your continuous integration server) using the API or using Black Duck Bridge
CLI. These are all detailed in the Starting Analyses section.
Incremental Analysis
Software Risk Manager performs analyses incrementally. This means that as new analysis inputs (files)
are added to a project, any findings associated with them are added to the project.
The life of a finding is tied to the inputs in which it was reported. When the last input contributing to a
finding is archived, the finding itself is marked as "Gone" and hidden by default (see Findings View
Options).
Analysis inputs can be archived manually or automatically. For more information on archival, see Auto-
Archival.
Software Risk Manager bundled open source code analyzers can analyze C/C++, Objective-C, Java,
JavaScript, JSP, .NET (C#, VB), PHP, Terraform, Docker, Swift, Scala, Python, Ruby on Rails, and Rust
applications. For all supported languages, Software Risk Manager will analyze the source using open
source bundled tools built specifically for a target language. For applications built with any combination of
the supported languages, Software Risk Manager will run the appropriate checkers on the provided
source.
199
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: The Software Risk Manager built-in open-source code scanners are turned off by default and can
be turned on from the Integrations page. For more information, see the Integrations Overview section.
For Java applications, Software Risk Manager bundled open source code analyzers supports scanning
compiled bytecode. In fact, the preferred approach for Java projects is to upload both source and
bytecode to Software Risk Manager in the supported file format described in the bullets below. This yields
the best coverage for issue detection.
For .NET applications, Software Risk Manager supports scanning compiled DLLs. It is also recommended
that the source be uploaded. This will provide better source location information and will allow for viewing
the source while looking at finding details.
Note: If you choose to upload an entire Visual Studio solution folder, there may be duplicates of the build
DLLs and third-party DLLs. This will cause a longer analysis time and possibly incorrect results if some
DLLs are stale. To achieve the best results, upload a zip that contains only the DLLs and PDB files for
the binaries you wish to analyze. Upload the source as a separate zip.
• C/C++. .zip containing C/C++ source files that will be analyzed by Software Risk Manager bundled
tools. Software Risk Manager will scan the .zip file for .h, .c, .hpp, and .cpp files. (Note: If your
project contains Objective-C source files then .h files will be treated as Objective-C rather than C/C++).
• Java source. .zip containing Java source files – with a .java extension – to be analyzed by the
Software Risk Manager bundled tools.
• Java bytecode. .zip containing .class or .jar bytecode files intended for the JVM.
• .NET. .zip containing C# or VB.NET source files – with a .cs or .vb extension.
• .NET DLLs. .zip containing compiled .dlls. You must also include the PDB files for .dlls you wish
to scan. Software Risk Manager will only scan .dlls with corresponding PDB files – unless there are
no PDB files, in which case Software Risk Manager will scan all .dlls but source location information
may be sub-optimal.
• iOS. .zip containing .ipa files. (Note: This detection is only for associating add-in tools with these
files).
• Windows UWP. .zip containing .appx files. (Note: This detection is only for associating add-in tools
with these files).
• Ruby on Rails. .zip containing Ruby source files that are inside an app/ directory.
• PHP. .zip containing PHP source files.
• PL/SQL. .zip containing PL/SQL source files.
• Python. .zip containing Python source files.
• JavaScript. .zip containing .js files; minified JavaScript will be ignored.
• Scala. .zip containing .scala files.
• Swift. .zip containing .swift files.
200
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Objective-C. .zip containing .m, .mm, .M, .h files. (Note: '.h' will only be detected as Objective-C if
there are other Objective-C file types in the '.zip').
• Terraform. .zip containing .tf files.
• Docker. .zip containing Dockerfile files. Note that this has no extension.
• Rust..zip containing Rust project files. Software Risk Manager will scan the .zip archive for the
Cargo.toml file (which is the manifest for Rust projects) and .rs source files.
Note: Software Risk Manager enforces a single source .zip archive per analysis. Although Software
Risk Manager supports multiple languages, the expectation is that they will all be packaged in a single
.ziparchive to enable consistent path correlation across all the checkers. And while source and
bytecode inputs can be uploaded in separate files, they do not have to be split up. A single .zip file
containing C/C++ source, Java source, Java bytecode, .NET DLLs, .NET source, PHP source, Scala
source, Ruby on Rails source, Python source, JavaScript source and Rust source is perfectly acceptable.
201
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Software Risk Manager also scans input to check for dependencies with known vulnerabilities.
The following dependencies are checked:
Software Risk Manager supports importing the results of commercial and open source application security
testing tools as well as a couple of generic tool result listing formats. The list of supported tools for scan
imports includes the built-in ones mentioned in the previous section. If one of the tools you want to import
is not supported, please let us know. However, in the meantime, you can convert your data to the generic
SRM Input XML format. The schema definition for this format and an example can be accessed via the
download icon in the Software Risk Manager header.
Note: Some tools will output empty files if no results were found, which cannot be detected by Software
Risk Manager as any particular format. For more information on empty or undetected tool results, see
Empty/Undetected Tool Results.
Supported Tools
Software Risk Manager supports various tools and tool types, including the following:
• SAST tools
• DAST tools
• IAST tools
• Mobile tools
• InfraSec tools
• Threat Modeling tools
• Component tools
• Container tools
• Cloud Infrastructure tools
• Bug Bounty tools
• Infrastructure as Code (IaC)
• Web Application Firewall (WAF)
202
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• AppDetective Pro
• AppSpider
• Aqua
• CodeSonar
• Dynatrace
• Helix QAC
• Parasoft
• Prisma Cloud Compute (Twistlock)
• SARIF
• SBOM Files
SAST Tools
Software Risk Manager supports the following SAST tools and import formats:
203
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
204
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Staticcheck: .json when using the -f json flag, with its console output redirected to a file.
• TFLint: .json file in compliance with SARIF format when using the -f sarif format option with
tflint command. Software Risk Manager currently allows importing TFLint results in SARIF format
only. The -f (or --format) option can be used to generate the SARIF formatted console output, which
can then be redirected to a file, for example: tflint -f sarif <file or directory>.
• TruffleHog: .json file with repository scan results.
• Veracode: either the .zip files generated when exporting XML results, or the .xml files contained
within them. Additionally, Veracode is a Tool Connector.
• Vet: .json from go vet by using the -json flag, with console output redirected to a file. It may
include build errors.
• WhiteHat: a Tool Connector.
• ZPA: .json using the zpa-cli command line tool, with the sq-generic-issue-import output-
format.
• Other source zip archives: .zip (zipped source archives display contextual source for findings on the
Finding Details page).
DAST Tools
Software Risk Manager supports the following DAST tools and import formats:
• Acunetix Desktop: .xml where the XML is generated by selecting Scans, then Select Scan, then
WAF Export, and then XML.
• Acunetix 360: a Tool Connector.
• AppSpider Vulnerability Summary: VulnerabilitiesSummary.xml; see the AppSpider Support
section for more information.
• Arachni: .json.
• APIsec: a Tool Connector.
• Burp Suite: .xmlwhen the Base64 encoding option is selected; consider using our Burp Suite plugin
to send results directly to Software Risk Manager.
• Defensics Fuzz Test: super-summary.xml.
• Dynatrace: a Tool Connector (Attack data only).
• Fortify WebInspect: .xml when these options are selected: File, then Export, then Scan Details. In
the Settings section, choose Full from the "Details:" dropdown menu and click Export.
• HCL AppScan Standard: .xml.
• HCL AppScan on Cloud (ASoC): .xml and a Tool Connector.
• Imperva: a Tool Connector.
• Invicti Standard (formerly Netsparker): .xml.
• Invicti Enterprise (formerly Netsparker Enterprise): Vulnerabilities List .xml report and a Tool
Connector.
• OWASP ZAP: .xml; consider using our OWASP ZAP add-on to send results directly to Software Risk
Manager.
• Qualys WAS: a Tool Connector.
• Polaris: a Tool Connector.
• Rapid7 InsightAppSec: a Tool Connector.
• Rapid7 InsightVM: a Tool Connector.
• Rapid7 Nexpose: .xml generated with the XML Export or XML Export 2.0 reports. See Rapid7
Nexpose Working with report formats and Report templates and sections for more information.
205
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Black Duck Managed Services Platform: .xml report and a Tool Connector.
• Tenable.io Web App Scanning: a Tool Connector.
• Tinfoil API: a Tool Connector.
• Tinfoil Web: a Tool Connector.
• Trustwave App Scanner: a Tool Connector.
• Veracode: .xml and .zip. Additionally, Veracode is a Tool Connector.
• WhiteHat: a Tool Connector.
• WPScan: .json.
• sqlmap output - Sqlmap does not provide a suitable output format; to that end we've developed a fork
of sqlmap, which has flags for exporting in the Software Risk Manager Custom XML format.
IAST Tools
Software Risk Manager supports the following IAST tools and import formats:
Mobile Tools
Software Risk Manager supports the following Mobile tools and import formats:
InfraSec Tools
Software Risk Manager configured with the InfraSec add-on supports the following Infrastructure tools and
import formats:
• AppDetective Pro: .xml Check Results reports; please see the AppDetective Pro Support section for
more information on report requirements.
• Tenable Nessus: .nessus.
• Tenable.io: a Tool Connector.
• Tenable.sc: a Tool Connector.
• Rapid7 Nexpose: .xml.
206
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• NMap: .xml that contains vulnerability information associated with scripts written using the NMap
Scripting Engine.
• Qualys VM: .xml generated with Scan-Based and Host-Based report templates and a Tool Connector.
Before generating a report with a Host-Based report template, ensure that "Vulnerability Details" and at
least one subsection are checked by navigating to the Display tab, in the "Edit Scan Report Template"
window, and looking under "Include the following detailed results in the report."
• Qualys VMDR: a Tool Connector.
• Qualys CS: .csv of "images" or "container" scans.
• SCAP: .xml file containing the SCAP tool's scan results.
Component Tools
Software Risk Manager supports the following Component tools and import formats:
• Black Duck Binary Analysis: a Tool Connector, .csv and .json is supported.
• Black Duck SCA: When Scan Farm is configured, Black Duck is available as a built-in tool. Also
accessible as a Tool Connector.
• Checkmarx One: a Tool Connector.
• Checkmarx OSA: a Tool Connector.
• Dependency-Check is a built-in scanner; .xml is also supported.
• Dependency-Track a Tool Connector.
• Dynatrace: a Tool Connector (Vulnerability data with no related container images only).
• GitHub Advanced Security (Dependabot) a Tool Connector.
• GitLab Security: .json and Report .zip.
• HCL AppScan on Cloud (ASoC): .xml and a Tool Connector.
• JFrog Xray: a Tool Connector, .json is supported
• Mend: a Tool Connector.
• NeuVector: a Tool Connector.
• Orca Security: a Tool Connector.
• Polaris: a Tool Connector.
• Retire.js is checked by Dependency-Check; if run externally, .json is supported.
• Snyk Open Source: a Tool Connector, .json is supported.
• Snyk License Compliance Management: a Tool Connector, .json is supported.
• Sonatype Nexus: a Tool Connector.
• Veracode: .xml and .zip. Additionally, Veracode is a Tool Connector.
• WhiteHat: a Tool Connector.
• WPScan: .json.
207
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Container Tools
Software Risk Manager supports the following Container tools and import formats:
• Anchore: a .json file generated using anchore-cli image vuln {image-name} all.
• Aqua Enterprise: a Tool Connector.
• Check Point CloudGuard: a Tool Connector (Vulnerability data only).
• Dynatrace: a Tool Connector (Vulnerability data with related container images only).
• GitLab Security: .json and Report .zip.
• Grype: a .json file with container image/filesystem results.
• Harbor: a .json or .csv Harbor vulnerability report.
• NeuVector: a Tool Connector.
• Orca Security: a Tool Connector.
• Snyk Container: a Tool Connector, .json is supported.
• Prisma Cloud Compute (Twistlock): a Tool Connector, a .json file generated with twistcli, or
one of the downloadable Twistlock CSVs in the Images, Scans, or Hosts format (the Connector is
strongly recommended); please see the Twistlock Support section for more information.
• Trivy: a .json file with container image results (other scan types are not yet supported).
• Prisma Cloud (RedLock): a Tool Connector (Alert data only), a .csv file of Alerts downloaded from
Prisma Cloud UI, or a .json file from the Prisma Cloud REST API "List Alerts V1" endpoint.
• AWS Security Hub: .json and a Tool Connector.
• Azure Security Center: a .csv file by clicking 'Download CSV report' from the 'Recommendations'
page in Microsoft Defender for Cloud.
• Check Point CloudGuard: a Tool Connector (Posture Finding data only).
• Wiz: a Tool Connector.
• Microsoft Defender for Cloud: a Tool Connector.
208
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• STIG: .ckl format checklist results exported by any common STIG tool.
AppDetective Pro
When generating a Check Results Report in AppDetective Pro, you will be given options for which fields to
include. For best results, we recommend including every field. However, at a minimum, the following fields
are required:
• Check Category
• Summary
• Overview
• Fix Information
• CVE
• References
• Links
• Vulnerability
• Description
• Show Occurrences
If any of these required fields are excluded, you will receive an error when uploading the report to Software
Risk Manager and analysis of the file will not be allowed.
AppSpider
Software Risk Manager accepts the VulnerabilitiesSummary.xml file from AppSpider. This file is
output as part of the report generation process within AppSpider.
To generate a report and locate the summary XML file:
209
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
CodeSonar
The preferred means of importing CodeSonar result into Software Risk Manager is to use the CodeSonar
Tool Connector. However, in situations where the machine running Software Risk Manager and the
machine running CodeSonar cannot communicate with each other, the CodeSonar-Scrape utility can
bridge the gap.
CodeSonar-Scrape is a command-line utility that you can use to generate a Zip file that Software Risk
Manager understands as CodeSonar results. You provide it the URL of your CodeSonar server, the name
of the project you want to import into Software Risk Manager, and optionally your username and password.
SRM will find all of the "warnings" associated with that project and download them into a Zip file, which you
can then upload to Software Risk Manager. Results imported in this manner will include descriptions
(tracing) information and links back to CodeSonar's hub for warning details and category documentation.
Detailed instructions for this tool can be found in the CodeSonar-Scrape User Guide. If you need
CodeSonar-Scrape or have questions, please contact us.
Dynatrace
Software Risk Manager supports data ingestion via the Dynatrace Tool Connector.
Connector authentication is performed with an access token. The user should have both the Read
security problems and Read attacks scopes for this token.
Helix QAC
Software Risk Manager supports the importation of Helix QAC rule compliance reports (.csv). The
instructions below show how to use the Helix QAC GUI to create a rule compliance report on your local
machine that you can upload to SRM.
To generate a rule compliance report from the Helix QAC GUI:
1. Click Report from the main menu and use the dropdown list to select which project or files to use.
2. Click the "Report Type" field and select "Rule Compliance Report" from the dropdown list.
3. Confirm the output location and the name of the report in the location and name fields.
You can either use the default settings or enter new values in the respective fields.
4. Click OK.
The report will be generated and placed in the selected output folder.
You can now upload the Helix QAC rule compliance report to SRM.
210
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Parasoft Support
Software Risk Manager accepts the XML SATE reports generated by Parasoft tools, which can be
generated using both the GUI and CLI. For more information, click here.
211
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Twistlock requires the base image to be in one of its configured registries, and the base image
must have been previously scanned:
To define your base images, go to Defend > Vulnerabilities > Images > Base images. The base images
you define must reside in your registry and they must be scanned to exclude their vulnerabilities from scan
reports.
SARIF
Software Risk Manager strictly supports the v2.1.0 SARIF spec as outlined here and detailed here. New
formats will be added explicitly; support for v2.1.0 does not imply support for v2.1.1, and so on.
Note: All ingested SARIF results will be detected as "SAST," regardless of whether a "Container
Analysis" tool generated it.
Limitations
Software Risk Manager support for SARIF currently does not include the following notable features:
212
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
between the location reported by the SARIF result and the location used by Software Risk Manager.
SBOM Files
Software Risk Manager supports the following SBOM import formats:
Note: Uploading and analyzing SBOM files will not result in any new findings. The purpose of importing
SBOM files is to provide a single place to retrieve SBOMs and to store them.
For Aqua Enterprise on-prem deployment, the connector only requires giving credentials for an Aqua user
with the necessary permissions. However, in an Aqua SaaS instance, the process of getting the necessary
credentials for the connector is more complicated. In this case, Aqua SaaS requires creating a permission
set, role, and an access token, as shown below.
To prepare credentials for the connector:
b. Select User Management > Permission Sets from the left menu.
213
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
c. Click "Add Permission Set" and enter a name in the Name field.
d. Expand the Assets category, locate "Images," and enable "view" by clicking the corresponding
icon.
This is needed for access to images.
e. Expand the Compliance category, locate "Vulnerabilities," and click the view icon.
This is needed for access to vulnerability reports on a finer, per-image-layer basis.
Note: (Optional) SRM will detect when this permission is unavailable and alter its logic
appropriately.
f. Click Save.
3. Create a role and assign the previously created permission set:
a. Select User Management from the left navigation menu and click Roles.
b. Click Add Role.
c. Enter a name in the Name field, select a permission set, and select an application scope.
d. Click Save.
4. Create an API Key:
a. Select Settings from the left navigation menu and click API Keys.
b. Click Generate Key and save the API Key and Key Secret.
c. Click the configuration icon to the right of the new API Key and select Edit.
d. Disable "Global Permissions."
e. Enable "roles:assign", "tokens:readwrite", permission (needed to authenticate with token).
Note: For "tokens:readwrite", give it permission to use the role created previously.
f. Click Save.
The role name from step 3 is used for the “Role Names” connector form field. The API Key and Key Secret
from step 4 are used in the “API Key” and “API Key Secret” connector form fields.
214
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Software Risk Manager imports results from JFrog Xray using its built-in Reports feature, which collects a
list of vulnerabilities for all scanned artifacts that match the specified filters. While this data includes the list
of vulnerabilities and the affected artifacts, it does not include a list of the scanned artifacts.
If a new version of an artifact is uploaded and scanned by JFrog Xray, and if it is found to have zero
vulnerabilities, that artifact may not have any entries in the report and vulnerabilities from older versions of
the artifact may still be present. While SRM does track the list of affected artifacts through the "JFrog
Impacted Artifacts" field on individual results, the existence of findings in the scanned project gives a false
impression of its state and makes it harder to tell which vulnerabilities are still present in the most recent
artifacts of interest.
Requests by SRM for the Build report type automatically include a filter to only fetch results for the latest
build. However, Repository reports do not have this option, which necessitates detection and filtering by
SRM to determine the latest version and its associated results.
When the JFrog Xray connector is configured to use Repository reports, SRM can perform a variety of
additional checks to discover the most recent version of each affected artifact. The types and number of
checks done will depend on which options are selected in the connector configuration form.
The "None" option may be used if you are interested in vulnerabilities across all versions of the affected
artifacts. The "Report Only" option may be used if you expect the scanned artifacts to always contain at
least some vulnerabilities. The "Active Search" option may be used if you expect at least some scanned
artifacts to be completely free of vulnerabilities.
When a "latest version" is detected, its artifact ID and file path are recorded and used as a filter on the list
of vulnerabilities in the JFrog Xray report.
Note: This logic is also used to filter for specific versions when "Version Filtering Mode" is set to "Text
Pattern."
SRM will take each artifact ID, its file path, and scan time for the artifact, and group this information
together based on the parsed package ID. For each group, the entry with the most recent scan time will be
215
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
216
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
package versions) and immediately returns the first package version in the list. This reduces the
number of requests to Get Package Versions.
It is typically safe to enable "Optimistic" filtering for the following package types:
• Docker
• Maven
• NPM
• Go
• Composer
• NuGet
• PyPi
• Conan
It is recommended to start with the "Accurate" optimization to get a baseline set of results and confirm that
other optimization options are consistent with that baseline.
Parasoft Support
Software Risk Manager accepts the XML SATE reports generated by Parasoft tools, which can be
generated using both the GUI and CLI.
1. Run a scan.
2. Click the Test Progress summary tab and click the Generate Report button in the toolbar.
The Report and Publish dialog will open.
3. Click Preferences.
4. Click the Format dropdown and select XML SATE (Static Analysis Tool Exposition).
5. Click Apply, then click OK.
The Report and Publish dialog will open.
6. Select the option to open the report in a browser.
7. Click OK.
The generated report will appear above the Test Progress and summary tab; the location of the file on
disk will display in the report tab.
1. Create a file containing the proper report preferences, one setting per line.
The file must contain at least these settings:
217
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• report.custom.extension=xml
• report.format=sate
2. Select Parasoft -> Preferences from the toolbar.
3. Select Parasoft (root).
4. Click the "share" link in the "Configure settings" section.
5. Enter the filepath into the text box.
This will be where your settings file will be located.
6. Check the "Reports" option, then click OK.
7. Run the CLI with the following options:
• -localsettings path/to/settings/file
• -report path/where/report/should/go/filename.xml
The report to upload to Software Risk Manager will be at path/where/report/should/go/
filename_report.xml or path/where/report/should/go/filename_sate.xml
SonarQube Support
When using SonarQube, there are two potential issues to be aware of. The first deals with permissions;
the second, listings.
Permissions
Non-admin tokens may see permission-related issues when importing projects or when running analyses.
SRM performs permission checks during project import to prevent the selection of items that cannot be
accessed. Consequently, you should note the following:
• These checks can greatly extend the runtime of project auto-import through the Integrations page.
• The additional requests can cause rate-limiting errors when accessing SonarQube.
• Projects that are successfully imported may later see analysis errors if the token has some permissions
revoked at a later time.
However, if you are using an admin token, you can set sonarqube.permission-checks.enabled =
false in the SRM props file to disable these permission checks during project import. (This will not affect
permission checks done during analysis.)
Listings
SonarQube has an internal limit of 10,000 items when listing any sort of data from their API. This affects
lists of projects, bugs, hotspots, and so on.
When listing projects, SRM will stop once it reaches this internal limit, which can prevent some projects
from appearing. However, if an admin token is provided, SRM will use an alternative method that will
bypass the 10,000 project limit, allowing SRM to show the full list of projects. Note: This ability to bypass
the project limit does not apply to any other data requested from SonarQube.
When listing issues during analysis, SRM mitigates this limit by using specific lists like “critical bug issues
in project X” instead of larger lists like “all issues in portfolio Y.” Nevertheless, it’s still possible for these
218
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
“specific” lists to exceed the 10,000 project limit, in which case analysis will fail with an error.
Starting an Analysis
There are several ways to prepare and initiate an analysis with Software Risk Manager.
For detailed instructions on running an analysis, click one of the links below:
Analyses can be prepared and initiated manually from the Software Risk Manager web interface.
Note: To start an analysis, you will need a defined project and a current analysis configuration.
To start an analysis:
1. Click the Projects icon on the navigation bar to open the Projects page.
2. Click the project's dropdown configuration icon and select New Analysis.
3. Select a target branch from the Target Branch dropdown menu.
You can choose an existing branch or create a new one by typing a new (unique) name into the branch
field. Entering text will also filter the existing branch names.
4. Click Add File to upload files for analysis.
As you add files, they will be uploaded to the SRM server for identification. Once the server has
identified the file contents, SRM will display the following information:
• Detected Content
• Tools to Run
Use the checkbox on the tag to disable (or re-enable) that tag. Disabling a tag in the Tools to Run
section will tell SRM not to run that tool, even though it is applicable to that file.
5. Click Begin Analysis.
Analysis is conducted as a "job." The work order is placed in the job queue and will be executed once
enough resources are free. Often, the time spent in the queue is negligible, but you might still see a
message stating that the analysis has been queued. Once the analysis job is finished queueing, the
analysis will begin. The page will display a timer to indicate the current duration of the analysis.
The actual duration of the analysis depends on several factors, including the following:
• How big is your application? An application's size is likely the most significant factor in determining the
duration of an analysis. Smaller apps usually take around 30 seconds, medium-size apps can take tens
of minutes, and large apps can take hours or more.
• Is Software Risk Manager running tools for you? If so, the analysis duration will include the time it takes
to run these tools. The time it takes to run a tool on your application will usually grow as your
219
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
application grows.
• How much activity is going on in Software Risk Manager? More activity by users of Software Risk
Manager means more load on the database, which can slow down analysis to some degree.
• How many findings can be discovered? This is difficult to know ahead of time, but the number of tool
results/findings in a project will also affect the analysis duration. In this manner, a small application with
many vulnerabilities might take longer to analyze than a large application with very few vulnerabilities.
Once the analysis has been queued, it is safe to leave the page. The analysis will continue in the
background. Keep the page open, however, is recommended in order to see any warnings or errors that
might occur during the analysis.
If the analysis completes successfully, the analysis timer will become a link to the Findings page. Any
currently-opened Findings pages will be updated to reflect the latest analysis results.
Software Risk Manager offers an expanding API to interface with the system's functionality
programmatically. The ability to push files for an analysis by Software Risk Manager is exposed by the API.
This enables automated integration scenarios such as continuous integration. In a continuous integration
scenario, a post-build step can be added to the build jobs to automatically push the source and compiled
artifacts to Software Risk Manager for analysis. This type of setup is strongly recommended for
development teams to catch potential issues within their codebases early for quick remediation. (Software
Risk Manager offer a Jenkins plugin to facilitate use in a continuous integration context.)
Before an API key can be used for automated analyses, the key must be assigned the create role for the
project. The API call to push the files and initiate the analysis is documented in the Software Risk Manager
API Guide.
Tool Orchestration
220
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
When the Tool Orchestration Service is enabled, Software Risk Manager can orchestrate analyses that run
in whole or in part on your Kubernetes (k8s) cluster. (See the Tool Orchestration Configuration section in
the Software Risk Manager Install Guide for instructions to enable this feature.)
A Software Risk Manager analysis may run one or more built-in code scanners. Many of those tools can
run on your Kubernetes cluster when you enable the tool orchestration feature. Those that cannot, such as
Dependency Check, will continue to run on the Software Risk Manager web server.
The following table shows which bundled tools Software Risk Manager can run on your k8s cluster.
Table 1.
Bundled Tool Tool Orchestration Support
Brakeman Yes
CheckStyle Yes
CPPCheck Yes
DependencyCheck No
ESLint Yes
FxCop (user-installed) No
Gendarme Yes
JSHint Yes
PHP Code Sniffer Yes
PHP MD Yes
PMD Yes
Pylint Yes
Retire JS No
ScalaStyle Yes
SpotBugs Yes
ZPA CLI Yes
Software Risk Manager also includes the following tool orchestration capabilities that run only on your k8s
cluster:
• Checkmarx
• Security Code Scan
• ZAP
A single Software Risk Manager analysis can have tools running on both the webserver and on multiple
nodes of your k8s cluster. All tool outputs will be combined into one analysis that either succeeds or fails
as a whole, provided the Software Risk Manager web server remains online throughout the analysis.
If the Software Risk Manager web application unexpectedly restarts, a built-in fail-safe lets Software Risk
Manager receive k8s analysis results from abandoned orchestrated analyses. Software Risk Manager will
lose any results from bundled tools in this case, so a restart of the Software Risk Manager web application
221
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
is one scenario where Software Risk Manager may process results from a partially completed analysis.
When Software Risk Manager detects an orchestrated analysis that it is not tracking, a message will
appear on the Orchestrated Analyses page.
You can configure Software Risk Manager to run additional tools by implementing other add-in tools.
For additional information, see the following sections:
• Resource Requirements
• Scanning a Request File
• Adding a Tool
Resource Requirements
When the Tool Orchestration Service is enabled, Software Risk Manager can create orchestrated analyses
that run one or more application security testing tools where each tool has access to its host's memory and
CPU resources. Using Kubernetes (k8s) tools, you can control the memory and CPU capacity available to
analyses. You can also improve k8s scheduling outcomes by requesting CPU or memory capacity for
specific tools or projects. Resource requirements can also include a node selector and pod toleration, with
taint effects NoSchedule and NoExecute, to influence further where tools run on your cluster.
The resource requirements feature cannot be configured using the Software Risk Manager user interface,
but you can use the k8s kubectl command to define configuration maps (configmaps) that cover specific
scope determined by a special naming convention. The tool service will look for and read optional
configmaps to determine how resource requirements apply to a specific tool run.
Resource requirements containing CPU and memory instructions translate to k8s resource requests and
limits and fit with any other related k8s configuration, such as a resource limit defined for a k8s
namespace. You can specify resource requirement data by using the following configmap field names:
There are four types of configmaps that can contain resource requirements:
• Global
• Global Tool
• Project
• Project Tool
Software Risk Manager deployment creates the Global Resource Requirement, which provides default
resource requirements for tools across every Software Risk Manager project. Global Tool requirements
override Global requirements for specific tools. Project requirements override both Global and Global Tool
222
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
requirements by providing default resource requirements for tools associated with a given project. And
Project Tool requirements override other requirements by specifying values for a specific tool in a specific
project.
Scope Overlap
The following is an example of how the scopes can overlap:
Global Resource Requirement:
• CPU Request = 1
• CPU Limit = 4
• Memory Request = 11G
• Memory Limit = 12G
• CPU Request = 3
Here are the effective resource requirements resulting from the above:
Effective Resource Requirement:
• CPU Request = 3
• CPU Limit = 4
• Memory Request = 13G
• Memory Limit = 14G
• Global: cdx-toolsvc-resource-requirements
• Global Tool: cdx-toolsvc-ToolName-resource-requirements
• Project: cdx-toolsvc-project-ProjectID-resource-requirements
• Project Tool: cdx-toolsvc-project-ProjectID-ToolName-resource-requirements
where ProjectID is the integer value representing the Software Risk Manager project identifier and
ToolName is the tool name converted to an acceptable k8s resource name by the following rules:
• Uppercase letters must be converted to lowercase.
• Any character other than a lowercase letter, number, dash, or period must be converted to a dash.
• An initial character that is neither a number nor a lowercase letter must be preceded by the letter "s."
• A name whose length is greater than 253, must be truncated to 253 characters.
223
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
apiVersion: v1
kind: ConfigMap
metadata:
name: cdx-toolsvc-project-21-resource-requirements
data:
requests.cpu: "1"
limits.cpu: "2"
requests.memory: "1G"
limits.memory: "2G"
Note: You can find a project's ID at the end of its Findings page URL. For example, a project with the ID
21 will have a Findings page URL that ends with /srm/projects/21.
Run the following command to create the configmap resource (replacing the cdx-svc k8s namespace, if
necessary).
apiVersion: v1
kind: ConfigMap
metadata:
name: cdx-toolsvc-eslint-resource-requirements
data:
224
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
requests.cpu: "2"
limits.cpu: "3"
requests.memory: "4G"
limits.memory: "5G"
Run the following command to create the configmap resource (replacing the cdx-svc k8s namespace, if
necessary).
apiVersion: v1
kind: ConfigMap
metadata:
name: cdx-toolsvc-mytool-resource-requirements
data:
nodeSelectorKey: canrunmytool
nodeSelectorValue: yes
Run the following command to create the configmap resource (replacing the cdx-svc k8s namespace, if
necessary):
An add-in tool is based on a scan request file that you define and register with Software Risk Manager. A
scan request file contains the instructions that the tool service needs to invoke an application security
testing tool on the k8s cluster and ingest its output into Software Risk Manager. Scan request files use the
TOML file format. You can specify any valid TOML content in your tool's scan request file provided you
specify the request table, which is a reserved section with the following parameters.
225
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
Key Description Required?
imageName The name of the Docker image containing your add-in tool Yes
workDirectory The work directory where your add-in tool can find tool inputs Yes
shellCmd The Bourne shell command to invoke your add-in tool Yes
resultFilePath The output of your add-in tool Yes
logFilePaths An array of log files produced by your add-in tool No
preShellCmd An optional command to run prior to invoking the shellCmd No
postShellCmd An optional command to run after invoking the shellCmd No
securityActivit The Intelligent Orchestration security activities supported by this tool
No
ies (e.g., sca, sast, dast)
A tool run ends in an error when either shellCmd, preShellCmd, or postShellCmd return a non-zero exit
code. When the tool service runs an add-in tool, it creates the following directory structure at the path
specified by the value of the workDirectory key.
Table 2.
Content Description
A directory containing zero or more certificates that should be considered
/ca-certificates
trusted certificate authorities
/config/ A copy of the tool's scan request file, including any project-specific
request.toml configuration
/input A directory containing an optional input file
/volume-secret A system directory required for storing tool outputs
Zero or more workflow secrets associated with an add-in tool's project
/workflow-secrets
configuration
When the tool service invokes an add-in tool, it provides the tool with a copy of its scan request file, so the
file is a convenient place to store configuration data. After you register an add-in tool, Software Risk
Manager lets you edit TOML content outside the request table on a per-project basis, so you can have
key values that vary by project. For example, a DAST tool might have a scan request file with a key whose
value indicates the URL from which to start a scan; the URL can vary from one Software Risk Manager
project to the next.
You can add an application security testing tool to the list of tools that Software Risk Manager can run on a
Kubernetes cluster by completing the following tasks:
226
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
2. Package the capability into a Docker image that can be invoked from a Bourne shell.
3. Define a scan request file, specifying (at a minimum) the key values of the Software Risk Manager
request table.
4. Register the add-in tool.
5. Enable the tool for specific projects, configuring any project-specific key values defined in the scan
request file.
This walkthrough will show you how to create, register, and enable an add-in tool that automates Security
Code Scan, a static code analysis tool for .NET. The Security Code Scan add-in tool is automatically
installed when you enable the Software Risk Manager Tool Orchestration feature, but you can use this
walkthrough to learn how to add a new add-in tool whose output must be transformed to the Software Risk
Manager XML Schema.
Tool Automation
Your first task will be to create a PowerShell Core script that can automate Security Code Scan. We will
use a script that defines two parameters: a path to an input archive containing C# source and a path to an
output file with findings that Software Risk Manager can ingest.
Create a directory called SecurityCodeScan. Download SecurityCodeScan.ps1 to the directory. The
PowerShell Core script you downloaded takes the following steps to automate Security Code Scan.
1. Unpack the source code in the input file provided by Software Risk Manager.
2. Add the SecurityCodeScan.VS2017 project reference to each source code project file.
3. Run dotnet build.
4. Translate the findings from the build results into the generic SRM XML format.
The last step is required because Software Risk Manager does not support ingesting Security Code Scan
findings directly. If you were automating Checkmarx, a tool whose output Software Risk Manager can read,
then Step 4 would be unnecessary. You will handle Step 4 with a separate script, so download
SecurityCodeScan-Results.ps1 to your SecurityCodeScan directory.
Tool Packaging
To package the Security Code Scan automation, you must create a Docker image capable of running both
PowerShell Core scripts and compilations of .NET Core 2 code. Adding PowerShell Core to a Docker
image based on microsoft/dotnet:2.2-sdk creates a suitable environment.
Download Dockerfile.txt to your SecurityCodeScan directory, and run the following command from that
directory to generate a Docker image that can automate Security Code Scan.
227
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
[request]
imageName = "codedx-securitycodescanrunner:v1.0"
workDirectory = "/opt/codedx/securitycodescan/work"
shellCmd = '''
source=$(ls /opt/codedx/securitycodescan/work/input)
pwsh /opt/codedx/securitycodescan/script/SecurityCodeScan.ps1 \
"/opt/codedx/securitycodescan/work/input/$source" \
/opt/codedx/securitycodescan/work/output/securitycodescan.output.x
ml
'''
resultFilePath = "/opt/codedx/securitycodescan/work/output/securitycodesca
n.output.xml"
securityActivities = ['sast']
The value of the imageName key is codedx-securitycodescanrunner:v1.0, the Docker image you
created. The workDirectory key value is /opt/codedx/securitycodescan/work, a directory that already exists
because your Dockerfile established a /opt/codedx/securitycodescan/work/output directory to store the
result from SecurityCodeScan.ps1. Software Risk Manager uses the work directory to store add-in tool
data.
The shellCmd key value is the Bourne shell script Software Risk Manager will run to invoke your add-in
tool. SecurityCodeScan.ps1 requires two parameters: an analysis input file and an output file. Software
Risk Manager puts the analysis input file in the input directory, which is a sub-directory of the work
directory. The analysis input file parameter will come from a search of that directory, and the output file will
be /opt/codedx/securitycodescan/work/output/securitycodescan.output.xml. The
value of the resultFilePath key directs Software Risk Manager to the add-in tool output and will match the
script's output file parameter.
In this example, you did not use the optional scan request file keys. The logFilePaths key is unnecessary
because SecurityCodeScan.ps1 writes log information to stdout, and the shellCmd does not require any
pre or post commands that you could accomplish with preShellCmd and postShellCmd.
Note: securityActivities is used to define the add-in tool type for use in Intelligent Orchestration
implementations.
228
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Click Create New Tool to open the Add-In Tool Registration window.
229
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Click the New Tool label in the window title area, replace the text with a meaningful name, like Security
Code Scan, if that name is not in use, and click OK.
Security Code Scan is a SAST tool requiring an analysis input, so you must associate your add-in tool with
one or more types of content that Software Risk Manager can detect. Select Source Code for Tag type, C#
for Language, and click Add Tag so that Software Risk Manager will offer to run Security Code Scan
whenever it detects an analysis input file containing C# source. Lastly, specify the contents of your scan
request file in the TOML Spec section. Click Done to save your add-in tool registration.
Software Risk Manager will offer to run enabled add-in tools whenever it detects an analysis input
containing C# source code in the project where you enabled the add-in.
230
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Users will have the option to deselect your add-in tool when they start a new analysis. For example,
Software Risk Manager does not distinguish between C# source code for .NET Core and .NET
Framework, and since your add-in tool runs on Linux, it supports .NET Core code only. A user configuring
a new analysis with .NET Framework source code (not .NET Core source code) could deselect your add-in
tool in that case.
Not all of the tools supported by Software Risk Manager report risk in the same way. For this reason, the
severity and status findings reported by each tool are converted or "mapped" to SRM risk ratings.
To see how each tool's findings are mapped, use the links below to locate the desired tool. Tools are
grouped according to type.
The tables below show the severity and triage status mappings for all of the SAST tools that are supported
by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
231
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Severity Mapping
232
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
SAST Tools Critical High Medium Low Info Unspecified
Correctness;
Correctness:
Usability,
Messages, Fatal;
Topography;
Correctness:
Usability, Icons;
Messages, Error; Correctness:
Usability;
Internationalization Messages
Android Lint1 Security
, Fatal; Warning,
Accessibility;
Internationalization
Internationalization Performance
, Warning; Bi-
, Error; Bi-
directional Text,
directional Text,
Warning
Fatal; Bi-directional
Text, Error
Armorize
HIGH MEDIUM LOW
CodeSecure
Brakeman
Checkmarx Info / 0, Unspecified,
4 High / 3 Medium / 2 Low / 1
(SAST) Information Unknown
Checkmarx One
CRITICAL HIGH MEDIUM LOW INFO
(SAST)
Checkstyle
Clang
Clang
CRITICAL HIGH MEDIUM LOW STYLE
(CodeChecker)
Clippy error warning note / failure-note help none
CodePeer high medium low
233
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
234
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
235
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
236
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
237
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Android Lint evaluates risk based on both a category and a severity level. Categories are indicated by
an asterisk.
2. CodeSonar reports risk through a combination of a ranking formula and an analysis warning system
(red, yellow, green). Software Risk Manager uses the red, yellow, and green statuses to map to high,
medium, and low, respectively.
3. Fortify reports risk by creating scores for “impact” and “likelihood.” The combination of these scores is
then mapped to the Software Risk Manager severity levels.
238
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
SAST Tools Ignored False Positive To Be Fixed Mitigated Fixed Reopened
Android Lint
Armorize
CodeSecure
Brakeman
Checkmarx NOT_EXPLOITAB URGENT / 3;
False Positive
(SAST) LE / 1 CONFIRMED / 2
NOT_EXPLOITAB
Checkmarx One LE; URGENT;
(SAST) PROPOSED_NOT CONFIRMED
_EXPLOITABLE
Checkstyle
Clang
Clang false_positive,
intentional confirmed
(CodeChecker) suppress
Clippy
CodePeer not a bug false positive
CodeSonar-
Scrape**
CppCheck
Coverity Intentional, ignore False Positive
DISMISSED
Coverity On INTENTIONAL,
FALSE POSITIVE TO BE FIXED
Polaris DISMISSED
OTHER
239
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
240
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
241
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
242
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the DAST tools that are supported
by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
243
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
DAST Tool Critical High Medium Low Info Unspecified
Acunetix Desktop high medium low info
INFORMATION
IMPORTANT,
Acunetix 360 CRITICAL MEDUIM LOW (BEST
HIGH
PRACTICE)
AppSpider Vulnerability
4 5 6 1, 0
Summary
APIsec Blocker, Critical Major, High Medium Minor, Low Info
Arachni high medium low informational
Burp Suite high medium low informational
Defensics fail warning
Dynatrace
HP WebInspect 4 3 2 1 0
HCL AppScan Standard
Critical High Medium Low Information
(enterprise)
HCL AppScan on Cloud
Critical High Medium Low Information
(ASoC)
Imperva* CRITICAL MAJOR MINOR
Invicti Standard Critical, Important, Information (Best
Medium Low
(formerly Netsparker) High Practice)
Invicti Enterprise
Information (Best
(formerly Netsparker Critical Important, High Medium Low
Practice)
Enterprise)
OWASP ZAP 3 2 1 0
244
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
245
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
246
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
DAST Tool Ignored False Positive To Be Fixed Mitigated Fixed Reopened None
Acunetix Desktop
Acunetix 360 Accepted Risk False Positive Fixed
AppSpider
Vulnerability Summary
APIsec
Arachni
Burp Suite
Defensics
Dynatrace
HP WebInspect
HCL AppScan
noise passed fixed reopened
Standard (enterprise)
HCL AppScan on
noise passed fixed reopened
Cloud (ASoC)
Imperva*
Invicti Enterprise
(formerly Netsparker Accepted Risk False Positive Fixed
Enterprise)
OWASP ZAP
dismissed (any dismissed
Polaris to-be-fixed
other reason) (false positive)
Qualys WAS
247
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
DAST Tool Ignored False Positive To Be Fixed Mitigated Fixed Reopened None
unreviewed,
Rapid7 InsightAppSec ignored false positive verified remediated
duplicate
Rapid7 InsightVM
Rapid7 Nexpose
Black Duck Managed
False Positive
Services Platform
Tenable WAS
Tinfoil Web
Trustwave App
Scanner
Mitigate by
Design,
Reported to Mitigate by
Accept the Potential False
Veracode Library Network
Risk Positive
Maintainer Environment,
Mitigate by OS
Environment
accepted, out
WhiteHat Invalid, false open, mitigated
of scope
WPScan
Sqlmap output
248
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the IAST tools that are supported
by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
249
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
IAST Tool Critical High Medium Low Info Unspecified
Checkmarx Unspecified,
Critical / 4 High / 3 Medium / 2 Low / 1 Informational / 0
(IAST) Unknown
Contrast Critical High Medium Low Note
HCL AppScan on
Critical High Medium Low Information
Cloud
NowSecure
Workstation
Q-MAST CRITICAL HIGH MEDIUM LOW
Black Duck
critical high medium low informational
Seeker
250
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
251
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
IAST Tool Ignored False Positive To Be Fixed Mitigated Fixed Reopened
Checkmarx NOT_A_PROBLE
CONFIRMED REMEDIATED
(IAST) M
URL access limited
Confirmed or
Contrast or internal security False Positive Remediated
Suspicious
control
HCL AppScan on
noise passed fixed reopened
Cloud
NowSecure
Workstation
Q-MAST
Ignored / Won't Fix
Black Duck
/ Intentional, False Positive Fixed
Seeker
Archived
252
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the Mobile tools that are
supported by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
253
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
Mobile Tool Critical High Medium Low Info Unspecified
Data Theorem
critical high medium low information
Mobile Secure
HCL AppScan on
Critical High Medium Low Information
Cloud (ASoC)
MobSF
MobSF Scan
NowSecure AUTO
NowSecure
INTEL
NowSecure
critical high medium low info unknown
Workstation
254
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
255
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
Mobile Tool Ignored False Positive To Be Fixed Mitigated Fixed Reopened
Data Theorem
Mobile Secure
HCL AppScan on
noise passed fixed reopened
Cloud (ASoC)
MobSF
MobSF Scan
NowSecure AUTO
NowSecure
INTEL
NowSecure
Workstation
256
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the InfraSec tools that are
supported by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
257
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
InfraSec Tool Critical High Medium Low Info Unspecified
AppDetective Pro high medium low informational
258
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Tenable Nessus reports risk through a "category" ranking (1-3) and a severity level (0-4).
2. NMap reports risk using a CVSS score.
259
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
InfraSec Tool Ignored False Positive Fixed Mitigated Fixed Reopened
AppDetective Pro
Tenable Nessus
Rapid7 Nexpose
NMap
Qualys VM
Qualys CS
SCAP
Qualys VMDR
260
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the Threat Modeling tools that are
supported by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
261
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
Threat Modeling
Critical High Medium Low Info Unspecified
Tool
IriusRisk1 Critical (76-100) High (51–75) Medium (26–50) Low (1–25) Very Low (0)
Microsoft Threat
Modeling Tool high medium low
2016
SD Elements 9+ 7–8 5–6 1–4
262
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. IriusRisk threats are assigned a severity in SRM based on their Current Risk value. The risk ratings are
mapped to SRM severities based on this mapping.
263
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
Threat Modeling
Ignored False Positive To Be Fixed Mitigated Fixed Reopened
Tool
IriusRisk
Microsoft Threat
Mitigation
Modeling Tool Not Applicable
Implemented
2016
SD Elements
264
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the Component tools that are
supported by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
265
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
Component
Critical High Medium Low Info Unspecified None
Tool
Black Duck
Binary
Analysis1
*CVSSv3 >=9* >=7* , >=7** <=4* , <=4** >0* , <=0** =0* <0* , <0**
mapping
**CVSSv2
mapping
266
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Component
Critical High Medium Low Info Unspecified None
Tool
(Vulnerabilities
Scan)
Polaris critical high medium low informational
Retire.js high medium low
Snyk Open
critical high medium low
Source
Snyk License
Compliance critical high medium low informational
Management
Sonatype
critical severe moderate low no threat, none
Nexus
Veracode 4 3 2 1
low, Multiple
licenses,
high, Rejected
WhiteSource medium Multiple library License results
by policy
versions, New
library version
WhiteHat
informational,
(Legacy Rating urgent, critical high medium low
note
System)
WhiteHat
(Advanced Critical High Medium Low Note
Rating System)
267
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. To use CVSS version 3 mapping for CVSS version 2 scores, set cvss.use-cvss3-buckets = true
in the SRM props file.
2. Dynatrace only produces severities for Vulnerability results and not for Attack results. Dynatrace Attack
findings will have no severity in SRM.
268
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
Component Tool Ignored False Positive To Be Fixed Mitigated Fixed Reopened
Black Duck FD (feature VP (vendor
Binary Analysis disabled) patched)
Remediation
Black Duck Hub Duplicate, Ignored Mitigated
Complete
NOT_EXPLOITAB
Checkmarx One LE; URGENT;
(SCA) PROPOSED_NOT CONFIRMED
_EXPLOITABLE
Dependency-
check
Dependency- not affected,
false positive
Track suppressed
Dynatrace RESOLVED
GitHub Security CLOSED
GitLab Security
JFrog Xray
NeuVector
Orca Security
(Vulnerabilities
Scan)
dismissed (any dismissed (false
Polaris to-be-fixed
other reason) positive)
Retire.js
Snyk Open Ignored Patched
269
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
270
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the Container tools that are
supported by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
271
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
Container Tool Critical High Medium Low Info Unspecified
Anchore critical high medium low negligible
sensitive data,
Aqua CSP critical malware, high low negligible unknown
medium
Check Point
Critical High Medium Low Informational
CloudGuard
Dynatrace* CRITICAL HIGH MEDIUM LOW
Grype Reader Critical High Medium Low Unknown
GitLab Security critical high medium low informational
Harbor Critical High Medium Low Negligible Unknown
Microsoft
Defender for Critical High Medium Low
Cloud
NeuVector critical high / error medium / warn low / note
Orca Security CRITICAL HIGH MEDIUM LOW INFO
Prisma Cloud
medium /
Compute critical / important high low
moderate
(Twistlock)
Snyk Container critical high medium low
Trivy CRITICAL HIGH MEDIUM LOW UNKNOWN
272
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
*Dynatrace only produces severities for Vulnerability results and not for Attack results. Dynatrace Attack
findings will have no severity in SRM.
273
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
Container Tool Gone New Ignored False Positive To Be Fixed Mitigated Fixed
Anchore
Aqua CSP
Check Point
CloudGuard
Dynatrace* RESOLVED
not-fixed,
Grype Reader Fixed wont-fix
unknown
GitLab Security
Harbor
Microsoft
Defender for
Cloud
NeuVector
Orca Security
Prisma Cloud
Compute
(Twistlock)
Snyk Container ignored patched
Trivy
274
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the Cloud Infrastructure tools that
are supported by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
275
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
Cloud
Infrastructure Critical High Medium Low Info Unspecified
Tool
Prisma Cloud
critical high medium low informational
(RedLock)
AWS Security informational,
critical, 80+ high, 60–...–79 medium, 40–...–59 low, 20–...–39
Hub* 0–...–19
Azure Security
critical high medium low informational
Center
Check Point
Critical High Medium Low Informational
CloudGuard
Microsoft
Defender for Critical High Medium Low
Cloud
Wiz CRITICAL HIGH MEDIUM LOW INFORMATIONAL
276
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
*AWS reports risk through a ranking [1–100] and a severity level [low, medium, etc.]. Both are listed.
277
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
Cloud
Infrastructure Ignored False Positive To Be Fixed Mitigated Fixed Reopened
Tool
Prisma Cloud
Snoozed
(RedLock)
AWS Security
suppressed notified resolved
Hub*
Azure Security
Center
Check Point
CloudGuard
Microsoft
Defender for
Cloud
Wiz
278
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the IaC tools that are supported
by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
279
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
IaC Tool Critical High Medium Low Info Unspecified
Checkmarx One
CRITICAL HIGH MEDIUM LOW INFO
(IaC)
Checkov CRITICAL HIGH MEDIUM LOW
Orca Security CRITICAL HIGH MEDIUM LOW INFO
280
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
281
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
IaC Tool Ignored False Positive To Be Fixed Mitigated Fixed Reopened
NOT_EXPLOITAB
Checkmarx One LE; URGENT;
(IaC) PROPOSED_NOT CONFIRMED
_EXPLOITABLE
Checkov
Orca Security
282
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the WAF tools that are supported
by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
283
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
WAF Tool Critical High Medium Low Info Unspecified
Imperva (WAF)
284
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
285
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
WAF Tool Ignored False Positive To Be Fixed Mitigated Fixed Reopened None
Imperva (WAF)
286
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The tables below show the severity and triage status mappings for all of the STIG tools that are supported
by Software Risk Manager.
Tools are listed alphabetically. Tool results are mapped to the Software Risk Manager status shown at the
top of each column. (A blank cell indicates that an equivalent status value is unavailable or undefined.)
Severity Mapping
287
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 1.
STIG Tool Critical High Medium Low Info Unspecified
STIG CAT I (high) CAT II (medium) CAT III (low)
288
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
289
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Table 2.
STIG Tool Ignored False Positive To Be Fixed Mitigated Fixed Reopened None
Not A Finding,
STIG Open Not Reviewed
Not Applicable
290
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The "first seen" date reflects the earliest date that a finding was imported (or seen) by SRM, which will
either be the date the finding was first observed in SRM or the earliest date reported by a supported tool.
The following tools are supported and will provide a "first-seen" date:
• ApiSec
• Aqua
• ASoC
• AWS Security Hub
• CloudGuard
• Coverity
• Coverity on Polaris
• Dynatrace
• GitHub Security
• HackerOne
• Polaris
• Qualys WAS
• Seeker
• SonarQube
• Tenable.sc
• Twistlock
• WhiteHat
• Wiz
Correlation Overview
Correlation is the process Software Risk Manager uses to evaluate data returned by any combination of
supported AppSec tools to determine which, if any, of the results reported by the various tools refers to the
same issue. When matching results are found, Software Risk Manager correlates those results and
creates a single finding for that issue. Software Risk Manager does this by looking at the data provided for
each result; although, in some cases, the correlation process will factor in the detection method as well
(e.g., Static vs. Dynamic results).
Correlation involves various processes that check for data within results that would suggest whether
results should be correlated. The output is a per-result set of associations, where each association
indicates whether to allow or deny correlation. At the end of this process, the correlation decisions for all
results are used to determine which results have enough evidence to be grouped into the same finding.
(For more information, see Analysis Correlation Options.)
The correlation process includes the following elements:
• Rule Sets
• Data Normalization
• Location-based Correlation
• Component Correlation
291
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Hybrid Correlation
• InfraSec Correlation
• Location-less Correlation
In performing cross-tool analysis, results that do not have matching data can still refer to the same issue.
In this case, correlation depends on rule sets. A rule set consists of multiple rules (e.g., specific tools and
tool codes, categories of results in a specific tool, CWEs, etc.) that are used to evaluate results and create
findings. For more information, see the section on Rule Sets.
In broad terms, data normalization can be understood as the process of ordering, structuring, and
simplifying the reported data that makes up a result. The purpose is to make it easier to determine if
different data points refer to the same item. In other words, the correlation process does not evaluate the
raw data provided by a result; instead, the evaluation is based on a normalized representation of that data.
Data that is displayed on the Findings page is the normalized representation of the available data. To view
the raw data, you can open the specific finding and inspect the results attached to it.
Software Risk Manager performs the following normalizations:
• File paths*
• URL paths: Query parameters and anchors are stripped from URLs.*
• Component info: Component (package) names and versions are collected and stored as-is. CPE
strings and certain package format strings (e.g., maven, npm) are parsed to collect this information, if
available.
• Hosts: IP addresses, FQDNs, MAC addresses, NetBIOS names, and hostnames are collected when
available, and the existence of a result that ties any of these values will lead to the values being
associated as the same host. (For example, if a single result reports a vulnerability and specified
10.0.0.9 and PRODENV hostname, these two identifiers would be combined to the same normalized
host.)
* Normalization involving paths will compare the structure of the available paths to discover overlaps and
determine the correct location of a file with respect to the known structure. If a user uploads source code,
the paths from the source code are used as the normalized path. If the source code isn't uploaded, the
normalized path becomes the most specific path shared by all of the paths. For example, the paths src/
main/test.java and main/test.java would be normalized to the same, most-specific path, which is
main/test.java, because src/ is not shared between them. Base paths that are common across all
inputs may be stripped.
Location data is essential for correlation. Results that have the same location type and value might be
candidates for correlation, depending on the location type.
Location types are as follows:
292
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• File, Logical paths: Line ranges must at least overlap. Results without a line range will only be
correlated with other results without a line range, and vice-versa. Column ranges are ignored.
• URL paths: The "Element" for both results must match exactly. An "Element" refers to the type and
name of the part of the request that was indicated as vulnerable. If a result indicates that the query
parameter "user" is vulnerable, that result will only correlate with other results with an Element of
"Query Parameter ('user')".
There are five ways to correlate components (for more information, see Analysis Correlation Options).
Component correlation modes control how Software Component Analysis (SCA) tool results are correlated
to findings. SRM can be configured to correlate component results using different combinations of the
following data:
You will get one finding per unique set of values for each option. For example, selecting "vulnerability,
component name/version, and type" will result in a finding for each vulnerability for each component and
type that you have. However, if "vulnerability and type" is selected, you will only get a finding per
vulnerability and type that covers all components. The default mode is "vulnerability, component identifier,
and type."
When Hybrid Correlation is enabled, URL-located results may be correlated with file-located results by
mapping result URLs to a set of source code locations. Results with file and URL locations may be
correlated if the file location overlaps with any of the discovered file locations for the given URL. (Data
flows are also checked for overlaps.)
Source code is analyzed (for supported languages and frameworks) to determine the specific files and line
ranges that declare the endpoint used by the URL path. If binaries are also provided, Software Risk
Manager will automatically build a call graph from the indicated source location to collect additional
locations to compare against. (Call graph generation is only supported for JVM and CLR binaries.)
In InfraSec correlation, results with matching Host information may be correlated if the list of CVEs is an
exact match between the available results. Results with differing host information will be marked with a "do
not correlate" flag, which will prevent correlation by any other process.
Results that do not include location information can be correlated if the results have matching descriptors
and detection method.
293
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Findings Overview
The findings page displays all the findings associated with a particular project or projects, along with all the
relevant supporting data.
Click the Findings icon in the navigation bar to open the Findings page.
You can generate a report of the findings by clicking the Generate Report button.
• Click Configure Columns to select which columns to display. Click to add or remove checkmarks.
294
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Click View to select which findings to display. Use the toggles to display or hide information.
Findings List
The Findings page displays all the findings from the project analysis and provides analysis data as well as
links to additional information.
295
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The analysis data is displayed in columns and includes the following information:
296
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Click the Findings icon in the navigation bar to open the Findings page.
297
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
You can search for a specific finding using the search field. Search options are located in the upper left
corner of the page.
To search using the Search field:
298
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
For additional information on select search options, see the sections below.
Searching by Finding ID
When searching by Finding ID, the same formatting rules apply as with the CWE search. To search for
Finding 123, enter 123. To search for Findings 123, 456, and 789, enter 123, 456, 789. Note that the
search will not look for Findings from other projects.
Searching by CWE ID
When searching by CWE, the criteria should be a number, or a comma-separated list of numbers. For
example, to search for findings with a CWE of 91, simply enter 91. To search for findings with a CWE of
either 91 or 94, enter 91, 94. Note that ranges (e.g., 100 - 200) are currently not supported.
Searching by Type/Tool
When searching by Type / Tool, the criteria can be any text (case-insensitive) which may appear in the
name or grouping of a Rule or Tool descriptor. For example, searching for "inject" by Type / Tool can match
Rules like "SQL Injection," and Tool descriptors like PMD / Security / Possible SQL Injection. This search is
case insensitive. Wildcards are not supported.
Filters allow you to target which findings you want to display, along with providing specific information
pertaining to the particular filter. For more information, see the following topics:
• Using Filters
• Configuring Filters
• Using Time Filters
299
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Software Risk Manager provides a variety of filters and filter options that allow you to target specific
information.
Click the Findings icon in the navigation bar to open the Findings page.
300
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Clicking the arrow icon to the left of the filter name will expand the window and show the filter options and
filter-specific information about the findings. Clicking any of the filter options will immediately apply those
parameters to the list of findings.
The available filters include the following, and are detailed in the sections that follow:
• Policy Violations
• Fix-by Urgency
• Type
• Project
• Project Metadata
• Tool
• Detection Method
• Severity
• Location
• Container Image
• Age
• First Seen by SRM
• Date Modified
• Tool Overlaps
301
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Standards
• Tags
• Assignee
• Predicted Status
• Triage Status
• Pending Triage Status
• Finding Status
• Issue Tracker Association (if configured)
• Issue Tracker Resolution (if configured)
The filter window shows the number of findings and the percentage of violations compared to the total
number of findings.
The filter window shows the number of findings for each of the following urgency levels:
• Overdue
• Due Soon
• On Track
• No Fix-by Set
Type Filter
The Type filter allows you to filter findings based on finding type. Expand the filter window and select which
filter options you want to apply to the list of findings.
302
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The filter window shows the number of findings associated with a specific finding type.
Project Filter
The Project filter allows you to filter findings based on individual projects. Expand the filter window and
select which filter options you want to apply to the list of findings.
Note: This filter only appears on "aggregated" versions of the Findings page, that is, for "All Projects," or
for a project group with its members.
The filter window displays the projects associated with the findings in two ways:
You can switch between display modes by selecting it from the first dropdown menu in the filter's header.
Expand the filter window and select which metadata options you want to apply to the list of findings.
303
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: This filter only appears on "aggregated" versions of the Findings page, that is, for "All Projects."
Tool Filter
The Tool filter allows you to filter findings based on a specific tool's result types. Expand the filter window
and select which filter options you want to apply to the list of findings.
The filter window displays a list of the tools used in the analysis and the number of findings associated with
each tool. The tool result type hierarchy typically follows a hierarchy of "Tool" » "Category" » "Name,"
following the same hierarchy as in the Tool Config page.
Note: Only the categories that apply to your project will be displayed.
The filter window lists the supported detection methods and displays the number of findings associated
with each one:
304
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Severity Filter
The Severity filter allows you to filter findings based on the level of severity that is reported by a specific
tool. Expand the filter window and select which filter options you want to apply to the list of findings.
The filter window displays the number of findings belonging to each of the following risk categories:
• Info
• Low
• Medium
• High
• Critical
• Unspecified
For more information on risk mapping, see Tool Status and Severity Mapping.
Location Filter
The Location filter allows you to filter findings based on the finding's location. Expand the filter window and
select which filter options you want to apply to the list of findings.
305
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The filter window shows where each finding is located, reflecting the directory and file hierarchy of the
codebase. Location categories that may apply to your project include files, URLs, and logical locations.
For .NET results, in some cases (especially if PDB files are not uploaded), source locations may not be
available. Instead, a Logical Locationsitem will be shown, along with locations organized by namespace,
class, and method.
Note: Images without an associated name are not shown in the filter.
The filter window lists the supported container images and the findings associated with each.
Age Filter
The Age filter allows you to filter findings according to when that finding first appeared in an analysis. The
Age filter calculates age based on tool-reported dates (when available). If the finding has no supported
tools, the date reported is the first time the finding was seen by SRM. Note that the "first seen" date is fluid;
that is, if new data is ingested from a tool with an earlier date, the relevant findings will be updated to
reflect this earlier date.
Expand the filter window and select which filter options you want to apply to the list of findings.
The filter window displays a set of pre-defined age ranges and the number of related findings.
306
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: This filter will not appear on "aggregated" versions of the Findings page, that is, for "All Projects,"
or for a project group with its members.
Note: This filter will not appear on "aggregated" versions of the Findings page, that is, for "All Projects,"
or for a project group with its members.
307
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The filter windows displays a breakdown of findings based on the degree of correlation of its associated
tool results. For example, Was a finding detected by 1 tool, 2 tools, or more? Or Were the 2 tools
SpotBugs and PMD, or JSHint and PMD? Actual correlation logic is determined by the project's Analysis
Configuration.
Standards Filter
The Standards filter allows you to filter findings related to a specific industry standard. Expand the filter
window and select one or more filter options to apply to the list of findings.
The filter window displays a list of the following standards and the number of findings related to each one:
• Architectural Concepts
• CERT C Secure Coding Standards
• CERT C++ Secure Coding Standards
• CERT Java Secure Coding Standards
• CISQ Quality Measures (2016)
• CISQ Quality Measures (2020)
• CLASP
• CWE All
• CWE Development Concepts View
• CWE Research Concepts View
• CWE Top 25 Most Dangerous Software Errors (2019)
• CWE Top 25 Most Dangerous Software Errors (2022)
• DISA STIG 3.10
308
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Tags Filter
The Tags filter allows you to filter findings based on finding tags. Expand the filter window and select which
filter options you want to apply to the list of findings.
The filter window shows the distribution of findings based on an assigned tag. Each number corresponds
to the number of findings to which each tag has been assigned.
Assignee Filter
The Assignee filter allows you to filter findings based who was assigned to that finding. Expand the filter
window and select which filter options you want to apply to the list of findings.
309
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The Predicted Status filter is shown only if machine learning is enabled (see the Machine Learning Control
Panel section).
Filtering options include filtering against findings with Predicted Status of To Be Fixed, False Positive, or
Unknown, as well as filtering against Prediction Confidence, which ranges from 0 to 100 percent. Selecting
multiple predicted statuses to filter on will include any finding that has any one of the selected predicted
statuses. Selecting a sub range for prediction confidence will include any finding that has a predicted
status matching one of the selected statuses as well as a prediction confidence that exists in the selected
sub range (inclusively).
Note: This filter is only available in Software Risk Manager with the Machine Learning Triage Assistance
add-on.
310
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
This filter option appears only if the project has been configured for issue tracking (see Issue Tracker
Configuration). The filter window shows findings broken down by whether there is an associated issue,
which issue tracker type (Jira, Azure DevOps, ServiceNow, GitLab, etc.) the issue is associated with, the
issue's status, and the specific issue.
Note: Terminology can differ between different issue trackers (e.g., "issue" vs "work item," "status" vs
"reason," etc.), but Software Risk Manager defaults to "issue" and "status" when a generic term is
needed.
311
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
This filter option appears only if the project has been configured for issue tracking (see Issue Tracker
Configuration). The filter window shows findings broken down by whether there is an associated issue,
which issue tracker type (Jira, Azure DevOps, ServiceNow, GitLab, etc.) the issue is associated with,
whether the issue is resolved, the resolution status, and the specific issue.
Configuring Filters
To make routine searches easier, you can configure and save filters that can be used by authorized users
or user groups.
Click the Findings icon in the navigation bar to open the Findings page.
312
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Once a filter is selected, the list of findings will update to match the current filter state.
Configuring filters includes the following tasks:
313
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Findings icon in the navigation bar to open the Findings page.
2. Select an existing filter from the Filters dropdown menu that you want to modify or select "All findings"
to create a completely new filter.
3. Select the filter elements that will define this filter.
When you make a change to the filter settings, an asterisk appears next to the filter name. From here
you can click the "Save" icon to update the filter with the new settings or click the "Save as" icon to
create a new filter with a new name.
Clicking the "Reset" icon returns the filter to its previously saved state.
4. Click the "Save as" icon to create a new filter.
5. Enter a new name in the filter field.
6. Click anywhere on the page to save the new name.
1. Click the Findings icon in the navigation bar to open the Findings page.
2. Select a filter from the Filter dropdown menu.
3. Click the "Permissions" icon to open the Permissions window (shown below).
This window displays a list of users who have already been given permissions to view or edit this filter.
4. Select the Shared radio button, then click the Users or Groups button.
5. Use the "Add Users/Add User Groups" dropdown list to select the users or groups to add.
6. Click the "Add" icon.
7. Use the "Permissions" dropdown menu to set the desired permission.
8. Click Save to save your changes.
Renaming a Filter
To rename a filter:
Deleting a Filter
To delete a filter:
1. Click the Findings icon in the navigation bar to open the Findings page.
2. Select a filter from the Filter dropdown menu.
3. Click the "Delete" icon.
4. Click Delete.
314
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
A Time Filter is a special type of filter which groups findings by analysis, that is, the filter will decide which
analysis each finding belongs to, and then display the groupings as a bar chart. The analysis number or
analysis date will make up the X axis, while the finding count makes up the Y axis.
Unlike the other filters, a Time Filter may not be resized vertically. Instead, as more analyses are displayed
it will grow horizontally, eventually adding a horizontal scrollbar.
Making a filter selection with a Time Filter is done by drag-selecting a range in the selection area above the
bar chart, as shown in the figure below.
The X axis of each Time Filter can be toggled between "Ordinal" and "Time."
Ordinal scale uses the analysis number (e.g. 1st, 2nd, ...) to determine where each analysis is placed on
the X axis. It allots the same amount of horizontal space for each analysis, making it a reliable way to
visually separate one analysis from another. Ordinal scale is the default mode for each Time Filter when
the page loads.
Time scale uses the start time of the analysis to determine where each analysis is placed on the X axis.
Since the lifespan of a project may be very long, and several analyses may be clustered close together,
bars may overlap when using time scale mode. This scale mode is most useful when you want to highlight
a particular date range without separating individual analyses.
As you hover over the selection area of a Time Filter, you will see a tooltip indicating the X value that your
cursor is hovering over. In time scale mode, the X value is a date and time. In ordinal scale mode, the
smaller text indicates the "physical" selection range, while the larger text indicates the rounded range,
which will be used as the actual filter selection. Once you click and drag to make a selection, the tooltip will
expand to show you the "min" and "max" of your selection.
An existing selection can be altered by clicking and dragging either of the paddles (the purple and green
paddles at either end of the selection) to resize, or the area between the paddles to pan. Double-clicking a
paddle will move it all the way to the beginning or end of the chart. Double-clicking the area between the
paddles will clear the selection.
315
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
As you hover over bars in a Time Filter's chart area, a tooltip will appear to display information about the
currently-hovered analysis. The information includes the start time, duration, number of associated findings
(the height of the bar), the analysis number (e.g. the 10th analysis in that project), and the Name.
Note that when an analysis has a name, the circle below its bar in the bar chart will be filled in; when it has
no name, the circle will only have a dotted outline. Users with the update role can edit analysis names by
clicking the pencil icon next to the name. Naming an analysis can be useful if you want to associate it with
a particular release version of your software, a Git commit, a Jenkins build, or anything similar.
In addition, analysis names allow you to write Markdown-style links, e.g., [link text](link url).
316
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
most recent analysis at the time of the modification.) An example usage of this filter could be in
combination with the Status Filter to answer the question "How many findings have been fixed since
release 2.1.0?" In this example, you would unhide the "completed" triage statuses by using the View
button.
CWE Support
The Common Weakness Enumeration (CWE) is a community effort lead by MITRE to provide a common
language to express software weaknesses.
Software Risk Manager leverages the CWE to provide correlation across the diverse set of testing tools it
supports. Software Risk Manager also allows you to define your own correlation logic via the Rule Set
page. This allows you to correlate based on a group of CWEs or tool specific rule codes.
Software Risk Manager uses the CWE identifier specified by the tool. In cases where the tool does not
provide a CWE, that mapping is done automatically.
CWE information is readily available in Software Risk Manager. On the Findings page, you can search by
CWE or filter by CWE. This includes grouping CWEs by various standards such as OWASP Top 10 or
CWE/SANS Top 25. The CWE identifier is also shown in the Findings Table, and you can hover on that
identifier to get the full CWE name.
CWE information is also provided on the Finding Details page. There you can see the full CWE name for
the aggregated finding. For each individual tool result, the CWE used for each tool is also provided. In both
cases, a link to MITRE's CWE website is provided.
Finally, all reports (CSV, XML, PDF, Nessus, and AlienVault/NBE) contain CWE information.
Bulk operations are actions that affect all findings that are currently selected. When the checkbox in the top
left of the findings table is selected, these actions will apply to all findings currently displayed.
Note that bulk operations (aside from reporting) are not available on an aggregate version of the Findings
page. In addition, the checkbox selection column in the findings table will be hidden.
317
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Change Status. This is used to change the triage status of multiple findings.
• Change Assignment. This is used to change the user assigned to multiple findings.
• Override Severity. This is used to change the severity of multiple findings.
• Bulk Comment. This is used to add comments to multiple findings.
• Generate Report. This is used to generate a variety of report types.
• Issue Tracker Integration. This is used to interact with a configured issue tracker.
• Manage Tags. This is used to assign tags to findings or unassign tags from findings in bulk.
• Set Fix By Date. This is used to set the fix-by date of multiple findings.
Change Status
The Change Status dropdown menu is available to users with the update role. It allows users to change
the triage status of all findings currently selected.
Change Assignment
The Change Assignment dropdown menu is used to change the user assigned to the selected findings.
318
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Override Severity
The Override Severity dropdown menu is available to users with update role. It allows users to change
the severity of all findings currently selected.
Bulk Comment
The Bulk Comment button opens the Bulk Comment dialog. The dialog is used to comment on all findings
that are currently selected.
319
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
If a project has an Issue Tracker Configuration, the Issue Tracker dropdown menu will be available,
allowing users with the update role to interact with the configured issue tracker. Software Risk Manager
currently supports Jira, Azure DevOps, ServiceNow, and GitLab. For Jira and GitLab users, the options are
create issue, associate with existing issue, and remove association. For Azure DevOps users, the options
are create work item, associate with existing work item, and remove association. For ServiceNow users,
the options are create incident, associate with existing incident, and remove association. The examples
below assume Jira is the currently configured issue tracker.
All of the fields are editable. Required fields will have a red asterisk by their name.
Use the template expressions that were defined when configuring the issue tracker to pre-populate the
320
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
relevant fields with data from the active findings. Note that these pre-populated values will be based on the
current branch view where the issue is created. Software Risk Manager provides default templates for the
Summary and Description fields.
The Description field will be pre-populated with a brief description for each Finding. Jira descriptions can
be set to allow for the use of WikiMarkup. Software Risk Manager takes advantage of that to make the
descriptions more readable from within Jira.
Managing Tags
The Manage Tags button opens the Manage Tags dialog. The Manage Tags dialog enables users to
assign tags to findings or unassign tags from findings in bulk. The dialog is composed of three sections,
each of which will be described in sequence. Note that no operations will be applied until the OK button in
the footer of the dialog is clicked. (Clicking the Cancel will discard all dialog activity.)
321
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Current Assignments
The Current Assignments section presents a sequence of tags that have been assigned to at least one of
the selected findings. Each tag in the sequence is paired with the number of selected findings to which that
tag has been assigned (provided in parentheses next to the tag).
Bulk Assign
The Bulk Assign section allows users to select tags that should be assigned to all selected findings. The
dropdown select menu (which will appear as soon as you begin typing the name of a tag) will be populated
with tags that are available for assignment, including tags that have already been assigned to some of the
selected findings. Admins can create tags inline if they attempt to assign a tag that does not exist.
322
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The number of tags that will be attempted to be assigned once the OK button is clicked is shown in the
footer of the dialog.
Bulk Unassign
The Bulk Unassign section allows users to select tags that should be unassigned from all selected
findings. The dropdown select menu (which will appear as soon as you begin typing the name of a tag) will
be populated with tags that appear in the Current Assignments section of the dialog.
The number of tags that will be attempted to be unassigned once the OK button is clicked is shown in the
footer of the dialog.
The Set Fix By Date button opens the Set Fix By Date dialog. The dialog is used to either set or remove
the fix-by date on all findings that are currently selected.
If a project is configured to use policies, this bulk operation is used to override the fix-by date that was
determined by the policy rules.
323
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Findings Table
The Findings Table shows a concise representation of each individual finding. The number in the ID
column is the unique identifier assigned to each finding and the text for the ID doubles as a link to the
finding's details.
Users with the update role in a project can use the dropdown menu in the Status column to change the
current status of a finding.
Projects often have more findings than can be displayed in the Findings Table all at once. Because of this,
the table is split into pages. By default, each page shows 25 findings. Users can change the number of
findings per page using the Show button, seen below.
The Findings Table columns can be hidden or displayed using the dropdown menu in the upper right
corner of the table. This is done by toggling the column name.
324
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
In the menu, visible columns have a checkmark to the left of the column name. Hidden columns can be
made visible again by selecting them in the menu.
The Analysis Inputs List is a widget on the Findings page that shows the files that were provided to
Software Risk Manager for analysis. It can be shown by clicking the Show Inputs button found in the
Findings page header.
The Analysis Inputs List is broken down first by analysis, then by file. For example, when viewing a project
in which two analyses had been performed, there would be a section for each analysis. Analyses are
ordered by date, with the most recent analysis shown at the top of the list, and the oldest analysis at the
bottom.
Within each section, individual entries represent files. For example, if a "spotbugs-results.xml" file had
been uploaded to Software Risk Manager during one analysis, a corresponding entry would appear in the
section for that analysis. Each entry has three main parts: input name, tool result summary, and archive
button.
Input Name
The first part of an entry shows the file's name and the name of the tool it came from. For auto-generated
tool outputs (i.e., files generated by any of the Software Risk Manager bundled tools), the name of the
analyzed file will be shown instead of the name of the auto-generated temporary file. Next to the names, a
download link allows users to download a copy of the file.
325
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
result correlation and other factors, the total tool result count will not necessarily match the total finding
count. Next to the tool result count for each entry, a bar chart shows a breakdown of the tool results by
severity. The highest-severity results are shown in red, while the lowest-severity results are shown in gray.
You can hover over each bar to see the severity it represents as well as the number of tool results
belonging to that severity.
Archive Button
Users with the create role for a project have the ability to archive an analysis input using the Archive
button located on the far right of each entry. Tool results from archived inputs will be removed. Any finding
whose last tool result was removed in this manner will have its triage status automatically changed to
Gone. Normally archival is done automatically.
When you click the Archive button for an analysis input, you will be prompted to confirm your choice.
When you confirm, the archival will be performed. The page will update to reflect the updated tool result
and finding counts.
Software Risk Manager allows users with the create role to enter manual results to Findings data.
To add a manual result:
1. Click the Projects icon in the navigation bar to open the Projects page.
2. Locate the project and click the Project findings link to open the Project Findings page.
326
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
327
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
If the result name entered matches a rule in the current rule set, then the manual result will be associated
with the general information for that rule. In this case, the general information can only be changed by
revising the rule set. Both the general and contextual information will be included on the details page.
The Tool field allows the user to state that the manually-entered result actually came from a tool. The
options available to this field are configured on the admin page, in the Allowed Toolssection.
328
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The Host field allows the user to describe the "host" on which the result was discovered. This normally will
only pertain to results with the Network Analysis detection method, but could also relate to Dynamic
Analysis. Host data entered on this field is considered "raw" data, (as opposed to the "normalized" data
seen on the Hosts page). Raw host data may be joined with "normalized" host data through a process
called "host normalization". By default, the "Include Host data for this result" checkbox is unchecked.
Check it to expand the host data editor.
The CVE field allows the user to enter any number of CVEs that correspond to the result. By default, no
CVEs are included. To start adding CVEs, click the Add a CVE button. When typing in a CVE text box, you
can optionally start by only typing the numbers; the text box will fill in the rest for you. If your Software Risk
Manager server is able to access the internet, it can check whether the CVEs entered by the user are real
CVEs in the CVE database. This verification comes in the form of a checkmark or an "x" on the CVE
textbox. Blank or invalid CVEs will be ignored when submitting the form.
Once you’ve completed the form, clicking the Add Result button at the bottom will dismiss the form and
update the Findings page with the new finding. A notification will appear, indicating the ID of the finding to
which the result was correlated. To delete or edit a manually added finding, click on the finding's ID in the
Findings Table to access its details view. The result will appear in the Evidence section, where there will be
buttons to edit and delete it.
Note: This section is only applicable to Software Risk Manager users with the Machine Learning Triage
Assistance add-on and requires that machine learning is enabled.
Users of Software Risk Manager may review findings and change their statuses. When a finding's status
has been changed, we say that that finding has been actively triaged. The act of actively triaging a finding
is considered a past triaging decision. Software Risk Manager is capable of learning from users' past
triaging decisions in order to make predictions about findings that have yet to be actively triaged. More
details will be described in the sections that follow.
Actionability of a Finding
We use the terms Actionable and Non-Actionable to denote findings that are “real” issues and “not-real”
329
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
issues, respectively. A finding is said to be Actionable if it was actively triaged as Fixed, To Be Fixed,
Mitigated, or Assigned, if it has a status of Gone, or if it has an issue tracker association. A finding is said
to be Non-Actionable if it was actively triaged as False Positive or Ignored.
• During an analysis
• After a manual result has been created
• After a prediction model has been (re)trained
In these situations, all predictions are being made automatically. During the first and third situations,
predictions are automatically made for every finding in Software Risk Manager. During the second
situation, a prediction is only made for the single manually created result. Since predictions are made
automatically, a user may note that predictions for findings might differ between reviewing sessions.
330
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Software Risk Manager provides a comprehensive list of a project's components that can be accessed
through the Findings page.
Open a project's Findings page, then select the Components tab to display a list of that project's
components.
The component view shows all of the components that are part of the project, regardless of the status of
any individual finding. (Use the filters to the left of the list to search; click the column headings to sort.)
The Component page provides the following information:
• Component Name
• Version
• Match Type (direct or transitive dependency)
• License Name
• License Family
Click the component name to open the Component Details and Security Details view for that specific
component.
Select the Component Details tab to view detailed information about the component.
331
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Security Risk
• Component Name
• Component Description
• Component Links
• Component Origins
• Upgrade Guidance
Select the Security Details tab to view additional security information about the component.
• Security Risk
• Component Name
• Finding ID
• Vulnerability ID
• Vulnerability Score
• Status
332
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: If the project is configured with a component correlation mode that doesn't include vulnerability,
then the Vulnerability ID and Vulnerability Score columns won't appear in the table. (For more
information, see Analysis Configuration Options.)
Software Risk Manager allows you to create custom reports, create report templates, and generate reports
on a schedule. Reports provide information such the number of findings and status, triage status, and
related findings details.
For more information on reports, see the following topics:
Click the Findings icon in the navigation bar and click Generate Report to open the Generate Report
dialog. This dialog is used to select the type of report and allows you to customize the report.
• PDF
• Compliance (PDF)
333
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• XML
• CSV
• AlienVault/NBE
• Nessus
Instructions for generating each type of report are given below, according to report type.
PDF Report
You can customize the PDF report in several ways. There are options to include or exclude a simplified or
detailed executive summary section; finding details (with or without source code); tool details; and
comments that appear in the Activity Stream (on the Finding Details page). The "Result details" section
contains these options: "Include result provided details" and "Include HTTP requests and responses."
Note: The "Include result provided details" option must be selected if you want to include the HTTP
requests and responses in the PDF report.
If you'd like your company logo to appear on the cover sheet, please contact your Software Risk Manager
administrator to configure it for you.
334
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Compliance (PDF)
XML Report
Customizations for the XML report include the option to enumerate standards violations for each finding,
provide source code snippets, and whether to include copies of the rule descriptions for each finding.
Note: There is a limit of eight lines of code per source snippet for each finding. When the limit is exceeded,
no source code is provided.
CSV Report
The CSV report provides options allowing you to select which columns will be included in the generated
file.
335
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
AlienVault/NBE Report
Software Risk Manager users will be able to select the AlienVault/NBE report. This reporter generates an
NBE report that is compatible with AlienVault.
The report options require that a host address (IPv4) be specified for inclusion in the report.
Nessus Report
Software Risk Manager users will be able to select the Nessus report. This reporter generates a report in
336
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Click the Reports icon in the navigation bar to open the Reports page. This page lists all the existing
custom report templates along with the following information:
Clicking the dropdown configuration icon allows you to view, edit, send now (report), or delete the report
template.
To create a report template:
337
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Saved filters that are shared with you must be copied before they can be used. A dialog will
appear asking if you want to copy the shared filter.
5. Select and define a report type. (See Generating a Findings Report for detailed instructions.)
6. Click the Schedule tab.
338
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
10. Click Add Project(s) to define which projects will be associated with this report.
11. Click Finish.
The Findings page gives an overview of the findings in a project, focusing on a powerful filtering system,
triage workflow, and issue tracking, with links to drill into more details via the Findings Details page.
To access the details for a single finding:
1. Click the Findings icon in the navigation bar to open the Findings page.
2. Locate the finding in the Findings list and click the link in the "Type" column, which is next to the
Finding ID.
339
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
For more information on each element of the individual finding page, see the following:
Branching
You can select which version of a finding's details to view by changing the actively selected branch in the
dropdown. The list of branches available for selection will only include branches on which the finding
appears. All details presented for a finding will be specific to the actively selected branch.
340
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Details Summary
The Details Summary in the header gives a quick overview of the finding and the file where it is located. If
the finding is associated with a CWE, the CWE is noted, with a link to the official CWE Mitre site. The "First
seen on" date reflects the earliest date that the finding was observed, which will either be the date the
finding was first observed in SRM or the earliest date reported by a supported tool.
The summary area also has "jump links." One link will scroll the source viewer to the location of the finding
in the file. The other link (which appears once you scroll down the page) will bring you back to the top of
the page.
Severity Override
Software Risk Manager allows users (with the update role) to change the finding's severity level. The
severity override popup can be accessed by clicking the finding's severity icon from the Finding Details
page or clicking the icon next to the finding ID on the Findings page.
Once the popup is opened, select the appropriate severity level. The popup will close and the new setting
will be applied. When a finding has an overridden severity, the white border around its severity icon will
change to green.
Software Risk Manager integrates with Secure Code Warrior by linking developers to training modules that
they can use to learn secure coding practices. If a training module is available that is related to the finding,
a link will be provided to redirect the user to the training material.
Activity Stream
The Activity Stream area has widgets that let you change the status of the finding as well as comment on
it. As users change the status and comment on a finding, messages appear in the activity stream, with
341
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
newer messages at the top. Users can only edit or delete their own comments.
Note: Actions such as triage status updates and severity overrides apply only on the currently-selected
branch. Comments are made independently of the current branch, effectively applying to all branches.
The messages shown in the Activity Stream are filtered to those relevant to the current branch.
Descriptions
The description information shown by Software Risk Manager can come from a variety of sources, with
varying levels of detail. At a high level, descriptions are divided into "general" and "contextual."
• "General" descriptions explain the type of finding, e.g. answering the question "What is SQL Injection?"
• "Contextual" descriptions explain a particular instance of the finding, e.g. answering the question "Why
is this particular code a SQL Injection risk?"
The main "Description" section of the details page is a "general" description. Most of the time, the main
description comes from a Rule Set. When a finding matches up to a rule, the main description section will
use that rule's description. For findings created by observed tool results (i.e. types of findings that Software
Risk Manager doesn't already know about - see the Tool Configurationsection), if the tool result does not
match a rule, the general description may be created from that tool result, as long as the tool result
provides one. This will often be the case with tools such as Fortify and Veracode.
342
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The finding itself will not have a "contextual" description. This will instead be found on the individual results
shown in the Evidence section. The "general" and "contextual" descriptions for results will be shown in the
Tool Rule Description and Contextual Description sections of their display area, respectively (see below).
Training Video
Software Risk Manager integrates with Secure Code Warrior by providing training videos that developers
can use to learn secure coding practices. Software Risk Manager will present these videos on the Details
page when they are available.
343
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: The training videos use the video/mp4 MIME type, which may not be supported by some
browsers.
Standard Violations
The Standard Violations window lists which standards were violated in this finding.
Evidence
The Evidence section of the Finding Details page shows the raw results that make up a
344
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
finding—regardless of whether the finding originated from an analysis tool or a manual entry. Each result in
the Evidence section will be displayed in its own subsection, with the result's "type" as the header.
• Detection Method. Describes how the result was discovered (e.g., what type of analysis was
performed), typically either "Static Analysis" or "Dynamic Analysis."
• First Seen On. For supported tools, reflects the date that the result was observed by that tool.
• Location. Describes exactly where the result was reported, i.e. a file, line number, and column number,
or a URL. Note that because Software Risk Manager attempts to normalize locations, a result's location
may differ slightly from the location of the finding it belongs to.
• Tool. The name of the tool that reported the result.
• Tool Code. The raw "code" that describes the type of the result (for example, "SQL Injection").
• Tool Category. The raw "category" (depending on the tool, the terminology may differ, e.g., "group") to
which the tool code belongs.
• CWE. The Common Weakness Enumeration item reported by the tool, if available. Note that because
Software Risk Manager uses Rule Sets to determine how results are combined into findings, a result's
CWE may differ from its finding's CWE. To control this behavior, create or choose a different Rule Set to
use in your project's Analysis Configuration.
• CVE. The Common Vulnerabilities and Exposures identifier reported by the tool, if available.
• Severity. The Software Risk Manager equivalent of the tool's reported severity. Note that some tools
use different terminology for this, such as "priority," or different scales, like "1 through 10." Also note
that when multiple results of different severities are combined, the finding will either take the severity of
the rule that joined them or the highest severity from among the combined results.
• Related Findings. Lists any other findings that share the result, when applicable. This is more common
when dealing with DAST and Hybrid results, as correlation between DAST results is less strict than with
SAST.
• Tool Rule Description. The tool's unique description of the type of result being reported. For example,
with a SQL Injection result, this is where you could find the tools' description of what SQL Injection is.
345
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Click the "show more" and "show less" links to expand and collapse the description.
• Contextual Description. The tool's description of the specific result. For example, with a SQL Injection
result, this is where you could find out how this particular part of your codebase is vulnerable to SQL
Injection. Click the "show more" and "show less" links to expand and collapse the description.
• Host Info. Shows the raw host data of the result being reported for Network Analysis results as well as
certain DAST results. The host data is displayed as a table, with the left column indicating the host
"field" (e.g., Fully Qualified Domain Name (FQDN), Hostname, IP Address, etc.), and the right column
containing the values for that field. The Also include values from host normalization checkbox will cause
the page to include any values from the "normalized" version of this host to also be displayed. The
"normalized" host is what is shown on the Hosts page. Values present on the normalized host and not
present on the raw host will be rendered in green.
• HTTP Activity. This is shown for DAST results, and it will expand to its own subsection, which is
described here.
Some tools report additional information that may appear in this section, such as Veracode's Flaw ID.
When these additional fields are present in a project, some of them may become available as a finding
search option on the Findings page.
HTTP Activity
The Http Activity section shows any detail Software Risk Manager knows about the HTTP request and
response associated with a DAST result.
346
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The table at the top of the HTTP Activity section enumerates the "variants" of request/response that were
reported with the result. Some tools will attack the same URL with different variations of query parameters
and form parameters to try and find vulnerabilities, then report each variant as part of the same result.
Other tools will report each variation as its own result, but if Software Risk Manager sees that everything
else is the same, it may join them together under a single result. Often times, there is only one variant
reported, as is the case in the screenshot above. In cases where there are multiple variants, click on the
different rows of the variants table to show the details for that variant in the sections below.
For each variant, the details are described in the sections that follow.
Request Tab
The details of the HTTP request are broken down here:
• Query Params will show any applicable query parameters (i.e. parts of the URL after the ?, e.g.
?foo=1&bar=2)
• Request Headers shows each of the headers sent with the HTTP request, as a table.
• Request Body shows the body data sent with the request, if applicable. This is where form parameters
go, or any other arbitrary content being sent to the server.
• Raw Request Data shows the raw, un-parsed version of the request. Note that some tools don't report
347
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
this, instead reporting specific details of the request. In these cases, the raw request will be
reconstructed automatically.
Response Tab
The details of the HTTP response are broken down here:
• Response Headers shows each of the headers sent with the HTTP response, as a table.
• Response Body shows the body data sent with the response, if applicable. Expanding it will show a
text view of the raw response data. Note that response bodies are typically rather large, and are
sometimes non-text data, which may make this view difficult to use. Software Risk Manager will not
attempt to render whatever the data represents, since the assumption is that the response contained
some vulnerability like cross-site scripting, or a malicious file.
Metadata Tab
Some tools will report extra "metadata" with their HTTP activity. When applicable, this data will be shown in
the Metadata Tab as a table.
When Polaris Assist is configured and enabled, an "AI Insight" section will be available for findings which
have a Static Analysis detection method and have the required information for at least one of the available
assessments listed below. (For information on configuration, see Polaris Assist.)
Note: Users must have the permission Request and view finding assessments from
Polaris Assist (Beta) for the project, which is included in the default Reader role provided by
SRM.
Warning: Polaris Assist generates results created by artificial intelligence (AI) or other automated
technologies. Such results are provided for informational purposes only and should not be relied upon for
any specific purpose without verification of its accuracy or completeness.
Click the AI Assist button to expand the fields.
348
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Summary. Polaris Assist will provide a brief summary of the vulnerability and its impact. Requires
finding description and CWE.
• Code Analysis. Polaris Assist will summarize an excerpt of the affected code and surrounding lines
and a description of the vulnerability in the context of the affected code.
• Code summary requires a file location with source code.
• Vulnerability analysis requires a file location with source code, finding description, and CWE.
• Fix Suggestion. Polaris Assist will suggest an updated code snippet that attempts to address the
vulnerability.
• Requires a file location with source code, finding description, and CWE.
Source Code
The Source Code area shows the contents of the file where the finding is located. The "line" link will scroll
the source display so that it shows the exact lines of the finding, which are highlighted in dark grey in the
line number gutter. The presence of severity markers in the gutter denote other findings in the same file.
When multiple findings are present in a single line, the severity marker will show the highest-level severity
at that line. If you hover your mouse over any highlighted lines, a popup containing links to the Finding
Details pages for the other findings will appear.
349
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Source Search
Searching within the Source Code area is separate from your browser's default search function. (For
performance reasons, the Source Code view does not render the entire source file at once, so your
browser might not be able to find lines that are not currently in view.) Click in the Source View first.
Issue Tracker
If a project has an Issue Tracker Configuration, the Create issue and Use existing issue buttons will be
shown for Jira and GitLab users, Create work item and Use existing work item for Azure DevOps users,
and Create incident and Use existing incident for ServiceNow users. Users with the update role are
allowed to interact with the configured issue tracker.
Creating an Issue
You can click the Create issue, Create work item, or Create incident button, which will open a dialog.
350
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The dialog functions the same way as the dialog opened from the Bulk Operations area of the Findings
Table, except the Description field will be pre-populated with information about this finding. When manually
creating an issue in this way, the issue will be associated with the current branch view and will reference
that finding's branch-specific data (e.g., Severity and Status).
Note: In contrast to manual issue creation, Auto Create currently only supports associating issues with a
project's default branch.
351
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Removing Associations
Clicking the trash icon removes the association between the finding and its related issue or work item.
Note: This only removes the association; it doesn't touch the issue or work item itself.
Predicted Status
Note: This section is only applicable to Software Risk Manager users with the Machine Learning Triage
Assistance add-on.
A finding’s prediction is included on the Finding Details page only if machine learning is enabled on the
Machine Learning Control Panel. Each prediction is presented as a Predicted Statusand a Prediction
Confidence. Users can set a finding’s Status to its Predicted Status by clicking on the Use Prediction
button, which is next to the finding’s prediction.
Fix By
Software Risk Manager allows users (with the update role) to change the finding's fix-by date. If the
project is configured to use policies, a user can override a fix-by date that was determined by a policy rule.
If the project is not configured to use policies, a user can simply set or remove a fix-by date.
The controls for setting the fix-by date are located under the finding severity information, above the tag
controls.
The dropdown allows the user to either pick a specific date to set as the finding's fix-by date, or the user
can choose to remove a finding's fix-by date.
Attachments
352
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Allows files to be attached to the finding. Existing attachments are listed here.
To attach a file, click the Add Attachment button and select a file or use drag-and-drop. Click an
attachment to download its contents. To delete an attachment, click the dropdown configuration icon and
select Delete.
• Not Triaged. (Not yet assigned a status.) The finding has not been assessed or categorized.
• Fixed. The finding has been directly fixed in the current version of the software and is awaiting
confirmation by a later scan which would set the Finding Status to "Gone."
• Mitigated. The vulnerability has not been fixed, but steps have been taken to reduce its impact or
likelihood.
• Ignored. The vulnerability has been deemed insignificant and does not currently warrant action.
• False Positive. The reported finding is not an actual vulnerability. After review, it is determined to be
incorrect or misleading, and no action is needed.
• To Be Fixed. The finding has been assessed and flagged as important and therefore needs to be fixed.
• Reopened. The finding has been reopened per the analysis configuration settings. (See Analysis
Configuration Options.)
• New. The finding was new in the last analysis that detected it.
• Existing. This finding has been detected in more than one analysis.
• Gone. This finding is no longer being reported by any tools.
Project Dashboard
The Project Dashboard provides a comprehensive overview of a project, displaying a set of analytic and
trend data which are automatically updated as you use Software Risk Manager.
353
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
You can open the dashboard from the project list page or the project findings page:
• From the findings page, click the Project Dashboard tab at the top of the page.
• From the project list page, open the task dropdown list and select "Dashboard."
When viewing the Project Dashboard for the parent of grouped projects, you will have the option to include
data from the child projects by using the roll-up feature. To do this, enable the Include child projects switch
on the top right corner of the Project Dashboard page.
You can also access the Project Dashboard for "all projects" by clicking the "Dashboard" tab while on the
aggregate "All Projects" Findings page.
While on the Project Dashboard page for a project with multiple branches, you can switch the view to a
different branch by clicking the branch selector dropdown in the page header.
Dashboard Data
The Project Dashboard is divided into several sections:
• Risk Score. Provides a "letter grade" to indicate the overall quality of the project.
• Open Findings. Displays the total number of findings, along with a breakdown of the number of findings
in each category and the percentage of findings that have been triaged.
• Findings Count Trend. Shows the number of findings over time, broken out by detection method.
• Average Days to Resolution. Shows the average number of days it took to resolve an issue, broken out
by severity.
354
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Code Metrics. Displays various metrics for the project's codebase, such as the number of lines of code,
number of source files, etc., broken down by language.
• Analysis Frequency. Provides detailed information about when the analysis was run, how long it took,
tools used, etc.
• Activity Monitor. Displays a "calendar heatmap," representing the analysis activity on the project over
the past year.
• Created vs. Resolved. Provides a visual representation of the dueling trend of new findings that are
added to the project and findings that are resolved by the team, along the difference between the two.
• Top Finding Types. Shows the top 10 types of findings in the project, by number of open findings.
Risk Score
The Software Risk Manager Risk Score section of the Project Dashboard provides a letter grade to
indicate the overall "quality" of the project.
Figure 1. Risk Score
The letter grade is based on a percentage score, which is the average of the Custom Code Score,
Component Score, and Infrastructure Score. Each score is weighted evenly, but note that an Infrastructure
Score is not available for all projects. The score letter grades are = A, [80, 90) = B, [70, 80) = C, [60, 70) =
D, [0, 60) = F.
• Custom Code Score starts at 100% and is reduced based on the "volume" and "variety" of non-
"Component" and non-"Infrastructure" findings.
• volume penalty =(3.0% × log2(num_critical_findings + 1)) +(1.5% ×
355
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Each of the "num_" values mentioned above refer to findings in the project which haven't been triaged (i.e.,
findings whose triage statuses haven't been marked as one of the "resolved" statuses like "Fixed" or "False
Positive"). In the case of "volume," they refer to the number of findings. In the case of "variety," they refer
to the number of distinct types of findings. Only critical, high, and medium severity findings are counted
against the Software Risk Manager Risk Score.
Next to the letter grade, the specific percentage score is displayed alongside a spark-line that shows the
general trend of the project's Software Risk Manager Risk Score over the past week.
The individual scores for the Custom Code Score and Component Score are shown by a pair of "fill bars"
next to the letter grade, below the overall score percentage.
For more information on how these scores are calculated and how to customize the formula, see the
Software Risk Manager Scoring Calculations section in the Software Risk Manager Install Guide.
Open Findings
The Open Findings section shows the overall "triage status" of the project.
Figure 2. Open Findings
356
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
A waffle chart is used as a severity-age breakdown of the untriaged findings in the project. Different colors
indicate different severities, as indicated by the legend. The number of dots of each color indicate the
percentage (rounded) of findings in the project which have that specific severity. I.e. if there are 19 purple
dots, it means 19% of the untriaged findings have "critical" severity. Transparency is used to indicate the
relative age of the findings, as indicated by the legend. A lighter (more transparent) version of the severity
color indicates findings of that severity which are relatively new. A darker (more opaque) version of the
severity color indicates findings of that severity which are relatively old.
Clicking on the severity labels in the waffle chart's legend will cause the chart to focus on that severity,
fading the other severities from view. Clicking again on the same label will reset that focus, returning the
visualization to its normal state.
Hovering the mouse cursor over the severity labels in the waffle chart's legend, or over the colored dots in
the waffle chart itself will cause the chart to temporarily focus on that severity. This effect is similar to the
click effect described in the previous paragraph, but the effect does not persist if the mouse leaves the
area that caused the focus. Hovering the mouse over the chart will also show a tooltip containing a
summary of the respective hovered severity.
Below the waffle chart is a fill-bar indicating the percentage of findings which have been triaged (i.e. set to
Fixed, Mitigated, False Positive), out of the total number of findings in the project, excluding findings that
are marked "Gone".
357
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The Findings Count Trend section of the Project Dashboard shows a breakdown of findings by "detection
method" over time.
358
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The Findings Count Trend visualization uses a stacked area chart, with "date" as the X axis, and total
finding count as the Y axis. By default, an area for each detection method is shown, so that the stacked
areas' total height indicates the total number of findings at a given date. Clicking one of the detection
method labels in the legend will cause the visualization to focus on the respective detection method, hiding
the other areas and moving the focused area to the bottom of the visualization. Clicking again on the same
detection method label in the legend will remove the focus effect, returning the visualization back to its
default state.
Hovering the mouse cursor over the visualization will cause a vertical line to snap to the nearest date,
updating the legend to reflect the finding counts at that date. While the mouse cursor is not over the
visualization, the vertical line will snap to the latest date, causing the legend to reflect the most recent
finding counts
On the top-right of the trend graph is a calendar icon, which can be clicked to bring up a menu for selecting
a date range.
359
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Selecting one of these range values will automatically refresh the graph to the selected range. For larger
date ranges, each point in the graph can represent multiple dates by taking the average of data samples
involved.
For each severity, the average number of days it takes to resolve a finding of that severity is displayed in a
badge. Initially, each badge will display "N/A"; since no findings have been resolved, there is no "average"
360
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
time. A colored bar below the badges acts as a legend, and hovering the mouse cursor over a badge
causes it to become highlighted with that severity's respective color.
As a rule of thumb, teams may wish to prioritize addressing higher-severity findings, so team leads will
want to see a lower number of days-to-resolution for higher-severity findings.
Code Metrics
Figure 4. Code Metrics
The Code Metrics section of the Project Dashboard displays a set of metrics for the project's codebase,
broken down by language.
361
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• An "Overall" group which represents the entire codebase; the sum of the metrics for each language.
• The top 5 languages (by percentage of lines of code in the respective language compared to the total
number of lines of code).
• An "Other" group which contains the summation of any other languages after the top 5.
The colors assigned to each language are purely aesthetic, and are chosen using the same color scheme
that Github uses.
By default, the "Overall" group is selected, so the metric areas to the right will show stats for the whole
codebase. Clicking one of the languages, or the "Other" group in the legend will cause the metric areas to
display language-specific stats. Clicking on the "Overall" group will return the display to its default state.
When focused on a particular language, each metric will show an "X / Y" value instead of the usual "Y".
The "Y" indicates the metric's value for the entire codebase, and the "X" indicates the metric's value for the
subset of the codebase which is written in the focused language.
Each metric area will also show a sparkline indicating that metric's trend over the past week. The
sparklines will be colored blue for "good" changes, and red for "bad" changes.
362
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Analysis Frequency
The Analysis Frequency section of the Project Dashboard offers a summary of the project's most recent
analyses.
Figure 5. Analysis Frequency
At the top of the section, a text blurb describes when the latest analysis occurred, and how long it took.
The rest of the section is broken down into three tabbed sections.
Analyses
This shows how many analyses were run on the project over the past week, 4 weeks, and 3 months.
363
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Tools
This shows how many unique tools were run in analyses on the project, over the same time periods. (Note
that in this context, "tools that were run" means the set of Tools referenced by Findings in Software Risk
Manager. It doesn't matter whether you ran the tool separately, or if Software Risk Manager orchestrated a
run of the tool on its own.)
Activity Monitor
The Activity Monitor section of the Project Dashboard shows a "calendar heatmap" which represents the
analysis activity on the project over the past year.
Figure 6. Activity Monitor
364
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The far left represents dates from a year ago, and the far right represents recent dates. Stepping down a
column of the chart, each bubble represents a day of the week, with Sunday at the top, and Saturday at
the bottom. Hovering the mouse cursor over any of the bubbles in the chart will cause a tooltip to display
the bubble's respective date, and the number of analyses that were run that day.
The analysis activity is broken down by different types of analyses, e.g. Static and Dynamic. The legend
items below the visualization represent these different analysis types (i.e. "Detection Methods"). Note that
any given analysis may result in findings of different detection methods, depending on what files were
365
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
uploaded. Clicking the legend items below the visualization will cause the visualization to focus on the
legend item's respective detection method. This can cause the number of analyses shown in the tooltip to
change. For example, three analyses may have been run on a given day, but only two of those analyses
resulted in data from Dynamic Analysis. In this case, if the "Overall" legend item was selected, the tooltip
would show "3 analyses on {date}", but when the "Dynamic Analysis" legend item was selected, the tooltip
for that same bubble would show "2 analyses on {date}."
The visualization uses brightness to indicate more or less analysis activity for each given day, as indicated
by the legend above the visualization. A darker shade of color indicates more analyses, and a lighter/
whiter shade of color indicates fewer analyses.
366
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
This section is broken into two pieces; the graph, and the table. Both represent the same data.
The graph is broken into two pieces; the "duel", and the "trend".
The "duel" section shows the number of created findings (in red) versus the number of resolved findings (in
green). By default, the graph will show an accumulation of these numbers, starting from date at the far left
of the graph. The icon in the upper-right corner of the Created vs. Resolved section opens a menu which
allows you to toggle between "accumulated" and "daily" counts in the "duel" section. "Daily" counts show
the exact number of created and resolved findings for any given day. The colored area between the lines in
the "duel" section of the graph indicates which line is higher. A green fill means more findings were
resolved as of that day (if using "accumulated" counts), or resolved on that day (if using "daily" counts).
The "trend" section of the graph shows the difference between the red and green lines of the "duel" (in
blue). The "duel" and the "trend" graphs have their own separate Y axes representing cumulative finding
counts, and count difference, respectively. The two graphs share the same X axis, which represents the
date.
When hovering over the graph with the mouse cursor, a vertical line will snap to the nearest date to the
mouse, causing the legend above the graph to update its numbers to reflect that date. The corresponding
row in the table to the right of the visualization will be highlighted, and the table will auto-scroll to that row if
necessary. Similarly, hovering over the table will cause the same changes, depending on which row in the
table is hovered.
By default, the Created vs. Resolved section shows the accumulated number of findings since the
beginning of the summary time window. Click the graph icon in the upper-right corner of the section, and
select "Show daily counts" to switch the graph to Daily mode. Daily mode shows the change in values on a
day-to-day basis. Accumulated mode can be considered the Integral of Daily mode, and Daily mode can
be considered the Derivative of Accumulated mode.
367
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
On the top-right of the graph is a calendar icon, which can be clicked to bring up a menu for selecting a
date range.
Selecting one of these range values will automatically refresh the graph to the selected range.
For larger date ranges, each point in the graph can represent multiple dates by taking the sum of data
samples involved.
368
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
The visualization uses a Stream Graph to represent the relative volume of the top finding types (Y axis)
over time (X axis). Each stacked area of a given color represents a specific type of finding, e.g. "SQL
Injection". The height of each area represents the number of findings of that type on a given day.
The table to the left of the visualization acts as a legend, where each of the finding types is labelled, and
has a colored fill-bar indicating the respective finding type's percentage share of the project.
Hovering the mouse cursor over an item in the table to the left of the visualization will highlight the
corresponding area in the visualization. Similarly, hovering the mouse cursor over an area in the
visualization will highlight the corresponding item in the table. Clicking an item will cause that item to
become "focused". Click the item again to undo the focused state, or click another item to change to
another focused state.
369
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
As with many of the other dashboard sections, hovering the mouse cursor over the visualization will cause
a vertical line to snap to the date nearest to the mouse. When this happens, the table to the left of the
visualization will update to reflect the percentages for that day.
Click the graph menu in the upper-right corner to access the "layout" options. By default, the graph uses
"stream" layout. Switch to the "stack" layout to rearrange the items into a stack, such that the bottom of the
stack aligns with the "0" on the Y axis. Note that with the "stream" layout, the Y axis's meaning differs from
date to date, so no axis numbers will be displayed.
On the top-right of the graph is a calendar icon, which can be clicked to being up a menu for selecting a
date range.
Selecting one of these range values will automatically refresh the graph to the selected range.
For larger date ranges, each point in the graph can represent multiple dates by taking the average finding
counts of data samples involved.
370
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Hybrid Correlation
Hybrid Correlation, at its core, enables results from DAST tools to be correlated with results from SAST
tools. This gives better visibility into how findings may actually be exploited in the wild as well as help
identify test cases for those findings. Software Risk Manager currently has support for one form of Hybrid
Correlation, which can infer possible execution patterns.
For more information, see the following section:
• Agentless Correlation
Agentless Correlation
Agentless correlation uses a static analysis approach on source code and binaries to correlate SAST and
DAST results. No configuration steps are required to make use of agentless correlation. The only
requirement is uploading source code at some point in an analysis.
371
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• Requirements.
• Known Limitations.
If Hybrid Correlation is enabled, Agentless Correlation is automatically applied for any project with
correlation enabled and with uploaded source code.
Source Code
Agentless Correlation relies on the availability of source code to detect endpoints and their locations within
a codebase. From this alone, DAST and SAST results that occur at an endpoint handling function can be
correlated.
Only source code declaring and implementing endpoints are required. Source code for dependencies and
utility libraries are not necessary, unless they declare and implement endpoints.
Endpoint detection is supported for a specific set of languages and web frameworks. These are as follows:
Effectiveness of endpoint detection can vary depending on the use of plugins and unconventional endpoint
routing methods within the source code.
Binaries
Binaries for your application can also be uploaded to improve Agentless Correlation. If binaries are
available, a call graph can be generated and explored to find code paths to SASTs from a detected
endpoint. All relevant binaries for your application—the compiled application and its dependencies—should
be uploaded with debug symbols for the best results.
Hybrid Correlation through call graph analysis is supported for binaries on the following runtime
environments:
372
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Agentless Correlation explores a set of possible execution paths from an endpoint to find correlations with
a code location. These explored paths may be inactive or incomplete due to undetected endpoints,
inheritance and strategy patterns, anonymous functions, or other features for a given language and web
framework.
Rule Sets
The Rule Set Page is accessed via the Rule Set Associations section of a project's Analysis Configuration
dialog. When you access the Rule Set page, you will be able to view and sometimes edit a set of rules that
can be used to determine how different types of findings will correlate with each other.
Each Rule Set has Rules, and each Rule has Criteria and identifying information.
Rule Sets are, as the name implies, a set of rules. Each rule acts as a strategy for combining results from
different tools and providing standard information for the finding. Within a rule, a set of criteria can be
defined, forming the underlying logic for the rule. The identifying information for a rule can optionally
include a Severity, CWE, and Description, which will be shared by Findings created from that rule. For
example, a general "SQL Injection" rule may be created to capture specific results from multiple tools and
provide a shared description, making it easier to locate and recognize standard vulnerabilities.
When result data is uploaded to a Software Risk Manager project, as long as that project's Prevent
Correlation setting is not enabled, its associated rule set will be responsible for determining which types of
results represent the same types of problems. In this case, rules will be applied during ingestion, when
findings are created from tool results. If there are multiple tool results belonging to the same rule and they
occur at the same location, they will all be associated with the same finding. Whether a tool result
"belongs" to a rule is determined by that rule's criteria.
Additional Information
For more information on identifying information and rule criteria, see the following topics:
The identifying information for a rule includes severity, CWE, and a description. These fields are all
optional. When provided, they will alter the corresponding values for findings associated with that rule.
Each rule's identifying information is collapsed by default. To expand it, click the dropdown configuration
icon and select View Details.
373
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
If you have the admin role, you can edit an existing rule's identifying information (aside from the read-only
Software Risk Manager rule set).
To rename a rule, click on its name to open an edit window. Enter a new name then press Enter.
To change the severity, CWE, or description for a rule, expand the identifying information section, then click
the pencil icon next to the corresponding header. This will activate an inline form allowing you to make
changes to the value. Once you've set the desired value, click Save to apply the change. Click Cancel o
discard your changes without saving.
You can add criteria from editable rules via the forms at the bottom of each rule's criteria list.
Rule Criteria
A rule's criteria control which tool results will be matched with a rule. Note that each criterion can only
appear once in a rule set. If you attempt to add a criterion that already exists in a different rule, you will be
given the option to move the criterion out of that rule, or cancel. Users with the admin role can edit the
criteria for each rule.
Criteria can be created for rules using the add criterion buttons for that rule. These buttons are located at
the bottom of the criteria list.
374
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Criteria can be deleted from rules using the delete button for that criterion. The button is hidden until you
hover over the criterion in a rule's criteria list.
Tool Criteria
The Add Tool Criterion form allows you to create criteria that operate on a tool result's type. An individual
tool criterion specifies a tool, category, and code. It will match tool results whose raw values match the
values specified by the criterion.
The exact values for the tool criterion fields vary depending on what is reported by the tool. One way to
discover these values is to look at the Finding Details page for existing findings in Software Risk Manager.
The Tool, Tool Category, and Tool Code are displayed in the Tool Details for each associated tool result.
The category and code fields are both optional. Omitting both will create a criterion that matches all results
from the specified tool. Omitting just the code will create a criterion that matches all results from the
specified tool marked as part of the specified category. Some tools do not specify a tool category, in these
375
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Leaving the tool category field blank does not act as a wildcard, so if the tool specifies categories,
they must be included in all rule criteria.
CWE Criteria
The Add CWE Criterion form allows you to create criteria that operate on a tool result's CWE. By
specifying a CWE ID value, a CWE criterion will match tool results with that CWE value.
Hosts
Note: this section is only applicable to Software Risk Manager users with the InfraSec add-on.
When Software Risk Manager ingests Network Security results, the location of those results is typically
expressed in terms of a "host," with the level of detail varying from tool to tool. The Hosts page is Software
Risk Manager's location for interacting with host data directly, outside the context of Findings or Projects.
Users will be able to access the Hosts page but the Associated Projects column will only populate for
projects they belong to. Only the Software Risk Manager user with admin privileges will be able to create,
edit, update, or delete host information.
Click the Hosts icon in the navigation bar to open the Host Scopes page.
This page shows a list of global host scopes with the following information:
376
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
• FQDN
• Hostname
• NetBIOS Name
• IP Address
• MAC Address
• Operating System
• Environment
• Associated Projects. Click the project name to open the project page.
Note: There's a basic filter field to sort hosts along with advanced filter options. Also, you can use the
"View" button to select which columns to display (or hide).
• Creating a host
• Editing a host
• Deleting a host
• Managing host scopes. Click the Manage Host Scopes button to access the following options:
• Importing host scopes
• Exporting host scopes
1. Click the Hosts icon in the navigation bar to open the Host Scopes page.
2. Click the dropdown list icon located in the last column of each row.
377
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
1. Click the Hosts icon in the navigation bar to open the Host Scopes page.
2. Click the dropdown list icon located in the last column of each row.
1. Click the Hosts icon in the navigation bar to open the Host Scopes page.
2. Click Create Host.
• Host Scopes
• Hosts Table
378
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Host Scopes
A Host Scope is effectively just a set of projects that share host information with each other. A Host Scope
can be used to model a network where each project in a Host Scope contains vulnerability information for
a vulnerable application that is housed on a potentially vulnerable host. Alternatively, one can simply use
Host Scopes to isolate host information to particular sets of projects so that overlapping pieces of host
information between Host Scopes don't interact with each other during Host Normalization and Finding
Correlation. Each Host Scope can have multiple projects attached to them but each project can only be
linked to one Host Scope. See Host Scope Associations for more information on how to set up projects
with Host Scopes.
Click the Hosts icon in the navigation bar to open the Hosts page. Use the Hosts and Host Scopes buttons
to display the associated data.
379
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Clicking Import will allow you to import a custom set of host information into the Host Scope for which you
clicked Import. Software Risk Manager currently only supports importing hosts defined in a .json file.
Hosts are expected to be provided as JSON Objects of the form: field-type: [values...] SRM
currently supports the following field-types: Hostname, FQDN, NetBIOS Name, IP Address, MAC Address,
Operating System, Ports. Every value for a field type is simply a string, except for Ports, which is a special
case expecting each value to be another JSON Object with the following structure:
"Ports": {
"Port": <port_number>
"Protocol": <port_protocol>
"State": <port_state>
}
Note: The Import button for non-selected Host Scopes will be disabled by default as you can only import
hosts into the selected Host Scope.
Clicking Export will provide you a .json file containing all the normalized hosts in the Host Scope for
which you clicked Export. The structure of the .json file matches that of the structure required for
importing hosts into a Host Scope.
Clicking Delete will bring up a window allowing you to confirm that you would like to delete the relevant
Host Scope. Deleting a Host Scope will delete all normalized host information belonging to that Host
Scope. To delete a Host Scope, you will first need to delete any projects associated with that Host Scope.
380
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
You can confirm that you would like to delete the relevant Host Scope by clicking OK.
Hosts Table
Selecting a Host Scope in the Host Scope management menu will populate the Hosts Table with
normalized host information from the selected Host Scope. Normalized hosts are sets of hosts reported by
different tools that are correlated to each other. Thus the information that the table is populated with is an
aggregation of the host information from various tools that are referencing the same host.
381
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Click View in the top right corner and use the toggles to select what information to display.
Clicking on it will bring up an interactive table where you can define the host that you are adding.
Clicking Add Value will produce a text field where you can enter a new value for the column you're editing.
Note that a default value will be shown if the text field is empty and serves as an example of a valid value.
There is some validation applied to IP Address, MAC Address, and Open Ports. Typing in an invalid value
for that field will cause the text field to be highlighted in red. Each invalid value is considered non-existent
when clicking OK to create a Host with the specified values, and consequently will not appear in the Hosts
Table when a host with invalid values is successfully created.
If you do not wish to include a value on a host, you may click the trash bin located at the far right of the cell
to delete the value from consideration.
382
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
You can include any number of values for any particular column in the editor. Note that Associated Projects
is not present in the editor. This is because Associated Projects is a derived field, found by determining if a
host exists in a particular project. Also note that any columns that are missing in the Hosts Table as a
consequence of disabling them in the "View" menu will still be shown while editing the hosts.
Software Risk Manager also allows you to manually edit existing normalized hosts in the Hosts Table. If
you click on the button in the right most column of the Hosts Table, a drop down menu will appear. The first
element in the drop down menu is "Edit Host".
Clicking on "Edit Host" will bring up the same interactive table that appears when you're manually adding a
new host, except now you will see it in the table, as opposed to above it.
Software Risk Manager also allows you to delete existing normalized hosts. In the same drop down menu
that "Edit Host" appears, you will also see "Delete Host".
Clicking on it will prompt you with a message detailing the consequences of deleting a host.
You may confirm the delete by clicking the "Delete" button. Clicking Cancel will bring you back to the Hosts
Table without deleting the host. Note that only the normalized host is deleted when clicking Delete. No host
information acquired from results during an analysis will be lost.
383
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
When creating or editing a host, you may end up introducing values for field-types that Software Risk
Manager considers "identifying". Identifying fields for Hosts are the FQDN, Hostname, NetBIOS Name, IP
Address, and MAC Address fields. If you introduce a value for an "identifying" field-type and it already
exists on a host in the current Host Scope, clicking on "OK" will cause the editor to expand to include two
new non-interactive tables.
The first new table will show you the host you tried to add, and the second new table will show you all
hosts that already have some of the values for "identifying" field-types the host you tried to add has.
Clicking Merge will cause the host you tried to add to be joined together with the other hosts that shared
values for "identifying" field-types with that host. Clicking Cancel will bring you back to the editor and will
not join the host with any other hosts. Note that you will be unable to edit the host you're trying to add until
you either click Merge or Cancel.
Filtering Hosts
Software Risk Manager also allows you to filter the hosts that appear in the Hosts Table. Above the table,
you should see a text field.
This is the "Generic" filter. Any value provided here will be used to display only hosts for which at least one
field value for any of the field-types satisfies the filter defined by the provided value.
Clicking advanced, which is next to the "Generic" Filter, will bring up the Advanced Filters sidebar.
384
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
These filters are specific to a host field-type, and providing a value for any of these will display only hosts
in the table for which the specified value exists in the specified column for that host. Note that each filter
available will only filter by one value, so attempting to filter by multiple values for a particular field-type (or
in the "Generic" filter) won't work.
Visual Log
The Visual Log page provides a helpful UI for certain events and errors that administrators might be
interested in for auditing purposes. It is important to note that the log file generated by a running Software
Risk Manager installation is not the same as the visual log. Most notably, arbitrary exceptions that appear
in the log file will typically not appear on the Visual Log page.
Click the "gear" icon in the header bar and select Visual Log to open the Visual Log page.
385
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
For information on log messages and filters, see the following topics:
• Type is an identifier for the type of event that the entry describes. The entry's type can be used as a
filter criteria (explained below).
• Title is a brief description of the event.
• Timestamp indicates when the event happened. The default display mode for this is " ago", but
386
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
hovering the mouse over the timestamp will reveal the precise date and time of the event.
• Expand/Collapse can be clicked to expand or collapse the log entry. By default, all log entries are
collapsed. You can actually click anywhere in the colored title area to expand or collapse the log entry.
• Body a longer-form description of the event. In some cases, it may be the same as the title.
• Identifying Info points out the Project and User associated with the event, if applicable. For example, a
login attempt for a Software Risk Manager user would be associated with that user. An analysis failure
event would be associated with the Project for which the analysis failed.
• Metadata is unstructured information related to the event. In the example shown above, the IP
Address, Login Method, and Reason are all metadata specific to the failed-loginevent type. Other
event types can (and typically will) have different metadata fields.
• Actions refer to the bar at the bottom of an expanded event, containing one or more buttons.
• The Dismiss button will cause the entry to become "dismissed," which will hide the event from view
by default when visiting the page later.
• The Retry button will be available for some error-type events, allowing users to retry whatever
process whose failure generated the log entry.
As noted in reference to the Timestamp, the visual log is ordered in reverse-chronological order, so that
the newest events will be at the top. As you scroll through the log, you'll eventually encounter a Load More
button that will load the next portion of the log. You can keep scrolling and clicking Load More until you
reach the end of the log (the earliest event). While you are on the Visual Log page, if new events happen,
rather than interrupting your view of the log by immediately appearing and altering the UI, a notification will
appear at the top of the page, prompting you to reload the log.
Dismissed Entries
Clicking Dismiss on a visual log entry will "dismiss" it, sending it into a semi-ignored state.
Once a reload is triggered (e.g., by refreshing the page, clicking the "click to reload" prompt, changing filter
states, or changing view menu settings), dismissed entries will be hidden from view (assuming the Include
dismissed log entries setting in the View menu is switched off). The Include dismissed log entries setting in
the View menu can be toggled to show or hide dismissed log entries, causing them to appear with the
checkered background style.
The Visual Log Page offers a filtering capability that allows users to easily select a subset of the log.
387
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
By default, the Log Filter section will contain a single blank filter block. Each filter block contains three
optional criteria:
• View only those log entries whose User is one of the users selected in the filter block.
• View only those log entries whose Project is one of the projects selected in the filter block.
• View only those log entries whose Type is one of the types selected in the filter block.
For example, you could set a filter in order to only view failed-login events where someone attempted
to log in as the "admin" user.
Clicking the Or... button below the filter will add an extra filter block, allowing you to set alternate criteria. In
the example below, the filter will select failed-login events related to the "admin" user, OR any event
related to "Project A" and the "John Doe" user.
388
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
Note: Although all log types will be available for selection in the filter, those types may not always be
present in the log. For example, non-admin users will only be allowed to view log events that are directly
related to a project they manage, so they inherently won't be able to see failed-login events, for
example, because those events are never associated with projects. Also, the successful-login event
is not recorded by default. See the Visual Log Configuration section in the install guide to enable
recording of that event type.
Webhooks
Webhooks will allow SRM to issue POST requests to an external resource when finding or triage statuses
are updated. Currently, webhooks are an API-only feature. Please see the Webhooks section of the API
guide for more detailed information on how to configure webhooks.
Once a webhook has been configured, anytime the triage or finding status has been updated for one or
more findings that belong to a project that matches a webhook configuration, a payload will be generated
and a POST request will be made. The payload is a json object with the following properties:
389
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager User Guide
If a webhook is configured to use a secret, the requests made by SRM will contain the X-Signature
header. The value of this header is generated by hashing the request json body using an HMAC hex
digest.
390
Software Risk Manager Documentation (v2025.3.5)
2
Software Risk Manager Install Guide
Software Risk Manager Install and Deployment Options
The full range of Software Risk Manager functionality is based on how it is deployed. This section provides
an overview of what each deployment provides.
Software Risk Manager has four deployment options, which are described below.
Native Installer
The native installer (also referred to as the "stand alone" deployment) is available for both Windows and
Linux. It provides an easy way to install the entire technology stack on a single server with an easy-to-use
UI and command line wizard. This deployment is recommended for users who want to get up and running
quickly and for simple maintenance and upgrades.
With the native installer, both the web application and database are running on the same system, which
can cause contention. For high availability, the Kubernetes deployment is recommended. In addition, the
native installer does not support running an external database, nor does it support horizontally scaling the
running of tools. For more information, see Running the Native Installer.
Note: Tool Orchestration and Scan Farm modules are not supported with this deployment option.
Note: Tool Orchestration and Scan Farm modules are not supported with this deployment option.
Kubernetes Deployment
This deployment option is recommended for high availability and scalability. Kubernetes also supports Tool
Orchestration and Scan Farm modules. For more information, see Installation Using Kubernetes.
Manual Installation
This deployment is reserved for advanced administrators who want total control of the deployment. It
allows the user to install the web server and database and manage that infrastructure independently. The
database can be deployed on the same machine or a separate one from the web application. This
deployment method is not recommended due to its complexity and being prone to error.
391
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Note: Tool Orchestration and Scan Farm modules are not supported with this deployment option.
Software Requirements
Software Risk Manager is pre-packaged with most of its requirements. There are, however, certain
prerequisites for installations that will be leveraging the .NET scanning support of Software Risk Manager.
Note: The bundled Dependency-Check periodically updates its database of vulnerabilities. If Software
Risk Manager is installed in an environment without a connection to the internet, this update will not
succeed. For more information, see the Internet Access section.
.NET Analysis
In order to run the bundled .NET tools supported by Software Risk Manager, the .NET Framework runtime
is required for Windows and the Mono runtime is required for Linux. Additionally, Dependency-Check
requires the .NET Core 8.0 SDK on all platforms.
Note: The .NET Core 8.0 SDK is preferred over the .NET Core 8.0 Runtime, as the Runtime may cause
Dependency-Check .NET analyses to fail in some environments.
Windows Users
It is recommended that the latest version of .NET be installed.
Software Risk Manager is capable of running multiple .NET analysis tools on your codebase. FxCop is a
supported tool and is developed and distributed by Microsoft. For Software Risk Manager to run FxCop on
your behalf, you must install it separately. Software Risk Manager will then automatically discover its
location and run it.
Software Risk Manager supports FxCop versions 10+ and will automatically discover the location of the
latest version of FxCop installed on your machine. If you would like to provide a specific location, set the
fxcop.path property in the Software Risk Manager configuration file (codedx.props). FxCop is a
legacy analyzer that is no longer available through Microsoft. Starting with Visual Studio 2019 and .NET
5.0, FxCop is replaced with Microsoft Code Analysis (Roslyn) Analyzers.
392
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Hardware Requirements
Hardware requirements vary, depending on how many Software Risk Manager projects will be active at the
same time, how frequently analyses will be conducted, whether built-in tools are being used, the number of
results from tools in use, how many concurrent users are expected to use the system, and what other
system interactions might be setup. However, the following is the suggested hardware configuration
requirements based on deployment size.
Table 1.
Deployment Size CPU Cores Memory IOPs Storage
Small
This configuration is recommended for
supporting up to 100 projects with
4 cores 16 GB RAM 3,000 250 GB
limited use of built-in tools, up to 1,000
analyses per day, and up to 8
concurrent analyses.
Medium
This configuration is recommended for
supporting between 100 and 2,000 8 cores 32 GB RAM 6,000 500 GB
projects, up to 2,000 analyses per day,
and up to 16 concurrent analyses.
Large
This configuration is recommended for
supporting between 2,000 and 10,000 16 cores 64 GB RAM 12,000 1 TB
projects, up to 10,000 analyses per day,
and up to 32 concurrent analyses.
Extra Large
This configuration is recommended for
supporting over 10,000 projects, more 32 cores 128 GB RAM 24,000 2 TB
than 10,000 analyses per day, and up to
64 concurrent analyses.
393
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
This section describes the Software Risk Manager native installer. For Docker or Kubernetes installation
instructions, please see the codedx-docker and srm-k8s pages respectively.
Note: A Kubernetes-based installation is necessary when using Tool Orchestration or Scan Service
(needed to run Coverity and Black Duck scans).
The Software Risk Manager installer is self-contained as it includes all of the software necessary to run
Software Risk Manager and is dependent upon its own Tomcat, Apache, and MariaDB services. The
services automatically start whenever Software Risk Manager is restarted.
Note: While multiple Software Risk Manager installations are supported, it is discouraged to run them on
the same machine. This will likely lead to resource contention, resulting in performance degradation in
those installations.
Some of the Software Risk Manager dependencies listen for network activity (e.g., the web server to
accept incoming requests). If a port conflict is detected, you will be prompted with a suggested alternate
port. It is your choice to accept that port or change it.
When first starting the installer downloaded for your platform, you should see the following screen.
394
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
395
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Linux Considerations
For headless Linux environments, the installer comes with an option to interact from the command line. To
do so, run the installer with the --mode text option.
For example:
396
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Note: Running on start up is only supported for root installations and assumes commands are run with
root privileges.
cp installdir/ctlscript.sh /etc/init.d/codedx
chmod +x /etc/init.d/codedx
Add the following to the top of the codedx file below #!/bin/bash to ensure that the script is compatible
with systemd.
Following a reboot, Software Risk Manager should start automatically. To revert these changes, SRM can
be removed from the startup services with the following commands:
cd /etc/init.d
systemctl disable codedx
397
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
cp installdir/ctlscript.sh /etc/init.d/codedx
Replace the #!/bin/bash at the top of the file with the following:
#!/bin/bash
#
# chkconfig: 2345 80 30
# description: SRM services
After a reboot, Software Risk Manager will start up automatically. To revert these changes, Software Risk
Manager may be removed from the startup services with the following command:
Installation Directory
The Software Risk Manager installer places all its dependencies and program executables in the
installation directory. The installer will suggest a location on your file system that sticks with common
conventions for your adopted platform; however, you can choose to install Software Risk Manager to a
different location if needed.
398
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Admin Account
Software Risk Manager has a built-in admin user to manage the system. The installer prompts you for the
credentials you want to use for that account. Be sure to keep note of these credentials in a secure location
as they are not retrievable once the admin user has been created. When new Software Risk Manager
releases are available, you will download and run the latest installer. Your installer admin credentials are
required to complete the installation.
Note: The first time you use Software Risk Manager, you must log in using the installer admin
credentials. After that, you can change the admin's password within Software Risk Manager; however,
changing the password in Software Risk Manager does not change the admin's password for the
installer.
399
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Data Directory
Software Risk Manager stores data in the data directory you configure during the installation. The default
location is the typical place used by your adopted platform to place program data files. This can be
changed, if needed, from the relevant installer screen. For production installations of Software Risk
Manager, we strongly recommend that this data directory be part of your backup plan as it contains all data
managed by Software Risk Manager.
400
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Protocol Configuration
Choose the protocol configuration for Software Risk Manager. The default is HTTP and HTTPS.
401
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
If you selected the default protocol (HTTP+HTTPS) on the previous screen, select which ports to use.
402
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
403
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
SSL Configuration
What you do with the SSL configuration depends on your deployment scenario. By default, the installer will
setup Software Risk Manager dependencies to offer both HTTP and HTTPS access to Software Risk
Manager. This is sufficient for most evaluation scenarios. If, however, you are deploying Software Risk
Manager for production usage, then we recommend that you use or obtain a valid SSL certificate for the
host machine. If you don't use your own certificates, HTTPS is enabled by default with a self-signed
certificate generated during installation. This will ensure secure communications to all clients accessing
Software Risk Manager. Note that if you use the default HTTPS option with the self-signed certificate, most
browsers will display a security warning when connecting, which will need to be accepted to proceed with
access to the site.
If Software Risk Manager will be used in a networked environment, using HTTPS to connect is
recommended. For example, once Software Risk Manager is installed, use https://<hostname>/srm
instead of http://<hostname>/srm (substituting in your machine's hostname).
Click the "Next" button if you're using the Software Risk Manager self-signed certificate. Otherwise, use
your own SSL certificate by getting the certificate and associated private key in PEM-encoded X.509
format. (Some issuers refer to this as “Apache format.”) Click "Do you want to import your own SSL
certificate?" and browse to those files.
404
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
1. Get your SSL certificate in PEM-encoded X.509 format (name the file server.crt) and the private
key for the certificate in PEM format (name the file server.key).
2. Copy the two files into the following directory: <your-srm-install-directory>/apache2/conf/
certs.
3. Restart your Software Risk Manager Apache service. You can do this in the manager app or in the
Services area on your control panel.
1. Enter the domain name for your Web Server to generate an SSL certificate.
405
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Trusting Certificates
If you're connecting with an application (such as Jira or Git) that is using a self-signed HTTPS certificate,
you will need to add it to the Software Risk Manager Java trust store, as explained below.
406
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Linux
1. Open a terminal window.
2. Change directory to the Software Risk Manager Java trust store: cd <installation-
directory>/java/bin where the <installation-directory> defaults are /opt/srm/ for
Linux root and /home/srm/ for Linux non-root.
3. Import the key to the Software Risk Manager Java installation's keystore:
• [root] use ./keytool -printcert -rfc -sslserver <server hostname:port> | sudo
./keytool -importcert -keystore "../lib/security/cacerts" -storepass
changeit -alias <name for your server> -noprompt. Replace <server
hostname:port> and <name for your server> with the appropriate information for your
environment.
• [non-root] use ./keytool -printcert -rfc -sslserver <server hostname:port> |
./keytool -importcert -keystore "../lib/security/cacerts" -storepass
changeit -alias <name for your server> -noprompt. Replace <server
hostname:port> and <name for your server> with the appropriate information for your
environment.
4. Restart the Software Risk Manager services.
Enter the Tomcat configuration parameters you wish to use in the Tomcat AJP Port field.
407
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Time Expectations
Software Risk Manager is now ready to install. Use the Back button to correct any configuration options.
408
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
409
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
When the installation is complete, the Setup Wizard completion screen will appear.
410
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Select the Launch Software Risk Manager option to launch the applicaton after clicking the Finish button,
then Click Finish.
Firewall
Software Risk Manager is a web application that requires a web server to house it. The Apache web server
is provided and configured automatically with the installer. However, for most systems, this means that a
firewall exception is necessary to allow incoming connections over the network so that users (including
you) can access the installation from other machines. By default, the firewall ports that need to be opened
up are 80 and 443, for HTTP and HTTPS respectively.
On Windows, you will be prompted with the following alert in order to grant the firewall exception.
411
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Note: The first time you use Software Risk Manager, you must log in using the installer admin
credentials. After that, you can change the admin's password within Software Risk Manager; however,
changing the password in Software Risk Manager does not change the admin's password for the
installer.
License File
If you do not have a license or if your license has expired or is invalid, please request a license from our
Sales Team (see Requesting a License below).
When you purchase Software Risk Manager, you will receive (usually via email) a new license (a blob of
letters and numbers) that you will need to install.
412
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
The header area provides the current license status. In this example, the license is valid, but if the license
has expired or is invalid, the header will show a message indicating what is wrong.
The form shown in the example above allows you to upload the license you received. Open your license
key file using any ASCII text editor (such as Notepad), copy the license text, and paste it in the Use a new
license form.
Click the Use this license button. If the license is valid, you will be sent to the Software Risk Manager
home page; otherwise, the License Management page will just reload.
If you require further assistance, please contact us.
Uninstallation or Reinstallation
Software Risk Manager is distributed with an uninstaller, which will remove the files and system services
that were setup for Software Risk Manager. You will be prompted with the choice of removing the data files
used by Software Risk Manager. Be aware that removing data files is irreversible and will result in data
deletion.
To reinstall Software Risk Manager, running the uninstaller first is recommended.
413
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Upgrading
During the upgrade process, the installer may present you with a list of issues. These issues must be
resolved to complete the process.
If you are performing an upgrade using the installer over SSH, it is recommended to use screen, tmux, or
similar to ensure the upgrade process will continue if the SSH session is disconnected.
• Open the installation directory (e.g., C:\Program Files\Software Risk Manager or /opt/
srm/).
• Remove the specified files or folders but leave the backup folder (backup-<timestamp>), the
upgrade.ini file, and the properties.ini file.
Remove Services
On Windows, the upgrade process requires specific Software Risk Manager services. Other Software Risk
Manager services should be removed. If you are presented with a list of services, you can remove them by
doing the following:
Note: Replace CodeDxMariaDB with the service name that the installer displays.
Free Ports
The upgrade process requires certain ports to be available. If you are presented with a list of ports, you
can free them using the procedures shown below.
Windows
1. Open the “Resource Monitor” application as an administrator.
2. Click the “Network” tab.
414
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
3. Click the “TCP Connections” bar to see a list of TCP connections established.
4. Look for one of the ports in the presented list.
To continue with the upgrade process, you have to make sure that the presented ports are available. If the
process using the required ports is a version of Software Risk Manager, please follow the instructions in
the "Remove Services" section. If it is not related to Software Risk Manager, make sure to find the
conflicting program and ensure that the problem will not occur after installation.
Linux and OS X
List the processes listening to a TCP connection using terminal:
To continue with the upgrade process, you have to make sure that the presented ports are available. You
should stop the process that spawned the service and ensure that the conflict will not occur after
installation.
In your backup folder, there’s a file called restore-backup, which is used to restore to a previous
version of Software Risk Manager.
Windows
1. Navigate to the backup folder, which is in the installation folder that you provided during installation.
The default folder is C:\Program Files\Software Risk Manager\backup-<timestamp>\
where <timestamp> is the date and time the upgrade was performed.
2. Right-click on restore-backup.bat and choose "Run as administrator."
415
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
The Software Risk Manager installer includes a graphical tool to manage services, which can be found in
the Software Risk Manager installation folder. For Windows, the tool is called manager-windows; for Linux,
it's manager-linux-x64.run.
Open the appropriate tool and go to the Manage Servers tab to view and change the status of the services.
To start, stop, or restart individual services, highlight the service, then click the desired action (see the
screenshot below). Use the buttons on the bottom to change the status of all the services.
Alternatively, you can use the Windows Service Manager or the ctlscript shell files for Linux to change the
status of Software Risk Manager services. To start, stop, or restart any Software Risk Manager services
using ctlscript, navigate to the Software Risk Manager installation folder and follow the examples below:
• Start individual services (you can replace "start" with "stop" or "restart"):
• ./ctlscript.sh start tomcat
• ./ctlscript.sh start apache
• ./ctlscript.sh start mysql
• Start, stop, or restart all services:
• ./ctlscript.sh start
• ./ctlscript.sh stop
• ./ctlscript.sh restart
• Obtain the current status of all services:
• ./ctlscript.sh status
A Docker-based installation consists of two parts: the SRM web application Docker image and the
database upon which it depends. You can provide your own MariaDB or MySQL database instance or use
the provided MariaDB Docker image.
For more information about using Docker Compose, see the sections below:
416
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
• HTTPS Pre-work
• Installation
• Installation Prerequisites
• Volume Naming
• Installation Without an External Database
• Installation With an External Database
• Customizing Software Risk Manager
• Backup and Restore
• Prerequisites
• Creating a Backup
• Backup Retention
• Restoring a Backup
• Upgrading Software Risk Manager
• Running Software Risk Manager After Upgrade
• Migrating from Software Risk Manager Installer to Docker Compose
• Migration Without an External Database
• Migration With an External Database
• Uninstall
The footprint of your Software Risk Manager Docker-Compose deployment depends on whether or not you
plan to use an external database.
The Software Risk Manager web application requires a MariaDB (version 10.6.x) or a MySQL (version
8.0.x) database instance. You can provide a database instance or use what's included in the default
Compose file. An external database can be a standalone instance or one managed for you by a cloud
provider such as AWS or Azure.
A deployment using an external database consists of one Software Risk Manager Docker container for the
web application that depends on a Docker volume.
Figure 1. Core Deployment with an External Database
417
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
A deployment without an external database includes an additional Docker container for the Software Risk
Manager Web database instance. The MariaDB database instance stores data using a Docker volume.
Figure 2. Core Deployment without an External Database
418
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
System Size
Hardware requirements can vary based on a number of factors, including how many Software Risk
Manager projects will be active at the same time, how frequently analyses will be conducted, whether built-
in tools are being used, the number of results from tools in use, how many concurrent users are expected
to use the system, and what other system interactions might be configured. Taking that into account, you
can refer to the tables below for some general guidelines to help determine the size of your deployment.
Table 1.
Size Total Projects Daily Analyses Concurrent Analyses
Small 1–100 1,000 8
Medium 100–2,000 2,000 16
419
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
420
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
• Update notifications. Software Risk Manager will periodically check for newer versions and display an
update notification when one is available. Requests for the latest version are sent to
https://service.codedx.com/updates/latestVersionData.json.
• Dependency-Check updates. Dependency-Check will periodically download updates from the
National Vulnerability Database, the Retire.js repository, or reach out to Maven Central while scanning
Java dependencies (this aids in the dependency identification process, to cut down on both false
positive and false negative results).
• Offline mode. If Software Risk Manager is in offline mode, this may lead to lower quality results when
running Dependency-Check as a bundled tool.
• Secure Code Warrior. Unless noted elsewhere, Software Risk Manager will reach out to any URLs
belonging to the securecodewarrior.com domain.
The following sections specify configuration tasks that might apply to your deployment. Pre-work tasks
require updates to your Docker Compose file.
• If you are not using an external database, you will edit docker-compose.yml.
• If you are using an external database, you will edit docker-compose-external-db.yml instead.
Software Risk Manager depends on one or more Docker volumes. When using selinux, you must append
:Z to volumes listed in your Docker Compose file, including the default volumes and any extra volumes
added during configuration tasks.
421
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Software Risk Manager includes a MariaDB database that requires no configuration on your part, so you
can skip this section if you do not plan to use an external database instance.
Your MariaDB/MySQL database must be on port 3306.
If you prefer an external database, the web workload supports MariaDB version 10.6.x and MySQL version
8.0.x. Complete the configuration tasks shown below before installing Software Risk Manager with an
external web database.
Your MariaDB/MySQL database must include the following variable configuration:
• optimizer_search_depth=0
• character_set_server=utf8mb4
• collation_server=utf8mb4_general_ci
• lower_case_table_names=1
• log_bin_trust_function_creators=1
Refer to the Web Database Workload Requirements section for database instance configuration details.
To create the database catalog and Software Risk Manager database user:
Note: If you have to reinstall Software Risk Manager and delete your Software Risk Manager data, you
must repeat steps 2 and 3 below after deleting your Software Risk Manager Docker volume.
422
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
PRIVILEGES;
If your database configuration requires Software Risk Manager to trust a certificate (e.g., the Amazon RDS
root certificate), follow the Trust Certificates instructions to trust your database certificate and update the
volumes section of your docker-compose-external-db.yml file.
Your Software Risk Manager instance can trust self-signed certificates or certificates issued by certificate
authorities that are not trusted by default. Obtain a copy of the cacerts file from a Java 11 distribution,
which will include the keytool program that you will need to run the following command:
You can mount your cacerts file by adding a line to the volumes list in the codedx-tomcat section:
codedx-tomcat:
...
volumes:
- codedx-appdata:/opt/codedx
- /path/to/cacerts:/opt/java/openjdk/lib/security/cacerts
...
HTTPS Pre-work
The Tomcat container can support HTTPS. For example, generate a self-signed certificate with openssl
or obtain a real certificate from a certificate authority:
openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "/C=US/ST=Ne
w York/L=Northport/O=Software Risk Manager/CN=localhost" -keyout ./ssl.key
-out ./ssl.crt
423
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
The server.xml file contains a configuration that supports HTTPS using Tomcat's SSL/TLS capability .
This template can be mounted over the existing server.xml in the Docker image. The SSL certificate
and private key must also be mounted.
Update the codedx-tomcat section in your Docker Compose file (either docker-compose.yml or
docker-compose-external-db.yml) with SSL and server.xml volume mounts, switching ports
from 8080:8080 to 8443:8443. See what follows for Docker Compose file content using port 8443 with
extra volume mounts for server.xml, ssl.key, and ssl.crt.
codedx-tomcat:
...
volumes:
- codedx-appdata:/opt/codedx
- /path/to/ssl.crt:/usr/local/tomcat/conf/ssl.crt
- /path/to/ssl.key:/usr/local/tomcat/conf/ssl.key
- /path/to/server.xml:/usr/local/tomcat/conf/server.xml
ports:
- 8443:8443
...
This section details how to start a functional instance of Software Risk Manager using Docker Compose.
Installation instructions will vary based on whether or not you are using an external database. Complete
the required pre-work configuration tasks before continuing with either the no-external-database or
external-database installation path.
• Installation Prerequisites
• Volume Naming
• Installation without an External Database
• Installation with an External Database
Installation Prerequisites
Before installing Software Risk Manager, you must install the following:
424
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Volume Naming
When creating named volumes, Docker Compose will prepend the project name, which is the current
directory name by default, to the volume name. In other words, if you have a Docker Compose install
under the folder srm-docker and another under srm-docker-2, their volume names will be distinct and
contain different data. Without specifying the -p option, the following two named volumes would exist:
• srm-docker_codedx-appdata-volume
• srm-docker-2_codedx-appdata-volume
Named volumes are created when doing docker-compose up, so if you want to override the default
naming, you need to specify a project name the first time you execute the following command:
The docker-compose.yml file is used to install Software Risk Manager without an external database.
To install Software Risk Manager without an external database:
1. Select a password for the MariaDB root user, one that does not use single quote characters, and edit
your docker-compose.yml file by specifying the password for both the MARIADB_ROOT_PASSWORD
and DB_PASSWORD parameters.
2. Select a password for the Software Risk Manager admin user and edit your docker-compose.yml
file by specifying the password for the SUPERUSER_PASSWORD parameter.
3. Run docker-compose -f ./docker-compose.yml up -d to start the SRM Docker containers.
4. Run docker-compose -f ./docker-compose.yml logs -f to view log data.
When the message "The Server is now ready!" appears in the console, you can navigate to either
http://hostname:8080/srm or https://hostname:8443/srm (depending on your HTTPS configuration) to
log into your Software Risk Manager instance.
Note: If you want to migrate data from an existing Software Risk Manager system, refer to these
instructions.
1. Select a password for the Software Risk Manager admin user and edit your docker-compose-
425
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
"jdbc:mysql://db-hostname/srmdb?sessionVariables=sql_mode='STRICT_TRAN
S_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'"
If you followed the steps required for secure transport, your connection string will look like the
following:
"jdbc:mysql://db-hostname/srmdb?sessionVariables=sql_mode='STRICT_TRAN
S_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'&useSSL=tru
e&requireSSL=true"
docker-compose -f ./docker-compose-external-db.yml up -d
You can run the following commands to view Software Risk Manager log data (assumes an srm-
docker-codedx-tomcat-1 container name):
Note: If you want to migrate data from an existing Software Risk Manager system, refer to these
instructions.
You can customize Software Risk Manager's behavior by specifying certain configuration properties.
426
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Custom Props
Software Risk Manager features can be customized through the configuration file codedx.props which,
by default, is located in your Tomcat container at /opt/codedx. (A full list of configuration parameters
and how to change them can be found in the section on using the native installer.)
For example, to automatically sign a user out after 15 minutes of inactivity (20 minutes by default), set
session.lifetime to 15 minutes.
To set the sign-out property in a Docker Compose install:
1. With Software Risk Manager up and running, copy its codedx.props file to your current working
directory using the following docker cp command, replacing the srm-docker-codedx-tomcat-1
Docker container name as necessary (you can list running Docker containers with docker ps):
docker cp srm-docker-codedx-tomcat-1:/opt/codedx/codedx.props .
session.lifetime = 15 minutes
4. Restart the SRM web container by running the Docker Compose down and up commands that you
use for your deployment.
codedx-tomcat:
image: ...
environment:
427
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
DB_URL: ...
SRM_WEBAPP_NAME: "mysrm"
With this configuration, you can access Software Risk Manager at hostname/mysrm after restarting
Software Risk Manager. URL rewrites and redirects from /codedx become disabled when using a custom
context path.
This section explains how to back up and restore Software Risk Manager using backup.ps1 and
restore.ps1 in the scripts directory. Both scripts include a -p project name parameter that you
should specify if you used a project name with your Docker Compose up command.
The backup script creates a new volume named codedx-backups where each backup gets stored by
name. You can either specify a name or let the backup script generate a name for you formatted as
backup-{date}-{time}.
Note: Be cautious of commands such as docker volume prune. The volume storing Software Risk
Manager backups is not attached to a container and would be deleted.
The Software Risk Manager backup and restore scripts depend on PowerShell Core, which can be
installed on macOS, Linux, and Windows.
When running the backup and restore scripts, make sure you're either in a PowerShell Core terminal
environment or the command begins with pwsh so it's run by PowerShell Core.
Windows Prerequisites
Ensure you can run PowerShell Core scripts on Windows by switching your PowerShell Execution Policy
to RemoteSigned (recommended) or Unrestricted. You must run the Set-ExecutionPolicy
-ExecutionPolicy RemoteSigned command from an elevated/administrator Command Prompt.
Creating a Backup
Backup instructions will vary based on whether or not you are using an external database. Use the
procedures shown below to create a backup that will include the volume data for your deployment under
428
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
1. Stop your containers using the Docker Compose down command for your deployment.
2. Open a terminal window and change the directory to your srm-docker GitHub repository.
cd /path/to/srm-docker
3. Run the backup.ps1 script by specifying a backup name (e.g., my-srm-backup) and the path to
your Docker Compose file.
4. Verify that you see the following message indicating a successful backup:
1. Stop your containers using the Docker Compose down command for your deployment.
2. Open a terminal window and change the directory to your srm-docker GitHub repository.
cd /path/to/srm-docker
429
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
3. Run the backup.ps1 script by specifying a backup name (e.g., my-srm-backup), the path to your
Docker Compose file, and the name of your web volume (you can list volumes with the docker
volume ls command).
Backup Retention
Backups will be automatically removed by the backup script if they meet one of the following criteria:
• Older than 30 days. The 30-day default can be changed with the -Retain backup script parameter,
using -Retain 0 to ignore backup age, -Retain 5 for 5 days, and -Retain 10:00 for 10 hours of
retention.
• Exceeds maximum backup count. By default, a maximum of 10 backups will be stored at a time. This
can be configured with the -MaximumBackups backup script parameter.
For more advanced usages of the backup script, such as setting the names of your Tomcat and DB
containers if they are not the default, see the help info via the following command run from the srm-docker
directory:
Restoring a Backup
You can use the included restore.ps1 script in your srm-docker/scripts folder to restore a backup
created by backup.ps1. This will restore Software Risk Manager data from a provided backup name that
was either specified or generated when creating the backup.
To restore a backup:
1. Stop your containers using the Docker Compose down command for your deployment to avoid
unexpected restore behavior.
430
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
2. Run the following command to restore a backup by entering its name from the list of backups:
pwsh ./scripts/restore.ps1
Note: You can use the -BackupName parameter to skip the backup list by specifying a specific
backup.
3. Verify that you see the following message indicating a successful restore:
4. If you are using an external database, restore the related database backup now.
The restore command assumes no defaults have been changed about the Software Risk Manager Docker
Compose environment. If defaults were modified or for more advanced usages of the restore script, see
the help information provided by running the following command from the srm-docker directory:
This section details how to upgrade Software Risk Manager to the latest version.
Note: It is recommended that you create a backup of your Software Risk Manager Docker Compose
environment before upgrading to the latest Software Risk Manager version.
Remove your Software Risk Manager container(s) before starting the upgrade. (Do not use the -v switch
with the down command because it will delete your data volumes.)
The recommended upgrade method is to pull the latest changes from GitHub. The Docker Compose file is
updated with each Software Risk Manager release to reference the latest Docker image versions. Edits to
local files, such as your Docker Compose file, may block your pull from GitHub, so use the following
commands to stash your changes and reapply them after your pull:
cd /path/to/srm-docker
git stash save before-upgrade
431
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
git pull
git stash apply
If you see a "Merge conflict" message when you run git stash apply, edit the flagged file to resolve
the conflict, then run git add /path/to/file to mark the file as merged.
If you do not want to use Git, you can alternatively download the latest ZIP file from GitHub. (If you use the
ZIP to replace an existing folder, you must reapply any local edits, such as the changes you made to your
Docker Compose file.)
Once you have the latest changes, run your Docker Compose up command to start Software Risk
Manager:
docker-compose -f /path/to/your-docker-compose-file up
After successfully upgrading, you can run the following command to see the effects of the upgrade:
docker-compose -f /path/to/your-docker-compose-file up
Pulling the latest files via Git ensures that you update your original files with the latest versions. Running
your Docker Compose commands with the upgraded files from the same directory avoids unexpected
behavior due to how docker-compose sets project names.
Migrating from the Software Risk Manager Native Installer to Docker Compose
Refer to the sections below to migrate your data from a system created by the Software Risk Manager
Installer to your Docker Compose instance. The version you are running with Docker Compose must equal
the version number of the system whose data you want to migrate. If necessary, upgrade your systems to
a matching version.
Prerequisites
The Software Risk Manager migration script depends on PowerShell Core, which can be installed on
macOS, Linux, and Windows. However, the target system you're migrating data to should have
successfully gone through the installation process.
Windows Prerequisites
Ensure you can run PowerShell Core scripts on Windows by switching your PowerShell Execution Policy
to RemoteSigned (recommended) or Unrestricted. You must run the Set-ExecutionPolicy
432
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Migration Paths
For more information on migration, see the following:
The following steps cover migrating data from a Software Risk Manager system installed with the native
installer to an existing Docker Compose deployment.
To migrate data from a Software Risk Manager system installed using the native installer:
1. Verify that your Software Risk Manager deployed with Docker Compose is running.
2. Verify that your Software Risk Manager deployed with the native installer is running.
3. Verify that the version numbers of both systems match.
4. Log on to your source Software Risk Manager server whose data you want to migrate.
5. Run mysqldump to create a backup file. You can run the following command to create a dump-
srm.sql file after specifying the parameters that work for your database.
Note: The above command uses a database named codedx. Older versions of Software Risk
Manager may use a database named bitnami_codedx.
6. You may encounter an issue running SRM if the database dump file makes use of DEFINER. Run the
following command with dump-srm.sql replaced with the path of your database dump file. This will
overwrite the existing database dump file with the definers removed.
7. Locate the directory path for your Software Risk Manager AppData directory (e.g., /path/to/
codedx_data/codedx_appdata). The AppData directory contains your analysis-files and log-files
directories.
8. Copy your database dump file and Software Risk Manager AppData directory to the system running
Software Risk Manager with Docker Compose.
9. Return to the system running Software Risk Manager with Docker Compose, change directory to this
repository (srm-docker folder), and run the migrate-data.ps1 script with the following commands.
433
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
When prompted, enter the path to your dump-srm.sql file, your Software Risk Manager AppData
directory, and specify the password for the Docker Compose root database user.
cd /path/to/srm-docker
pwsh ./admin/migrate-data.ps1
Note: The above command will use the default values for the script parameters
-tomcatContainerName (srm-docker-codedx-tomcat-1), -dbContainerName (srm-docker-
codedx-db-1), and dbName (codedx). You can find your Docker container names by running docker
ps.
pwsh ./admin/migrate-data.ps1
Enter the path to your mysqldump file: /path/to/dump-srm.sql
VERBOSE: Checking database dump file path...
Enter the path to your Software Risk Manager AppData folder: /path/to/cod
edx
VERBOSE: Checking appdata path...
VERBOSE: Checking appdata/analysis-files path...
Enter the password for the docker MariaDB root user: **********
VERBOSE: Checking PATH prerequisites...
VERBOSE: Checking running containers...
VERBOSE: Dropping database named codedx...
VERBOSE: Creating database named codedx...
VERBOSE: Creating temporary directory...
VERBOSE: Copying database dump file to container...
VERBOSE: Importing database dump file (may take a while)...
VERBOSE: Deleting database dump file...
VERBOSE: Deleting directories...
VERBOSE: Deleting directory /opt/codedx/analysis-files...
VERBOSE: Deleting directory /opt/codedx/keystore...
VERBOSE: Deleting directory /opt/codedx/mltriage-files...
VERBOSE: Copying directories...
VERBOSE: Copying directory /path/to/codedx/analysis-files to /opt/codedx/
434
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
analysis-files...
VERBOSE: Copying directory /path/to/codedx/mltriage-files to /opt/codedx/
mltriage-files...
VERBOSE: Restarting Software Risk Manager...
Restarting srm-docker-codedx-tomcat-1 ... done
Restarting srm-docker-codedx-db-1 ... done
Done
The following steps cover migrating data from a Software Risk Manager system installed with the native
installer to an existing Docker Compose deployment.
To migrate data from a Software Risk Manager system installed using the native installer:
1. Verify that your Software Risk Manager deployed with Docker Compose is running and using the
docker-compose-external-db.yml file. The external database details will need to be added to this file.
From the root of the project, the up command should look as follows:
docker-compose -f docker-compose-external-db.yml up
2. Verify that your Software Risk Manager deployed with the native installer is running.
3. Verify that the version numbers of both systems match.
4. Log on to your source Software Risk Manager server whose data you want to migrate.
5. Run mysqldump to create a backup file. You can run the following command to create a dump-srm.sql
file after specifying the parameters that work for your database.
Note: The above command uses a database named codedx. Older versions of Software Risk
Manager may use a database named bitnami_codedx.
6. You may encounter an issue running SRM if the database dump file makes use of DEFINER. Run the
following command with dump-srm.sql replaced with the path of your database dump file. This will
overwrite the existing database dump file with the definers removed.
435
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
7. Return to the system running Software Risk Manager with Docker Compose, change directory to this
repository (srm-docker folder), and run the migrate-data.ps1 script with the following commands. The
script will guide you through the rest of the procedure.
cd /path/to/srm-docker
pwsh ./admin/migrate-data.ps1 -externalDatabase
Note: The above command will use the default values for the script parameters
-tomcatContainerName (srm-docker-codedx-tomcat-1) and dbName (codedx). You can find your
Docker container names by running docker ps.
Since your SRM deployment uses an external database (one that you maintain o
n your own
that is not installed or updated by the SRM deployment script), you must res
tore the dump-srm.sql file you
created in Step 5 of the migration instructions.
You can restore mysqldump files using a command that looks like this:
436
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Uninstall
You can remove Software Risk Manager and the related Docker volume(s) by running the following
command:
Kubernetes deployment is required for high-availability and the ability to use Scan Farm and Tool
Orchestration.
For complete deployment instructions, see Deploying Software Risk Manager on Kubernetes.
Manual Installation
This section provides information on installing SRM manually. Note that while manual installation provides
expanded configuration options, it also requires a high level of technical knowledge and experience with
the third-party tools and software required to deploy SRM.
Stack
The supported stack for SRM is as follows:
• Java 11
• Apache Tomcat 8.5.x or 9.0.x
• MariaDB 10.6.x or MySQL 8.0.x
437
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Prerequisites
Nothing specific beyond the stack should be required to install SRM on Linux or macOS.
On Windows, the VC15 runtime is required. For more information, see https://support.microsoft.com/en-us/
help/2999226/update-for-universal-c-runtime-in-windows.
Setup
Start by extracting the SRM zip file. The three files of interest are as follows:
• srm
• codedx.props
• logback.xml
AppData
SRM stores a variety of files, including configuration files, temporary files created during analyses, log files,
and copies of files uploaded by the user. The root location for these files is the SRM AppData directory.
You will need to create a directory to serve as the AppData directory (which will be referred to in these
instructions as SRM_APPDATA). Make sure that the user running Tomcat has read-and-write privileges to
SRM_APPDATA.
Move both codedx.props and logback.xml into SRM_APPDATA.
The user that Tomcat will be running as will need to have full access to the appdata folder. Since sensitive
data may be stored here as well, it is recommended that access to this folder be restricted via disk
permissions as well as access restrictions to the machine SRM will be running on.
Database
Create a new, empty database for SRM to use and create a user for SRM with SELECT, INSERT,
UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, ALTER, REFERENCES, INDEX,
DROP, TRIGGER permissions on the database.
For example,
438
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
FLUSH PRIVILEGES;
Edit the codedx.props file to reflect your new database and the credentials required to connect to it. For
example,
swa.db.url = jdbc:mysql://localhost/srm
swa.db.user = srm_username
swa.db.password = srm_user_password
Required changes:
Tomcat
Drop the srm.war file into Tomcat's webapps directory. (You can also deploy it via Tomcat's manager
interface if you prefer).
You also need to add a property to let the SRM app know the value of SRM_APPDATA. You will need to set
a value for the Java property codedx.appdata. You will also need to add
-Dcodedx.appdata=SRM_APPDATA to the list of CATALINA_OPTS values. (Where that's done is system-
dependent: see the Tomcat Documentation for details.) Alternatively, you can define a SRM_APPDATA
environment variable with this value, if you'd prefer that to configuring CATALINA_OPTS.
Additionally, you will need to ensure that the JVM will use UTF-8 as its file encoding. Doing so prevents
issues with Japanese user input like comments and manual results. Add -Dfile.encoding=UTF-8 to
the list of CATALINA_OPTS values.
Now when you start Tomcat, SRM will be able to access the codedx.props file.
Configuration
To make Tomcat stop reporting about cache issues, edit conf/context.xml and add <Resources
cachingAllowed="true" cacheMaxSize="128000" /> inside the <Context>.
It is also recommended to edit conf/server.xml and raise the value of Connector
connectionUploadTimeout, if applicable. This is set to 3600000 by default when using the SRM
439
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Starting SRM
For version 2023.12.5 or later, if SRM is being deployed behind a proxy that is using HTTPS, it is
recommended to set the prop auth.cookie.secure to true. This will allow the secure flag on the
session cookie to be set and passed along through HTTPS via the proxy.
Once everything is configured, start the database and Tomcat (make sure the database is running before
you start Tomcat). Open a web browser and point it at SRM (e.g., http://localhost/srm/). You will
be presented with an installation screen allowing you to set the super admin username and password and
initialize SRM.
You may need to add a codedx.internal-url setting to your codedx.props file. This should contain
a URL that SRM can access itself at, for example http://localhost/srm/ or https://localhost/
srm. This will depend on how exactly SRM is deployed.
While the Software Risk Manager installer automates the configuration steps needed to match the system
and user selections made during the installation process, certain advanced options are configurable from
the Software Risk Manager configuration files. This section describes the configuration options for
Software Risk Manager in the event that changes to the default setup are required.
Software Risk Manager needs a place to store a variety of files, such as the analysis inputs it receives that
the source code that it uses to display in the Finding Details page, log files, and configuration files. These
files are placed in the Software Risk Manager appdata directory. This directory also contains important
information from the ongoing Software Risk Manager usage activity; therefore, it is recommended that this
directory be in a stable location that is periodically backed up.
The location of the appdata directory is set during installation. By default, the appdata directory is located
in the following locations:
Software Risk Manager provides an Intelligent Orchestration integration that allows the application of an IO
Pre-Scan policy to a Software Risk Manager analysis. (For more information on Intelligent Orchestration
440
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
and its use, see Intelligent Orchestration in the Software Risk Manager User Guide.)
Note: Intelligent Orchestration requires a separate IO license and may not be available in all
implementations.
To enable IO functionality, add the following configuration settings to the codedx.props file:
(For more information on property settings and the codedx.props file, see Configuration Files.)
Configuration Files
After making any changes, it is recommended that you delete the log files—except codedx.log—from
the log-files directory to avoid unexpected behavior. Problems may occur because existing
installations will likely exceed the maximum number of log files Logback will delete at a time.
Note: With this configuration change, eligible log files are deleted with each rollover period (which is daily
for the default Software Risk Manager Logback configuration). If you also want log files to be deleted when
the Software Risk Manager server is started, add the code shown below just after maxHistory.
<cleanHistoryOnStart>true</cleanHistoryOnStart>
You must restart the Tomcat server after you've completed your revisions. This can be done by launching
the Software Risk Manager application's Manager Tool, clicking the Manage Servers tab, selecting Tomcat
441
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Software Risk Manager requires a MariaDB database for storage. The MariaDB database is automatically
installed and configured during installation. The following properties are used to configure Software Risk
Manager database connections and are set automatically during installation. Please do not modify these
settings unless there is a strong need to setup an alternate database for use with Software Risk Manager.
However, doing so might cause problems when installing Software Risk Manager upgrades.
• swa.db.url - The JDBC URL of the database Software Risk Manager will be communicating with
• swa.db.user - The username that will be used to access the database
• swa.db.password - The password that will be used to access the database
For instance, to configure Software Risk Manager to communicate with a MariaDB database running on
the same machine as the Software Risk Manager server with a username of "database_username" and
password of "database_password," use the following configuration:
swa.db.url = jdbc:mysql://localhost/codedx
swa.db.user = database_username
swa.db.password = database_password
Internet Access
Software Risk Manager uses internet access in the background for some activities, such as keeping tool
data up-to-date and periodically checking for a new Software Risk Manager release.
Software Risk Manager does not require internet access; however, to insure full functionality, internet
access is highly recommended.
To disable background internet access by Software Risk Manager, add codedx.offline-mode = true
in your properties file (codedx.props). The default is false. Note that this will not disable any internet
access that may occur as a result of user action or configuration settings, such as Tool Connector, Git, or
Issue Tracker configurations.
442
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
When internet access is enabled, Software Risk Manager will perform the following actions:
• Update notifications - Software Risk Manager will periodically check for newer versions and display an
update notification when one is available.
• Dependency-Check updates - Dependency-Check will periodically download updates from the National
Vulnerability Database, the Retire.js repository, or reach out to Maven Central while scanning Java
dependencies (this aids in the dependency identification process, to cut down on both false positive
and false negative results). If Software Risk Manager is in offline mode, this may lead to lower quality
results when running Dependency-Check as a bundled tool.
• Secure Code Warrior - Unless noted elsewhere, Software Risk Manager will reach out to any URLs
belonging to the securecodewarrior.com domain.
• https://jeremylong.github.io/DependencyCheck/current.txt
• https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-modified.json.gz
• https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-%d.json.gz (where %d is a year)
• https://static.nvd.nist.gov/feeds/xml/cpe/dictionary/official-cpe-dictionary_v2.3.xml.gz
• https://repository.sonatype.org/service/local/
• https://search.maven.org/solrsearch/select
• https://search.maven.org/remotecontent?filepath=
• https://repo1.maven.org/maven2/
• https://ossindex.sonatype.org
• https://registry.npmjs.org/-/npm/v1/security/audits
• https://raw.githubusercontent.com/Retirejs/retire.js/master/repository/jsrepository.json
443
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
External URL
In most cases, Software Risk Manager can infer its own external URL based on the requests sent to it from
users. For example, you might access Software Risk Manager from https://localhost/codedx or
https://codedx.mycompany.com. This information is necessary for some subprocesses of Software
Risk Manager that need to communicate back to Software Risk Manager over HTTP, or to provide
accurate links back to Software Risk Manager when generating content—Issue Trackers, for example.
In some cases, the accurate "external URL" may not be available through inspection of user requests.
When this happens, the value must be provided from your codedx.props file via the codedx.external-
url property.
codedx.external-url = https://codedx.mycompany.com
Additionally, there are some cases where you may want internal services (running on the same machine as
Software Risk Manager) to access Software Risk Manager from a different URL compared to the external
URL. By default, the external URL will be used in this scenario (unless overridden by setting
codedx.internal-url):
codedx.internal-url = https://localhost:8443/codedx/
Software Risk Manager allows you to create and deactivate new users that are only known to the Software
Risk Manager system. You may, however, want to let users use the same credentials as they do for your
organization. To facilitate this, you may provide an LDAP or Active Directory configuration in the properties
file (codedx.props). The available settings are as follows:
• auth.ldap.url = ldap://127.0.0.1:389/ – sets the LDAP URL to connect to; this setting is
required for LDAP usage.
• auth.ldap.systemUsername = sAMAccountName=admin,ou=users,dc=codedx,dc=com –
sets the system username (full account DN) that is used when connecting to the LDAP server for
authorization queries; this setting is not required if the LDAP server accepts anonymous queries.
• auth.ldap.systemPassword = secret – sets the password corresponding with the system
username (above) that is used when connecting to the LDAP server for authorization queries; this
setting is not required if the LDAP server accepts anonymous queries.
• auth.ldap.authenticationMechanism = simple – sets LDAP authentication mechanism for
authorization queries; accepted values are none (anonymous) and simple [default: none].
• auth.ldap.userSearchTemplate = sAMAccountName={0},ou=users,dc=codedx,dc=com –
controls the template to generate the user search query for authorization; more information can be
found here [default: <direct user input>].
• auth.ldap.useAsDnTemplate = false – whether to use the provided search template(s) as DN
templates instead [default: false].
444
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Note: LDAP property names were changed in Code Dx version 3.5.4. The previous names may still be
used.
You may be able to get by with only setting the auth.ldap.url property, depending on the complexity of
your LDAP setup. It may be necessary to use a fully-qualified username (e.g., [email protected]
rather than just john.doe) when adding the user to Software Risk Manager.
The systemUsername, systemPassword, and authenticationMechanism properties don't need to
be set for a secure LDAP configuration, due to the fact that they are not used during user authentication,
but for querying user information that will be used during their authentication. Read the section below for
more details.
445
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
to use when making these queries. The systemUsername should be the full, bindable DN for the user.
If no template is provided, the username entered by the user will be directly used, which may not map to
what your LDAP server is expecting. When specifying a user search template, the {0} placeholder must
be present. If it is missing, an error will be logged at Software Risk Manager startup, and LDAP
authentication will be disabled until the template is corrected. After correcting the LDAP authentication,
restart the Software Risk Manager Tomcat server.
Using as a DN Template
If performing a user search before binding is untenable in your environment, you can set Software Risk
Manager to treat the search templates as direct DN templates instead by assigning
auth.ldap.useAsDnTemplate = true. This means that each authentication performs only one bind,
using the resolved DN and the provided user password.
While this may provide slightly better performance, it is mostly useful when anonymous binds are
unsupported and there is no system user account available to perform a search.
Note: Enabling this option will disable LDAP connection pooling, so a new connection will be made and
bound for each authentication attempt. Also note that this option cannot be enabled when using multiple
templates.
Multiple Templates
Multiple search templates can be used by adding multiple, uniquely named properties, starting with
auth.ldap.userSearchTemplate. For example,
auth.ldap.userSearchTemplate-A = sAMAccountName={0},ou=users,dc=codedx,dc=co
m
auth.ldap.userSearchTemplate.B = cn={0},ou=customers,dc=codedx,dc=com
With the above properties, both of those search templates will be used to resolve a user DN when signing
in. The property names can be anything, as long as they start with auth.ldap.userSearchTemplate
and are unique. If auth.ldap.userSearchTemplate-A was used twice in the above example, the
second assignment would overwrite the first.
Note: Make sure that any LDAP user added to Software Risk Manager can be resolved by only one of the
registered search templates.
446
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
their DN to be properly resolved and stored, allowing sign-in under different names.
User Merging
In rare cases, it is possible for two LDAP user entries to exist in Software Risk Manager that refer to the
same LDAP user. If two separate accounts resolve to the same DN during authentication, Software Risk
Manager will automatically merge the users. This merge creates a new user with the same name that is
being authenticated, reassigns all content from matching users to the new user, deletes those previous
users, and then authenticates with that new user. This invalidates any active sessions using either of the
two previous LDAP users.
Note: Any user merging will be accompanied by an entry in the Software Risk Manager server logs, as
well as the Visual Log, with appropriate details.
Display Names
The LDAP attribute used for display names can be set with
auth.ldap.user.displayNameAttribute, which is a comma-separated list of attribute names. Each
attribute is checked in order, and the first received value is used. If unassigned, Software Risk Manager
will attempt to use their CN, UPN, and SAN, in that order.
Display names are automatically updated when a user signs in. Changes to the
displayNameAttribute property won't affect users until they sign in again.
Single-value LDAP attributes will be used as-is, if available. Multi-value attributes will have their first entry
selected by default. You can choose a specific index in the list, if needed, by using the syntax
myAttribute{n}, where n is the 0-based index in the attribute list. For example, you can select the
second value in a list while falling back to another attribute with the following:
You could also prioritize a second value while falling back to the first with:
Note: myAttribute{0} and myAttribute are equivalent; they both select the first value available from
the attribute.
447
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
SAML Configuration
Software Risk Manager can also be configured to authenticate against a SAML 2.0 IdP (Identity Provider).
This can be done by using the settings below.
Note: SAML authentication isn’t currently supported for Software Risk Manager plugins.
448
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
maximumAuthenticationLifetime).
• auth.saml2.passive [default: false] – Sets whether or not to use passive authentication against
your IdP.
• auth.saml2.forceAuth [default: false] – Sets whether or not to force re-authentication with your
IdP when the user attempts to start a new Software Risk Manager session (this re-authentication may
start a new session and invalidate existing SAML sessions with other applications).
• auth.saml2.requireSignedAssertions [default: false] – Sets whether or not Software Risk
Manager should require signed assertions from your IdP (regardless of whether the message as a
whole was signed).
• auth.saml2.requireSignedResponses [default: false] – Sets whether or not Software Risk
Manager should require signatures on all responses from your IdP.
• auth.saml2.signAuthenticationRequests [default: false] – Sets whether or not Software Risk
Manager should sign authentication requests to your IdP.
• auth.saml2.useNameQualifier [default: false] – Sets whether or not Software Risk Manager
should include a name qualifier in Authn requests to your IdP.
• auth.autoExternalRedirect [default: true] – Sets whether or not to automatically redirect
unauthenticated users to your IdP login portal.
• ui.auth.samlLabel [default: SAML] – Sets the label for SAML-related operations within the
Software Risk Manager interface; this will be displayed when signing in to Software Risk Manager or
when creating new user.
Supported Profiles
Software Risk Manager adheres only to the Web SSO Profile. (Software Risk Manager also does not make
use of RelayState.) Other profiles, including Single Logout (SLO), are unsupported.
Basic Configuration
Upon successful configuration and after navigating to the Software Risk Manager Login page, your
codedx.log file should contain the message "Successfully configured SAML authentication." Otherwise,
it will contain "SAML authentication was either incomplete or missing, skipping." A minimal configuration
looks like the following:
auth.saml2.identityProviderMetadataPath = C:/idp-metadata.xml
auth.saml2.keystorePassword = jkspassword
auth.saml2.privateKeyPassword = pkpassword
449
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
privateKeyPassword properties. The assigned passwords will be used to create the keystore if
necessary. The default path for the keystore is in Software Risk Manager appdata directory, at
.../codedx_appdata/keystore/codedx-saml.jks. If a custom keystore is provided, this folder is
the recommended location. Ensure that Software Risk Manager has the necessary permissions to read the
keystore file.
Software Risk Manager has no inherent requirements for the IdP it authenticates against. Requests from
Software Risk Manager can be configured as necessary using the properties listed above to meet the
needs of your IdP.
Navigating to Software Risk Manager will redirect you to your IdP Login Portal, which you may sign into but
will not provide access to Software Risk Manager. You must first add your SAML account as a user
recognized by Software Risk Manager. See the Software Risk Manager User Guide for more information.
By default, Software Risk Manager will redirect you to your IdP, but you can sign in using the Software Risk
Manager Login page by navigating to /login?local. Here you can enter the default Software Risk
Manager admin and password to sign in and add yourself and others as SAML-authenticated users.
If you get a generic error page after signing in with SAML, you may need to explicitly assign the Software
Risk Manager base path. This should match what you have registered with your IdP. See the section on
Multiple Hosts below for more information.
SP Metadata
The full XML Metadata for Software Risk Manager as an SP can be downloaded from the Users page if
SAML has been configured (see figure below). Notable details are provided below.
The Software Risk Manager Assertion Consumer Service (ACS) endpoint is at /login/callback/saml,
relative to your Software Risk Manager URL. For example, if hosting at https://localhost/srm, the
ACS will be https://localhost/srm/login/callback/saml.
450
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
The metadata XML will list the ACS binding type as HTTP-POST, regardless of the binding type set in
codedx.props. This can be ignored. Software Risk Manager will use the binding type specified in
codedx.props. You can change the binding type in that XML if necessary.
auth.hostBasePath = https://myhost/srm
This will force a consistent ACS URL to https://myhost/srm. (Note: This only affects authentication; it
will not change the base path of Software Risk Manager itself.)
451
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
You can disable the automatic redirect to your IdP by setting auth.autoExternalRedirect = false
in your codedx.props.
Both deployments will authenticate against your SAML provider. Note that users registered with one
Software Risk Manager deployment will not be registered with another, even if they authenticate against
the same IdP. Accessing both deployments with SAML user "John Doe" will require registering them with
each Software Risk Manager deployment individually.
While multiple Software Risk Manager installations are supported, it is discouraged to run them on the
same machine. This will likely lead to resource contention, resulting in performance degradation in those
installations.
452
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Note: You may not be able to sign in as a SAML user while your IdP is offline, even if you had been
previously authenticated.
Azure AD
Software Risk Manager can use Azure for SAML authentication by registering Software Risk Manager as
an "Enterprise application." To do this, click "Create your own application," enter a name, and then select
"Non-gallery" from the available options.
Once created, open the newly created application, select "Single sign-on," and then select "SAML."
Only two properties must be specified: the app's Identifier and Reply URL. The Identifier should be
https://codedx.com, unless auth.saml2.entityId was changed to a different value in the
properties file. The Reply URL should be the Software Risk Manager ACS URL as described in the SP
Metadata section.
Note: Software Risk Manager does not support Relay State or Single Logout. Sign-on URL may be blank
or set to the /srm/login page.
After editing "Basic SAML Configuration" as described, save your changes and confirm that the Identifier
field was set with the expected value.
There are two locations to confirm: Within the "Single sign-on" page for your Enterprise registration, and
the "Expose an API" page in the associated App registration.
The Identifier from the "Enterprise registration -> Single sign-on" page should match the "Application ID
URI" from the "App registration -> Expose an API" page; both should match the entity ID for Software Risk
Manager.
453
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Azure AD's default lifetime is a "rolling window" of 90 days. Typically the 90 days would be converted to
seconds and used as the value for the Software Risk Manager property
auth.saml2.maximumAuthenticationLifetime.
Synchronizing this setting between Software Risk Manager and Azure AD (or any IdP) is important: If
Software Risk Manager receives an authentication response containing a session older than the maximum
allowed lifetime, the response will be rejected with an error message.
If a policy with a rolling window is applied, there is effectively no single "maximum" age Software Risk
Manager can expect. In this case, we recommend disabling the sliding window within Azure, or disabling
the Software Risk Manager SAML session lifetime limit by setting
auth.saml2.maximumAuthenticationLifetime to -1.
The original 90-day value (7776000 seconds) may be used regardless of the rolling window. In this case,
users attempting to authenticate with Software Risk Manager must manually start a new session with their
IdP once their session exceeds that age.
Behavior in Azure AD may be viewed or customized with the "Conditional Access" policies available.
Selecting the appropriate mapping method will depend on your SAML IdP and how it is configured to
provide user group information. (These methods cannot be used together at the same time.)
Note: SRM does not support the Assertion Query/Request SAML profile and can only access user SAML
groups during authentication. Enabling Session Lifetimes is recommended to ensure users are regularly
signed back in and updated (see Session Expiration).
454
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
a member of.
This method supports both single-value and multi-value attributes. For multi-value attributes, each value is
interpreted as an additional comma-separated list and is combined with the others for the final list of user
groups.
auth.saml2.groupAttributePattern = is-{group}-group
auth.saml2.groupAttributePattern-other = member-of-{group}
Note: A pattern value must contain exactly one occurrence of the text {group}.)
455
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Account Lockout
Software Risk Manager will automatically lock user accounts that are attempting to log in too many times.
When a user's account is locked, they can no longer log in until the account is unlocked. An account will
either unlock after the set lockout duration has elapsed, the password is reset, or when it was manually
unlocked by an admin. Admins may view locked accounts and unlock them on the users page.
Note that SRM only locks local user accounts. Other authentication schemes such as LDAP, SSO, etc., are
not subject to these rules and may have rules of their own.
All of these parameters for lockout may be customized via the following props:
• auth.lockout.enabled – [default: true] Determines if the account lockout feature is enabled or not.
Note that setting this to `false` will not unlock already locked accounts
• auth.lockout.timespan – [default: 15 minutes] The time period in which the log in attempts must
occur
• auth.lockout.attempts – [default: 5] The number of failed attempts that must occur before the
account is locked
• auth.lockout.duration – [default: 1 hour] How long the account will be locked for. After the
lockout duration, a user can attempt to log in again. This value may be set to 0 if an indefinite lockout is
desired
Password Policy
Software Risk Manager can be configured to have new/edited local user passwords meet certain
requirements.
The defaults for SRM’s password requirements are listed below; however, requirements can be specified
by setting the appropriate properties:
456
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
set a new password when an admin resets their password [default: true].
• local-password-policy.max-password-age = 12 months - Require that users set a new
password after a set amount of time since it was last reset. This can be disabled by setting a value of 0
[default: 12 months].
Header-Based Authentication
Software Risk Manager allows you to authenticate users via a request header. Requests to the Software
Risk Manager server which provide the configured header with a username as its value will be treated as
"logged in" as that user. You can optionally restrict the IP addresses from which such requests can
originate. For example, if you put Software Risk Manager behind a proxy server that manages its own
authentication and adds the header only to authenticated requests, you would specify the proxy server's IP
address as the only "allowed" IP address.
The name of the request header and the set of allowed IP addresses are configured by the following keys
in the codedx.props file:
codedx.header-authentication.header = My-Magic-Authentication-Header
codedx.header-authentication.allowed-ips = 172.1.1.1, 127.0.0.1,
0:0:0:0:0:0:0:1
There is no default value for header key. If omitted, header-based authentication will be disabled. If the
allowed-ips key is not specified, all IP addresses will be considered "allowed." This will also cause a
warning in your log, as it is not recommended to configure a header without an allowed-ips whitelist.
Once configured, header-based authentication and username/password logins will be mutually-exclusive;
you cannot log in via header while already logged in via username/password, and vice versa. There is no
"log out" functionality for a header-based session. Instead, you need to stop sending the header with your
requests.
Header-based authentication may be used to log in as any enabled user that has been added to Software
Risk Manager. This includes the super-admin user, all local users, and all LDAP users. Because of this, it
is highly recommended to provide an allowed-ips whitelist and hide the Software Risk Manager server
behind a proxy that can manage the header.
Software Risk Manager supports auto-registration of users that sign in through external methods such as
LDAP and SAML. This can include automatic creation, enabling, and disabling of users based on their
properties. This is particularly useful when managing an installation using third-party authentication, where
there may be many users in your organization that need to be maintained.
Note: User auto-registration respects the user limit of your license; if a new user attempts to sign in
without any seats available, they will receive an error message regarding license limitations.
457
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
• auth.auto-create.ldap.enabled – set whether to auto-create LDAP users that don't exist yet in
Software Risk Manager [default: false]. (This setting was previously exposed as auth.auto-
create.enabled which will be deprecated in an upcoming release.)
• auth.auto-create.ldap.group-names = foo, bar – a comma-separated list of group names,
where an LDAP user must be a member of at least one of those groups to allow auto-creation [default:
none].
• auth.auto-create.ldap.auto-toggle-enabled – set whether to automatically enable/disable
LDAP registered users based on their membership in the provided LDAP group names (no effect if
group-names is unassigned or empty) [default: false].
When using auto-registration with LDAP, we recommend using both the group-names and auto-
toggle-enabled options. Without group-names, any LDAP user can sign in to Software Risk Manager.
Without auto-toggle-enabled, a user leaving one of those required groups would still be allowed to
sign in to Software Risk Manager.
Note: LDAP group membership checks are only available for LDAP providers that maintain an attribute on
users listing their memberships (e.g., Active Directory and its memberOf attribute).
Auto-registration with LDAP requires a valid LDAP configuration in your codedx.props file, and Software
Risk Manager must have permission to read the necessary LDAP objects and attributes to check for group
membership. This depends on your LDAP server configuration, but typically requires that you've assigned
a systemUser and systemPassword and set authenticationMechanism = simple in your
codedx.props file.
Note: Automatic enable/disable of users occurs when logging in. Changing the user's LDAP group
membership will not sign the user out or disable them. If necessary, you can disable or delete the user
manually. Configuring session durations in Software Risk Manager may also be useful.
Also note that LDAP group names in the group-names property does not need to match any LDAP group
mappings in your Software Risk Manager user groups, though there may be some overlap.
When using auto-registration with SAML, using both the group-names and auto-toggle-enabled
458
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
options is recommended.
Auto-registration with SAML requires a valid SAML and SAML Groups configuration in your codedx.props
file.
Cookie Config
For SRM 2023.12.5 and later, the prop auth.cookie.secure is available and gives control for setting
the secure flag on the session cookie used by SRM. Native HTTP installs will have this prop set to false
and HTTPS installs will have this set to true. If not using a native install, and HTTPS is being used
between the client and SRM, this attribute will need to be manually set to true in the props file.
• auth.cookie.secure - [default: false] When SRM is communicating over HTTPS, the secure flag on
the session cookie will always be set regardless of the value of this prop. When SRM is communicating
over HTTP, the value of this prop controls if the session cookie has this flag set. Where true means
the secure flag is set.
Session Expiration
You can set user sessions to expire after a period of inactivity using the settings below:
• session.lifetime - sets the duration of inactivity required before automatically signing out a user; if
set to 0, sessions will never expire [default: 20 minutes]
• session.timeout-notice - sets the point at which the user will be notified when their session will
expire [default: 2 minutes]
Both of these properties use a readable duration format, that is, 1 hour, 1 hour and 30 minutes, 3
days, and so on.
Enabling session expiration requires assignment of session.lifetime, but session.timeout-
notice is optional. If left unassigned, the timeout notice will be the shortest of either two minutes or 25%
of the session expiration period.
If session expiration is enabled, the user's session will be closed if it either times out or if the user closes
their browser.
Note: If combining session expiration with SAML authentication, make sure to set
auth.saml2.forceAuth = true so that the user always has to re-authenticate with your IdP.
Sessions can also be invalidated if SRM is configured to only allow one user session at a time with the
following setting:
459
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
EULA Acceptance
Normally after the initial installation of Software Risk Manager, the end-user license agreement (EULA) will
be presented to the first admin user to log in. You can configure Software Risk Manager to skip this step by
accepting the EULA via the props file:
codedx.eula-accepted = true
To help manage data retention, Software Risk Manager offers the following settings to enable the purging
of old data:
Findings
When enabled, findings that are marked as Gone and have not been modified for more than the specified
460
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
number of days will be removed. For a finding to be eligible for removal, it must be marked as Gone and
not have been modified recently on all Branches that it is present on. If the finding has been modified
recently or has a status other than Gone on any branch, then the finding will be kept on all branches.
Results
When enabled, results coming from Analysis Inputs that have been archived and are older than the
specified number of days will be removed. However, results that are associated with findings that are
marked as Gone will not be removed. This is done to prevent a scenario where a Gone finding has no
associated results (since all results associated with a Gone finding will be archived). Any findings removed
per the data retention configuration above do not count toward this condition. Results will be removed on
any branch where these conditions are met, regardless of their status in other branches.
Visual Log
When enabled, Visual Log entries that are older than the specified number of days will be removed.
Software Risk Manager allows you to configure each project to automatically use source from a git
repository as input for each analysis. When configuring a connection to a git repository, Software Risk
Manager will, by default, disallow the usage of “local” URLs (i.e., URLs that point to a file in the Software
Risk Manager file system). This is enforced as a security measure to prevent system information exposure
via the validation user interface. Although it is strongly recommended that this setting be left disabled, in
the exceptional cases where it is necessary to use local git repositories, set the git.config.allow-
local-urls property to true.
When configuring a git repository connection, Software Risk Manager uses a request timeout of 60
seconds by default. This timeout can be changed by setting a value for the git.config.timeout
property. For example, a value of 2 minutes changes the timeout to 2 minutes.
Job Configuration
Software Risk Manager performs most long-running tasks, including background cleanup tasks, on a job
system. Controls are in place to limit the number of such tasks running concurrently to ensure the system
isn't overloaded. The resource limits listed below may be adjusted. Higher numbers translate to more
available resources of that type. The minimum value allowed is 1000, and the default is 2000. Values for
this setting are unitless; they are relative measures of the power of your Software Risk Manager server.
Certain jobs are more CPU-intensive, while others are more database-intensive. Each running job uses a
certain amount of the "limit," and this is the mechanism for limiting job concurrency.
These values should be adjusted in relation to the default value. For example, if you believe your server is
twice as powerful as an average server, set these settings to 4000 (double the default) to increase the
number of concurrent jobs that may be run.
461
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
In addition, certain jobs (e.g., generating reports for a project) may produce outputs. The
swa.jobs.expiration (default: 60) setting specifies how long the job results will be available (in
minutes).
Analysis Behavior
Various settings allow you to affect Software Risk Manager behavior regarding the analyses it conducts.
Changing any of the analysis behavior properties can be done at any time after the initial installation;
however, you will still need to restart the Tomcat server to reload the properties.
462
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Bundled Tools
Software Risk Manager bundles various tools that run independently during the analysis process. Each of
these tools requires a memory budget during its own analysis. The memory requirements vary based on
the sizes of the codebases the analyzers are checking. The memory budget for each of these tools is
configurable in the properties file; each of the following settings specify the number of megabytes allotted
to their respective tools. In general, the static analyzers will require more memory in order to analyze larger
projects.
• java.tools.maxmemory (default: 1024 (1GB)) determines the maximum heap size for java-based
tools.
• java.tools.maxmemorypercentage (default: <none>) determines maximum heap size for java-
based tools as a percentage of total system memory.
• ruby.tools.maxmemory (default: 1024 (1GB)) determines the maximum heap size for Ruby-based
tools, which are run with Java via JRuby.
• ruby.tools.maxmemorypercentage (default: <none>) determines the maximum heap size for
Ruby-based tools as a percentage of total system memory, which are run with Java via JRuby.
• php.tools.maxmemory (default: 1024 (1GB)) determines the maximum heap size for PHP tools.
Additionally, these bundled tools may be disabled entirely, if necessary, by setting bundled-
tools.disable to true (default: false). When this flag is set, no bundled tools will be available on the
new analysis page nor will they be run.
463
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Several report configuration options accept templates for their values. These templates may contain plain
text and various substitutions, surrounded by {{ and }}. To include a { } or \, prefix them with a
backslash (e.g., {).
The available substitutions are as follows:
Software Risk Manager users may also include project metadata values as well:
• {{meta:foo}} or {{metadata:foo}} - provides the contents of the metadata field named "foo" for
the project (or a blank string if that value is not specified).
• {{meta.id:bar}} or {{metadata.id:bar}} - provides the ID of the chosen metadata value for
the field named "bar" (or a blank string if one was not given).
• ltruncate:length - will take up to the last length characters (truncated from the left of the string).
• truncate:length or rtruncate:length - will take up to the first length characters (truncated
from the right of the string).
• labbreviate:length - will take up to the last length characters, inserting an ellipsis on the left if
the string was truncated.
• mabbreviate:length or cabbreviate:length - will take up to length characters from the string,
inserting an ellipsis in the center of the string, if necessary.
• abbreviate:length or rabbreviate:length - will take up to the first length characters,
inserting an ellipsis on the right if the string was truncated.
For example, {{project.name|abbreviate:8}} will limit the length of the project name to the first 5
characters followed by an ellipse. A project name of "My Project" would be truncated to "My Pr..." for
display purposes.
Report Filename
The template used to generate filenames for reports may be customized. This can be done by setting the
report.filename-template property. See the previous section for details on valid values.
The default template is {{project.name}} ({{date:dd MMM YYYY}}) - which will produce
filenames such as "My Project (27 Mar 2017).xml."
464
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Custom Logo
Users can add their company logo to a PDF report through a prop setting in codedx.props. The custom
logo will appear on the cover of the PDF report. You can place the logo in the same folder as the properties
file or specify an absolute path. For best results, the specified image should be at least 432 pixels wide
and/or 144 pixels tall.
For an image file named "logo.png" placed in the same folder as the properties file, the setting in
codedx.props would be as follows:
report.pdf.custom-logo = logo.png
Finding Search
On the Findings Page, the Search area lets you filter findings based on metadata fields from their results,
specifically, "Evidence" on the Details Page. The fields presented in the Search dropdown are the
intersection of the set of fields present in that project and the set of fields present in a "for display" whitelist.
The "for display" whitelist can be augmented via configuration:
Note: When searching based on a result metadata field, you must enter the full case-sensitive value of the
metadata to get a match. For example, searching by Field 1 for abc will not match a Field 1 with a
value of abc123or ABC.
Tool Configuration
Props Settings
Software Risk Manager has tool-specific settings for some tools, which control how Software Risk
Manager will behave in response to data from those tools.
Veracode
When accessing Veracode via a Tool Connector, it is possible to load "Callstack" information for each
Veracode Flaw. (Veracode Callstack information is interpreted as Software Risk Manager Data Flow
information for the corresponding results.) Doing so will improve the decision-making process of agentless
hybrid correlation, but this comes at a steep performance cost (roughly 1-2 seconds per flaw).
465
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
NowSecure
NowSecure uses lab-api as the default subdomain for the lab api and app as the default subdomain for
the user interface. Software Risk Manager allows user-defined values for these subdomains in the props
file.
• nowsecure.lab-api-subdomain defines the subdomain for the lab api. Defaults to lab-api.
• nowsecure.lab-ui-subdomain defines the subdomain for the lab user interface. Defaults to app.
Black Duck
When automatically importing projects with parent mapping from Black Duck, Software Risk Manager
omits the top-level Black Duck project group.
Clang-Tidy
By default, the Clang-Tidy reader parses a certain portion of the input file for format detection. The relevant
properties can be changed according to preferences in the props file:
Clippy
Clippy is a tool for linting Rust code, typically through the Cargo package manager. Software Risk Manager
can run Clippy on Rust code, if available.
When Software Risk Manager is properly configured to use Clippy, it will be offered as a bundled tool when
analyzing a ZIP containing at least one Cargo.toml file. During analysis, Clippy will be invoked for each
Cargo.toml file discovered in the ZIP.
In order for Software Risk Manager to run Clippy:
• The standard Rustup installer must be used and installed in a manner accessible to Software Risk
Manager.
• Clippy must be installed as a Cargo component. Clippy is typically installed as part of Rustup
installation, but it can also be installed manually, if needed.
• Software Risk Manager must be able to discover the installation paths.
• Any additional dependencies needed for building your Rust projects must be pre-installed on the
Software Risk Manager machine.
466
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Clippy on Linux
These steps should be followed only after Software Risk Manager has been installed.
Note: Rustup must be installed for the user which runs Software Risk Manager.
• For non-root installations, this will be the user that was logged in when Software Risk Manager was
installed. The Rustup installer can be run by that user and installed as usual.
• For root installations, this will be the tomcat user created automatically by the Software Risk Manager
installer. The Rustup installer must be run through a tomcat user session. For example, on Ubuntu,
this may be done with sudo -u tomcat bash to start a new shell as the tomcat user, followed by
the Rustup install command.
This should provide a .cargo folder in the user's home directory that contains the bin/cargo executable
required by Software Risk Manager.
Restart Software Risk Manager and Clippy should be offered as a bundled tool during analysis of relevant
ZIP files.
Clippy on Windows
These steps can be followed before or after Software Risk Manager has been installed.
On Windows, Software Risk Manager runs through the Local Service user, which does not have a
home directory. Instead, these steps will be followed:
• Install Rustup for at least one user on the Software Risk Manager machine.
• Give the Local Service user permission to read, write, and execute content in the .cargo and
.rustup folders in the user's home directory.
• Update codedx.props to provide the path to the .cargo and .rustup folders.
Log in to the Software Risk Manager machine and run the standard Rustup installer as that user. Once
installation has completed, navigate to the user's home directory (Win+R, type %USERPROFILE%, press
enter) and find the .cargo and .rustup folders.
For each folder, do the following:
467
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
With these changes, Software Risk Manager will have access to the .cargo and .rustup folders.
Next, open the Software Risk Manager Properties file and add these entries:
cargo.path = C:/Users/<username>/.cargo
rustup.path = C:/Users/<username>/.rustup
... where <username> will be replaced with the name of the user that installed Rustup.
Restart Software Risk Manager, and Clippy should be offered as a bundled tool during analysis of relevant
ZIP files.
Coverity
By default, a finding’s severity in Software Risk Manager is based on the Coverity issue's severity.
"Dismissed" and "Absent Dismissed" issues are also excluded by default from the findings. The relevant
properties can be changed according to preferences in the props file:
When automatically importing Coverity projects and versions from the integrations page, SRM will attempt
to parse the branch name from the stream name. Coverity stream names must be globally unique, and so
a common pattern is to use the project name, followed by a separator and the branch name. For example,
a project WebGoat with branch main might have a stream named WebGoat-main. By default, SRM will
attempt to determine the branch from the stream name by checking for the project name, followed by a
separator of either -, _, or a space. Additional stream name parsing behavior can be defined with the
following props setting:
The first regular expression to match the stream name in ascending order of their indexes will be used to
determine the branch name. The branch name will be extracted from the first capture group of the
matching regex. If other groups are required, they must be defined as non-capturing groups. Additionally, if
the stream name format includes the project name, {{projectName}} may be used in place of the
project name. When evaluating the regular expressions, SRM will replace any instances of
{{projectName}} with each project name's literal.
For example, consider a project WebGoat with streams WebGoat - main and Webgoat (develop),
where main and develop are the respective branches. The first stream's format may be defined with the
regex {{projectName}} - (.+). The second stream's format may be defined with the regex
{{projectName}} \((.+)\). Both regexes may be defined in the props file by assigning one to the
468
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Dynatrace
When ingesting Dynatrace data into Software Risk Manager using the tool connector, it limits the number
of entities and related attacks that are included in each result, since these lists can get overwhelmingly
large. By default, the tool connector also specifies a port for ActiveGate environments, and a page size for
the number of vulnerabilities or attack results to include per page. The relevant properties can be changed
according to preferences in the props file:
SD Elements
Regulations Sections data from SD Elements can be pulled in by SRM based on a configuration setting
defined in codedx.props. To pull in this data, set the property sdelements.fetch-regulation-
sections to true. (The default setting is false.)
Note: The default is set to false due to a known issue with SD Elements that requesting Regulations
Sections data causes errors.
Configuration Files
For some of the bundled tools, Software Risk Manager provides the ability to define a configuration file,
either system-wide or on a per-project basis. Within the Software Risk Manager appdata directory, locate
the tool-data directory (or create it if it isn't present). To define a configuration file for a tool, create a
directory with that tool's name (as specified below). A system-wide configuration should be placed in that
directory, or, for a per-project config, create a sub-directory named with the given project's ID, and then
place the configuration file in that sub-directory.
Scalastyle
Software Risk Manager supports user-defined config.xml scalastyle config files. Place the file within the
469
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
tool-data/scalastyle directory or within a project-specific subdirectory. Files should follow the format
defined by scalastyle.
Software Risk Manager also supports a user-defined scalastyle.props config file for configuring the
JVM environment in which the scalastyle tool runs. Currently, the only supported property is
file.encoding, which will be passed to the JVM via the -Dfile.encoding environment variable. This
allows you to run scalastyle on projects that don't use the standard encoding.
Checkstyle
Software Risk Manager supports user-defined config.xml Checkstyle configuration files. Place the file
within the tool-data/checkstyle directory or within a project-specific subdirectory. Files should follow
the format defined by Checkstyle.
Cppcheck
Software Risk Manager supports a user-defined cppcheck.conf config file. Create the file in the tool-
data/cppcheck directory or within a project-specific subdirectory. Within that file, you can define a value
for the useThreads property (e.g., useThreads=4 to request that Cppcheck use four threads). Also,
Cppcheck will run with the --inline-suppr option enabled by default, allowing you to suppress errors
from within your source code. This behavior can be disabled by setting inlineSuppression=false.
See the Cppcheck Manual for more details on these settings.
You can also choose to define the platform property. This affects Cppcheck's configuration for platform-
specific types and sizes. By default, Cppcheck will choose the platform your Software Risk Manager server
is running on. Available platform options are as follows:
You can also use the libraries property to specify a list of library configurations for Cppcheck to use.
For example, setting libraries = [gtk, posix, qt] will enable Cppcheck's library configurations
for gtk, posix, and qt. The available configurations are avr, bento4, boost, bsd, cairo, cppcheck-lib, cppunit,
daca, dpdk, embedded_sql, emscripten, ginac, gnu, googletest, gtk, icu, kde, libcerror, libcurl, libsigc++,
lua, mfc, microsoft_atl, microsoft_sal, microsoft_unittest, motif, nspr, ntl, opencv2, opengl, openmp,
openssl, pcre, posix, python, qt, ruby, sdl, sfml, sqlite3, tinyxml2, vcl, windows, wxsqlite3, wxsvg,
wxwidgets, and zlib.
JSHint
Software Risk Manager supports a user-defined jshint.conf config file. Create the file in the tool-
470
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
data/jshint directory or within a project-specific subdirectory. Within that file, you can define a value for
the scan-html property, which tells JSHint to additionally scan .htm and .html files. This property is
enabled by default (i.e., scan-html=true).
You can also define a value for the extract property, which sets the value for the --extract flag from
JSHint. This flag controls how JSHint extracts HTML from files. Available extract options are as follows:
• auto JSHint will attempt to extract javascript only if the file looks like it is an HTML file. This is the
default value (i.e., extract=auto).
• always JSHint will always attempt to extract javascript. Note that if this value is set, JSHint will scan all
files as HTML. This means that javascript source files will not be scanned normally. Instead, JSHint will
search them for HTML to extract and anything else in the file will be ignored.
• never JSHint will never attempt to extract javascript. Note that if this value is set, JSHint will not be
able to scan HTML. scan-html must be set to false, otherwise JSHint will try to scan HTML files as
javascript source and will report an error for each one.
PHPMD
Software Risk Manager supports user-defined config.xml PHPMD ruleset files. Place the file within the
tool-data/phpmd directory or within a project-specific subdirectory. Files should follow the format
defined by PHPMD.
PHP_CodeSniffer
Software Risk Manager supports user-defined config.xml PHP_CodeSniffer ruleset files. Place the file
within the tool-data/phpcodesniffer directory or within a project-specific subdirectory. Files should
follow the format defined by PHP_CodeSniffer.
PMD
In Software Risk Manager's config file in the tool-data/pmd directory or within a project-specific
subdirectory, you can define a value for the debug-logging property (e.g., debug-logging=true to
enable verbose PMD logs). You can also define a value for the encoding property (e.g.,
encoding=UTF-8 to set the character encoding PMD expects source to be in. Acceptable values are any
standard java.nio.charset.Charset character set). By default, these are debug-logging=false
and encoding=UTF-8.
ESLint
By default, Software Risk Manager will pass --ignore-pattern **/node_modules/*.
Configuration
Software Risk Manager supports user-defined .eslintrc and .eslintignore ESLint config files.
Place the file(s) within the tool-data/eslint directory or within a project-specific subdirectory. Files
should follow the format defined by ESLint. You can use the js, yml, json, or eslintrc formats.
In the event that there are multiple config files present in different formats, Software Risk Manager will
471
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
follow the same priority that ESLint uses. ESLint will also use any .eslintrc config files uploaded in the
project as defined by the rules explained here.
Additionally, Software Risk Manager will search for an .eslintignore file in the root directory of the
uploaded zip file. The .eslintignore file in the zip will take precedence over the .eslintignore file
in the tool-data/eslint or project-specific directories. If you use a custom config, be sure to adjust
your tool configuration. By default, only the recommended ESLint rules are enabled.
Software Risk Manager also supports user-defined "appdata-dir.dita"he default eslintrc.json file. For
users wanting to add minor adjustments to the default configuration, a eslint-config-extra.js can
be placed within the tool-data/eslint directory or within a project-specific subdirectory (a directory
whose name is the numeric id of the Software Risk Manager project), as with the custom .eslintrc and
.eslintignore files mentioned above. When running ESLint, SRM will search for this "extra" config file
and, if present, will include it as an extension of its default ESLint config file.
The contents of the eslint-config-extra.js file should be in the form module.exports = { ...
}, where the ... is replaced by your custom configuration as defined in the ESLint configuration guide.
Important notes about using a custom .eslintignore file
• If an .eslintignore file is neither found in the uploaded zip file nor provided in the tool-data/
eslint directory, Software Risk Manager will pass --ignore-pattern **/node_modules/* as a
command-line argument to ESLint.
• If you want to provide an .eslintignore file, it is a good idea to include the **/node_modules/*
pattern in that file; linting the contents of your third-party dependencies is not recommended, due to the
fact that in some cases this can cause ESLint to fail.
Several ESLint plugins are made available when running as a bundled tool in Software Risk Manager:
Any of these plugins can be used in or excluded from your user-defined configs. All plugins use their
default or recommended rules and settings, except for no-location-href-assign from eslint-plugin-
xss. For this rule, Software Risk Manager uses encodeURIComponent for the escapeFunc option
instead of the default escape function, which has been deprecated. More information about how to
configure these plugins can be found on their respective npmjs or GitHub pages.
By default, Software Risk Manager will run ESLint on .js, .html, and .htm files. If you want to change
472
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
this behavior, you can specify a comma-separated list of file extensions with the eslint.extensions
setting in your codedx.props file. You do not need to include the . with each file extension
(eslint.extensions = js,html,htm). Note that if you decide not to use the html plugin in your
custom configs, you must use this setting to specify that you want ESLint to only run on .js files.
Otherwise, it will try to scan any .html and .htm files it finds as javascript, which will cause ESLint
parsing errors.
Custom Plugins and ESLint Installations
Software Risk Manager allows you to install third-party ESLint plugins, shareable configs, and parsers. To
do so, first make sure you have npm installed and accessible from the command line by installing Node.js.
Then, open a command line and navigate to the tool-data/eslint directory or a project-specific
subdirectory. From there, you can install any plugins, shareable configs, and parsers you wish to use by
running the command npm install ... --save. You do not need to install any of the plugins that are
included with Software Risk Manager by default.
If you want to use your own ESLint environment, you can specify the path to it in your codedx.props file
with the eslint.path setting. Software Risk Manager expects that the provided directory will point to the
folder containing ESLint's bin folder. Software Risk Manager will also try to find any of the supported
ESLint config files in this directory. Note that if you use the global or project config files as described
above, they will take precedence over the ones in this folder. Also, when using an external installation,
Software Risk Manager will ignore any custom plugin folders in the tool-data/eslint directory.
ZPA
Software Risk Manager supports user-defined forms-metadata.json ZPA Oracle Forms metadata
files. Place the file within the tool-data/zpa directory or within a project-specific subdirectory. Files
should follow the format defined by ZPA.
STIG
By default, the STIG reader only ingests vulnerabilities with Open and Not Reviewed status. The
following properties can be configured in the props file to also ingest other statuses if required:
You can set custom system properties for the JVM process that hosts Software Risk Manager. To do so,
use the prefix codedx.jvmprops. on a line in your codedx.props file. For example, to set the
http.proxyHost system property to 1.2.3.4, add the following line:
codedx.jvmprops.http.proxyHost = 1.2.3.4
473
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Note that specifying a setting this way will overwrite existing settings in the JVM. For example, it is possible
to overwrite the user.home property, which may be used by logic within Software Risk Manager. Use care
that you don't overwrite an important value.
For a non-exhaustive list of system properties to be aware of, see https://docs.oracle.com/javase/tutorial/
essential/environment/sysprop.html.
Proxies
Some features, like JIRA Integration and Tool Connectors, reach out to third-party programs via HTTP(S).
If your Software Risk Manager server is running behind a proxy, you can configure Software Risk Manager
to use that proxy for communications with these programs by setting the appropriate properties:
A typical proxy configuration in your codedx.props file would resemble the following:
proxy.host = 123.234.156.178
proxy.port = 3128
proxy.username = myproxyuser
proxy.password = myproxypassword
By default, the visual log will not record successful-login events. To enable this, set the
auth.logging.recordSuccess = true.
Note: Changing this property will not retroactively reveal successful logins that occurred previously, as this
setting determines whether to record successful logins, not whether to show them.
When Software Risk Manager is deployed on a Kubernetes cluster, you can run orchestrated analyses
using the Software Risk Manager Tool Orchestration. If you have a Software Risk Manager license that
includes Tool Orchestration, enable the feature when you run the Helm Prep Wizard.
474
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Analysis Cleanup
By default, Software Risk Manager will remove old analyses and related storage from the tool service
automatically. You can customize or disable this behavior with the following options in the codedx.props
file:
Note: Both successful and failed analyses count toward the "total" being tracked.
To support issue tracker integrations, Software Risk Manager will make requests to the issue tracker
server periodically in order to create, update, and read issues. Due to the volume of requests that can be
made in quick succession, issue tracker servers may begin to deny requests to prevent the server from
being overloaded.
The following properties will affect how Software Risk Manager makes requests.
• azure.auto-create-delay [default: 50] - sets the delay (in ms) between subsequent work item
creation requests made during an auto create job.
• gitlab.auto-create-delay [default: 60] - sets the delay (in ms) between subsequent requests
made during auto create jobs and bulk update jobs.
• jira.auto-create-delay [default: 50 - sets the delay (in ms) between subsequent issue creation
requests made during an auto create job.
• servicenow.request-delay [default: 750] - sets the delay (in ms) between subsequent requests
made during auto create jobs and bulk update jobs.
The Software Risk Manager machine learning aided triage functionality is handled by a separate process,
the Machine Learning Triage Server, which Software Risk Manager spawns and manages. Training a new
prediction model is computationally intensive and can use large amounts of memory. There are times
where training performance can be improved with the availability of more memory. The upper bound on the
amount of memory that the Machine Learning Triage Server JVM can use during training and making
predictions can be configured by setting the following properties setting:
mltriage.service.maxheap [default: none] - sets the max heap size (in megabytes) of the Machine
Learning Triage Server JVMs.
475
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Software Risk Manager can automatically update your prediction model. This feature can be configured or
turned off completely by setting the following props settings in your codedx.props file:
Software Risk Manager integrates with Secure Code Warrior to provide developers with resources to help
facilitate the learning of secure coding practices. This feature can be disabled by setting the following
props setting in your codedx.props file:
• codedx.scw.enabled [default: true if offline mode is off, false otherwise] - enables the Software Risk
Manager Secure Code Warrior integration and its relevant features.
In analysing risk, Software Risk Manager calculates a "code score" (Critical, High, Medium, and Low) by
averaging a "custom code score" and a "component score." This is done through a configurable function in
the form f(severity, count) for certain metrics (shown below). However, this formula can be
customized if needed. (For more information on Risk Scoring, see the Risk Score section in the User
Guide.)
The metrics used for this calculation are as follows:
• componentFindingVolume - in which the count represents the number of component findings for a
given severity.
• customCodeFindingVolume - in which the count represents the number of non-component findings
for a given severity.
• customCodeFindingVariety - in which the count represents the number of finding types for a given
severity.
These metrics are used to calculate a "penalty," which is removed from a top score of 100 down to a
minimum score of 0. The "component score" uses the first of the metrics listed above; "custom code score"
uses the sum of the other two.
The f function can be configured by name; for example, the base config path for the
componentFindingVolume formula would be dashboard.score.componentFindingVolume.
Once the function is configured, there are three suffixes that control the formula:
• .formulaType
• If set to log, the formula is (severity, count) => log_<logBase>(count) *
476
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
dashboard.score.componentFindingVolume.formulaType = log
dashboard.score.componentFindingVolume.criticalWeight = 3.0
dashboard.score.componentFindingVolume.logBase = 2.0
SMTP Configuration
To support policy email notifications, a valid SMTP configuration is required. The following properties are
used to configure SMTP:
Host Normalization
477
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Webhook Configuration
Polaris Assist
Polaris Assist can be configured using the properties listed below. For more information, see AI Insight
Using Polaris Assist in the User Guide.
Properties Settings
The following properties can be set in the Software Risk Manager properties file:
• assist.model-id [default: 'gpt-4o'] - The ID of the LLM that will be requested by SRM.
• assist.code-context.max-lines [default: 100] - The maximum number of lines of code to
include as context for requests to the LLM (including the line range indicated by the finding and any
surrounding lines).
• assist.code-context.max-chars [default: 2048] - The maximum number of characters of
code to include as context for requests to the LLM.
Lines of code will be excluded entirely if they would be truncated by this limit. For assessments on
minified files that consist of a single line, this typically prevents code from being included at all.
• assist.max-response-tokens [default: 100] - The number of response tokens to request
from the LLM for each assessment.
• assist.max-file-size [default: 500000] - The maximum file size (in bytes) of a source file
that may be read to build the code-context for requests to the LLM.
Source files which exceed this size will not be used when making requests to the LLM, regardless of
assist.code-context settings.
Azure OpenAI
For installations connecting directly to Azure OpenAI, model-id will be the "Deployment name" of the
model deployed with Azure OpenAI Studio. SRM does not use batch APIs, and the model's deployment
type in Azure OpenAI Studio must not be "Batch."
478
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Install Guide
Software Risk Manager allows notifications to be sent by email when policy status changes. (To enable
email notifications, see Configuring Email Notifications in the SRM User Guide.) There are three standard
email templates, which can be customized as needed.
To customize a policy email template:
SRM can automatically deactivate inactive users. The following props can be configured:
479
Software Risk Manager Documentation (v2025.3.5)
3
Software Risk Manager Plugins Guide
Software Risk Manager Plugins
There are a number of plugins available to make it easier to bring the power of Software Risk Manager to
other software development tools, including IDEs, CI/CD Build Systems, and open source Application
Security Testing tools. This guide includes instructions for installing and using these plugins.
Note: SAML authentication isn’t currently supported for Software Risk Manager plugins.
Jenkins
The Software Risk Manager Jenkins plugin integrates the Jenkins continuous integration platform with your
Software Risk Manager server. It allows you to push build results to your Software Risk Manager server as
part of the build process.
A Software Risk Manager project and an API key are required. The API key must have the create role for
the project.
This section of the Plugins Guide explains how to install and use the Jenkins plugin. For more information
you may visit the Official Code Dx Jenkins Wiki Page or our GitHub Repository. This plugin is open source
and we welcome community involvement.
Installation
The Software Risk Manager Jenkins plugin is available for installation through the Jenkins plugin
management page. You must be running Jenkins version 2.200 or later, or one of the LTS releases listed
here.
480
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Job Configuration
The first thing you should do is configure your Jenkins Job to publish to Software Risk Manager.
Instructions for Freestyle and Pipeline projects are fairly similar; a note on configuring for Pipelines projects
can be found below.
481
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
This is accomplished on the configuration page by going to Post-build Actions (toward the bottom) and
selecting the Publish to Code Dx option from the Add post-build action button.
You can use the new action to setup different options related to Software Risk Manager.
Publishing
The Server URL, Server API Key, and Code Dx Project fields are required for publishing. Ask your
482
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Software Risk Manager administrator to generate the server API key that has the create role for the
project it needs to interact with.
It is highly recommended that you specify an HTTPS URL, since using HTTP is insecure. If you receive a
warning regarding an invalid certificate, refer to the section on self-signed certificates.
The Server API Key must be stored in Jenkins as a "Secret Text" credential accessible to the Jenkins
project.
483
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Once the Server URL and Server API Key fields are populated, the Code Dx Project dropdown can be
used to select the Software Risk Manager project which will receive analyses. This dropdown has the
options "Specific Project" and "Named Project".
The default option, "Specific Project", provides a simple dropdown for selecting an existing project in
Software Risk Manager. The exact, selected project will always be used when publishing results from the
job, even if the project is renamed.
The "Project Name" option allows you to specify a Software Risk Manager project by name. This must
resolve to exactly one SRM project when the Jenkins job runs, otherwise the job may fail.
The "Project Name" option also offers a "Auto-Create Missing Projects" field option, which allows the
plugin to create the project in Software Risk Manager if it does not yet exist. If using Software Risk
Manager version 2022.4.3 or later, the default branch for the new project will be set to the "Base Branch"
(see below) if specified. Note: The API Key must have either the "Administrator" or "Project Administrator"
role to create projects.
484
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
The Source and Binary Files field allows you to identify the files in the job workspace for Software Risk
Manager to analyze. The format of this field is a comma-separated list of Ant glob file location patterns.
You can populate this list by specifying the files (relative to the workspace) that will be sent to Software
Risk Manager. By default, this field is set to ** (all files).
The Include Git Source option can be used to have Software Risk Manager download the latest content
from the Software Risk Manager project's configured Git source as part of the analysis. Bundled tools will
be ran on this content as usual.
You can use the field "Specific Branch Name" to change which branch is fetched. If left empty, the default
branch for the project will be used.
In addition to generic listing formats, Software Risk Manager supports importing the results of more than
100 commercial and open source analysis tools. This importing feature is defined in the Jenkins plugin
through the Tool Output Files field, where you specify a comma-separated list of the paths and filenames
of each output file. These paths should be relative to the job workspace.
485
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Software Risk Manager users have access to the "First Seen by SRM" and "Last Modified" filters on
Software Risk Manager's Findings page. Each analysis in those filters can have an Analysis Name, which
is directly related to the Analysis Name field in Jenkins. The Analysis Name field lets you set a "name" for
each Software Risk Manager analysis published from Jenkins. You can use build/environment variables to
construct a different name for each analysis. For example, Build #${BUILD_NUMBER} creates the
analysis name "Build #26" for the 26th build of the project. You can construct links using a syntax similar to
markdown, i.e., [link text](link url). This also works with build variables: Build
[#${BUILD_NUMBER}]($BUILD_URL). Some Jenkins plugins, like the Git plugin, provide "macros"
which allow for some additional customization. In this example, the analysis name will be set to the first
eight characters of the git commit hash: ${GIT_REVISION, length=8}. For more information about
"macros", see the Token Macro Plugin Wiki. Note: the analysis name feature is only supported by Code Dx
versions 2.4.0 and up. If the server you plan to publish to is older than version 2.4.0, the analysis name will
be ignored.
The Target Branch and Base Branch options allow you to set which branch will be used when storing
results in the Software Risk Manager project. The Target Branch typically matches the branch currently
checked out in the Jenkins build, but this isn't a requirement. If the Target Branch is not defined, results will
be stored in the project's default branch.
If the Target Branch doesn't exist yet, it will be created in Software Risk Manager using the given Base
Branch as its parent. The Base Branch is only used for creating new branches, and can be left empty if the
Target Branch already exists.
The Target Branch and Base Branch fields only affect data storage within Software Risk Manager and do
not affect the Jenkins build. When Failure or Unstable conditions are configured in the Jenkins plugin,
findings will be fetched from the Target Branch to validate those conditions (or the default branch if
unspecified).
Note: while branching was added in Code Dx 2022.4.0, this plugin requires 2022.4.3 or later when using
the branching feature. If the server you plan to publish to is older than version 2022.4.3, the Target Branch
and Base Branch fields will be ignored.
The Error Handling field lets you change plugin behavior when an error occurs during communication with
the Software Risk Manager server. This behavior is applied if there are connection issues or the analysis
fails, but is not applied for configuration errors such as an invalid Software Risk Manager project.
486
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
In the Advanced Options section, which is located at the bottom, you may specify source and/or binary
locations to exclude from the analysis.
Clicking the Advanced... button will allow you to enter the files you would like to exclude from the build.
These files are also Ant glob patterns.
Clicking the Advanced button will allow you to populate the Self-Signed Certificate Fingerprint field with the
SHA1 fingerprint of the self-signed certificate used by the server. Contact your Software Risk Manager
administrator for the correct value. Or you can navigate to your installation of Software Risk Manager in a
browser, and obtain the fingerprint by following the instructions for your particular browser:
487
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
• Chrome: Click the lock icon or "Not secure" message next to the URL. If the connection is not secure,
click the "Certificate is not valid" section to display a pop-up window. Otherwise, if the connection is
secure, click the "Connection is secure" section and then the "Certificate is valid" section to display a
pop-up window. The SHA1 Fingerprint can be found near the bottom of the pop-up window.
• Edge: Click the lock icon or "Not secure" message to the left of the URL, click on the section
"Connection is/isn't secure", and click the certificate icon at the top-right of the window. The SHA1
Fingerprint can be found near the bottom.
• Firefox: Click the lock icon next to the URL, click the section "Connection (isn't) secure", and click the
More information button. In the new window, click the "View Certificate" button which will open a new
tab. The SHA1 Fingerprint can be found in the "Fingerprints" section.
• Safari: Click the lock icon next to the URL, click Show Certificate, expand the Details section, and the
SHA1 Fingerprint can be found near the bottom.
Once you have the correct fingerprint, populating the Self-Signed Certificate Fingerprint field will allow you
to proceed.
488
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Upon enabling this option, a new set of fields will be shown on the configuration page. These fields are
categorized into three sections: Policy Behavior, Build Failure Conditions, Build Unstable Conditions, and
Graph Options.
Policy Behavior
The Software Risk Manager Jenkins plugin can check the project for policy violations after the analysis has
completed and then change the build result if there were violations. For a policy violation to affect the
Jenkins plugin, the violations must meet the following conditions:
The "'Break build' Action" field allows you to change the build result that is used when the conditions listed
above are met. However, when set to "No Action," the plugin will not check for policy violations.
See the section on Policy Configuration in the Software Risk Manager User Guide for more information.
Note: the Policies feature is only supported by Code Dx versions 2023.1.0 and up. If the server you plan to
publish to is older than version 2023.1.0, the field will be ignored.
489
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
The severity dropdown specifies the range of severities that will cause the build to fail. That is, the build will
be considered a failure if one or more findings are detected with the selected severity range.
Graph Options
The Software Risk Manager Jenkins plugin will show some helpful graphs on the Job and Build pages
490
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
when the Wait for Analysis Results option is enabled. The number of datapoints in these graphs is
configurable using the Number of Builds in Graph field. To show an unlimited number of datapoints, set this
field to a value less than 2.
In newer versions, it's labeled as "Pipeline Syntax" in the menu on the left, containing other project options.
491
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Set the "Sample Step" to "step: General Build Step", and change "Build Step" to "Publish to Software Risk
Manager".
Once selected, you will be given the same configuration options as listed in the previous sections.
Behavior of the Pipeline plugin is the same as the Freestyle one. Customize these options as necessary
and click "Generate Pipeline Script" to create a snippet you can use in your pipeline.
Analysis Results
If the Software Risk Manager Jenkins plugin is configured to wait for analysis results before allowing the
build to complete, it will also show tables and charts on the Job and Build pages.
Finding Tables
The Job and Build pages will display tables that provide a summary of the findings.
These tables show the number of findings for each severity and status. A delta between the current build
and previous build will also be shown, if applicable.
Under the tables there is a link to view the latest results within the Software Risk Manager application.
Finding Graphs
The Job page will show graphs of the findings according to severity and status.
TeamCity
The Software Risk Manager TeamCity plugin integrates the TeamCity continuous integration platform with
your Software Risk Manager server. It allows you to push build results to your Software Risk Manager
server as part of the build process.
492
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
A Software Risk Manager project and an API key are required. The API key must have the create role for
the project.
This section of the Plugins Guide explains how to install and use the TeamCity plugin. For more
information you may visit our GitHub Repository. This plugin is open source and we welcome community
involvement.
Installation
For instructions on how to install the Software Risk Manager TeamCity plugin, please see TeamCity's
official documentation.
The plugin is available on GitHub and TeamCity's plugin marketplace.
Configuration
After installing the plugin, the next step is to add a Software Risk Manager Build Step to your project.
Navigate to the "Build Steps" page for your project and click the "Add build step" button. The "New Build
Step" page will display and a dropdown will ask you to "Choose build runner type". After selecting the
"Code Dx" option, the configuration fields will display.
Publishing
The Code Dx URL, API key, and Project fields are required for publishing. Ask your administrator to
generate an API key that has the create role for the project it needs to interact with.
Once the Code Dx URL and API key fields are populated, the Project dropdown will automatically list the
projects available to the API key. If you receive a warning regarding an invalid/untrusted certificate, refer to
the section on self-signed certificates.
The Source and binary field allows you to identify the files in the job workspace for Software Risk Manager
to analyze. The format of this field is a comma-separated list of Ant glob file location patterns. You can
populate this list by specifying the files (relative to the workspace) that will be sent to Software Risk
Manager.
The Files to exclude field is an advanced option that can be displayed by clicking "Show advanced
options" near the bottom of the page. This field allows you to specify files to omit in the source and binaries
zip file that is uploaded to Software Risk Manager. Ant glob file location patterns are also supported.
Software Risk Manager supports importing the results of more than 70 commercial and open source
analysis tools, in addition to generic listing formats. This feature is supported in the TeamCity plugin via the
Tool output files field, where you specify a comma-separated list of paths and filenames of each output file.
493
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
The Analysis Name field allows you to name the analyses performed by TeamCity. You can find the
analysis names on the "First Seen by SRM" and "Last Modified" filters on Software Risk Manager's
Findings page. You can use build/environment variables to construct a different name for each analysis.
For example, Build #%build.number% creates analysis name "Build #26" for the 26th build of the
project. Clicking the icon next to the input control will list possible values for parameter references. You can
also construct links using a syntax similar to markdown, i.e., [link text](link url).
Clicking Show advanced options will allow you to populate the Self-Signed Certificate Fingerprint field with
the SHA1 fingerprint of the self-signed certificate used by the server. Contact your Software Risk Manager
administrator for the correct value. Or you can navigate to your installation of Software Risk Manager in a
browser, and obtain the fingerprint by following the instructions for your particular browser:
• Chrome: Click the lock icon next to the URL, choose the Connection tab and follow the link for
"Certificate Information". Expand the "Details" section; the SHA1 fingerprint is near the bottom.
• Firefox: Click the lock icon next to the URL, choose the Security tab, and click the View Certificate
button. The SHA1 Fingerprint should be at the bottom of the resulting window.
• Safari: Click the lock icon next to the URL, click Show Certificate, expand the Details section, and the
SHA1 Fingerprint can be found near the bottom.
• Internet Explorer: Click on the Certificate Error text to the right of the URL, select the Details tab, and
find Thumbprint and Thumbprint algorithm fields. Ensure that the value of the Thumbprint algorithm field
is "sha1" and use the value of the Thumbprint field.
Once you have the correct fingerprint, populating the Self-Signed Certificate Fingerprint field will allow you
to proceed.
494
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
The Report archive name field allows you to name the build artifact that the build runner produces. The
artifact is a zip archive that contains an HTML file. This zipped HTML file can be used to configure a build
report tab. The build report tab will display the build statistics tables. If this field is left blank, the build
artifact will not be generated.
The Fail build on severity field allows you to have the build marked as "failed" if Software Risk Manager
reports your project contains findings that match the chosen option. This field is defaulted to "None" and
the build step will finish upon successfully uploading all files to Software Risk Manager. If a different option
is selected, the build step will not finish until the analysis is complete.
The Only fail on new findings option, when checked, means that the build will only be marked as failed if
new findings that match the Fail build on severity option are reported.
495
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Analysis Results
If the Software Risk Manager TeamCity plugin is configured to wait for analysis results, and a name has
been provided to the Report archive name field, you can configure a build report tab for your TeamCity
project.
To create a build report tab for Software Risk Manager in TeamCity, please follow these steps:
1. Configure the Software Risk Manager build runner so that it waits for analysis results
2. Fill out the Report archive name field
3. Run the build
4. On the Edit Build page, add the build artifact to your build artifact paths. The name of the zip archive
should match the configured Report archive name
5. On the Edit Project page, navigate to the Report Tabs section
6. On the Report Tabs section, click the Create new build report tab button
7. In the dialog that opens, fill out the Tab Title field
8. In the Start page field, enter the path to the report. This will look something like [report-archive-
name].zip!codedx-teamcity-report.html
9. Click the Save button
10. Run a new build
The report tab will appear on the Build Results page. It contains a link and tables. Clicking the link will
open the latest results within the Software Risk Manager application. The tables show the number of
findings for each severity and status. If applicable, a delta between the current build and previous build is
included.
Bamboo
The Software Risk Manager Bamboo plugin integrates the Bamboo continuous integration platform with
your Software Risk Manager server. It allows you to push build results to your Software Risk Manager
server as part of the build process.
A Software Risk Manager project and an API key are required. The API key must have the create role for
the project.
This section of the Plugins Guide explains how to install and use the Bamboo plugin. For more information
you may visit our GitHub Repository. This plugin is open source and we welcome community involvement.
Installation
For instructions on how to install the Software Risk Manager Bamboo plugin, please see Atlassian's official
documentation.
The plugin is available on GitHub.
496
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Configuration
After installing the plugin, the next step is to add a Software Risk Manager Scan Task to your project.
Navigate to the "Edit Build Tasks" page for a job for your project and click the "Add task" button. After
selecting the "Code Dx Scan Task" option, the configuration fields will display.
Publishing
The Code Dx URL, API key, and Project fields are required for publishing. Ask your administrator to
generate an API key that has the create role for the project it needs to interact with.
The first thing that should be set up are the Software Risk Manager Server Settings.
Self-signed certificates can also be set up here. If using self-signed certificates, please refer to the section
on self-signed certificates. Otherwise, the field may be left blank.
Once the Code Dx URL and API key fields are populated, Click the Refresh Projects button next to the
Project dropdown.
This will populate the list with the Software Risk Manager projects available to the given API key.
The Source and Binary Files field allows you to identify the files in the job workspace for Software Risk
Manager to analyze. The format of this field is a comma-separated list of Ant glob file location patterns.
You can populate this list by specifying the files (relative to the workspace) that will be sent to Software
Risk Manager.
The Excluded Source and Binary Files field allows you to specify files to omit in the source and binaries zip
file that is uploaded to Software Risk Manager. Ant glob file location patterns are also supported.
497
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Software Risk Manager supports importing the results of more than 70 commercial and open source
analysis tools, in addition to generic listing formats. This feature is supported in the Bamboo plugin via the
Tool Output Files field, where you specify a comma-separated list of paths and filenames of each output
file.
The Analysis Name field allows you to name the analyses performed by Bamboo. You can find the analysis
names on the "First Seen by SRM" and "Last Modified" filters on Software Risk Manager's Findings page.
You can use build/environment variables to construct a different name for each analysis. For example,
Build #${bamboo.buildNumber} creates analysis name "Build #26" for the 26th build of the project.
For information on what environment variables are available, see Bamboo variables.
Bamboo needs to know that your Software Risk Manager server is trusted. Populate the Self-Signed
Certificate Fingerprint field with the SHA1 fingerprint of the self-signed certificate used by the Software
Risk Manager server. Contact your Software Risk Manager administrator for the correct value. You may
also navigate to your installation of Software Risk Manager in a browser, and obtain the fingerprint by
following the instructions for your particular browser:
• Chrome: Click the lock icon next to the URL, choose the Connection tab and follow the link for
"Certificate Information". Expand the "Details" section; the SHA1 fingerprint is near the bottom.
498
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
• Firefox: Click the lock icon next to the URL, choose the Security tab, and click the View Certificate
button. The SHA1 Fingerprint should be at the bottom of the resulting window.
• Safari: Click the lock icon next to the URL, click Show Certificate, expand the Details section, and the
SHA1 Fingerprint can be found near the bottom.
• Internet Explorer: Click on the Certificate Error text to the right of the URL, select the Details tab, and
find Thumbprint and Thumbprint algorithm fields. Ensure that the value of the Thumbprint algorithm field
is "sha1" and use the value of the Thumbprint field.
Once you have the correct fingerprint, populating the Self-Signed Certificate Fingerprint field will allow you
to proceed.
The Build Failure Severity field allows you to have the build marked as "failed" if Software Risk Manager
reports your project contains findings that match the chosen option. This field is defaulted to "None" and
the build step will finish upon successfully uploading all files to Software Risk Manager. If a different option
is selected, the build step will not finish until the analysis is complete.
The Only Consider New Findings option, when checked, means that the build will only be marked as failed
if new findings that match the Build Failure Severity option are reported.
499
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Here, you may set defaults for the Software Risk Manager URL, API key, and optionally the self-signed
certificate fingerprint.
Once configured, you may opt to use the default server in your task configuration.
500
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Eclipse
The Software Risk Manager Eclipse plugin streamlines the use of Software Risk Manager within the
Eclipse IDE. Developers can push out new builds for Software Risk Manager analyses and the results can
be viewed from within the IDE.
A Software Risk Manager project is required. To allow users access to the project, they must be assigned
to the project where the user roles are consistent with those within Software Risk Manager.
This section of the guide explains how to install and use the Eclipse plugin. For more information you may
visit the Eclipse Marketplace.
This plugin supports the Eclipse versions Neon and later.
Installation
The Eclipse plugin is installed through the usual plugin installation method. Navigate to Help -> Install New
Software. Then click the Add button to add a new update site.
Enter Code Dx for Name. Enter https://eclipse.codedx.com/ for Location.
Then click OK.
Select the Code Dx plugin and continue with the wizard in order to complete the plugin installation process.
Configuration
To configure the Eclipse plugin, you can either navigate to Window -> Preferences and select Code Dx, or
you can navigate to Code Dx -> Configure. These methods will result in the same preferences section
being shown.
501
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
To configure the Eclipse plugin, provide the Server, Username, and Password. Enter the URL of the
Software Risk Manager server in the Server field. Enter your Software Risk Manager log in credentials in
the Username and Password fields. Verify the Software Risk Manager plugin can communicate with the
Software Risk Manager server by clicking the Test Connection button. A message will appear indicating a
successful connection or explaining why the connection failed.
502
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Views
The Eclipse plugin provides two main views: the Code Dx Findings View and the Code Dx Finding Details
View. Both of these are available by navigating to Window -> Show View -> Other.
503
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
504
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Findings View
This view displays the findings from the selected project. There are three sections: the findings table, the
summary area, and a toolbar.
The table has columns for many of the finding properties such as:
505
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
• Rule
• CWE
• Codebase Locations
• Status
The table can be sorted by any of these columns except the Tool column. Right-clicking on a row provides
a context menu for performing actions on the selected finding.
The summary area is located above the table. It provides the project name, the total number of findings,
and the number of findings for each severity category.
The toolbar buttons include (from left to right) the ability to switch Code Dx projects, show details of a
finding, show remote source code residing on the Code Dx server, show only findings assigned to you,
filter by status, change status, synchronize the Eclipse Package Explorer view with the table contents, and
refresh the table.
A dialog is displayed after you click the Select a Project button. Note that only the projects accessible to
your user credentials (provided during configuration) will be shown in this dialog.
506
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
507
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
The file will be downloaded from the Code Dx server and displayed in a read-only editor.
508
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
The title of the editor will be marked with a [Code Dx] label before the filename so that it can be
distinguished from local source.
Filtering Findings
The table can be filtered to show only the findings that are assigned to you (left button) and to hide findings
that have a status of Ignored, False Positive,Fixed, Gone and Mitigated (right button).
509
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
The Finding Details view shows a minimal version of the Finding Details page in the Code Dx application.
If you have the update role for a project, you can change the status of a finding in that project and post to
its activity stream.
510
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
The toolbar contains a Sync button. When enabled, selections in the Findings table will automatically
update the information in the Finding Details view.
Markers
The Software Risk Manager Eclipse plugin automatically adds source code markers to help you determine
the location of the findings within the code.
511
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
There are markers in both the left and right gutters. The markers in the left gutter use the Software Risk
Manager severity icons to show the highest level severity on the given line. The markers in the right gutter
show the findings throughout the entire file.
The context menu on the marker will show a submenu for each finding on the given line.
512
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Running an Analysis
If you have the create role on a Software Risk Manager project, you have the ability to perform Software
Risk Manager analyses on that project from within the Eclipse IDE. Just select the Run Analysis option
from the Code Dx menu.
When the dialog is displayed, select the Software Risk Manager project from the dropdown, the Eclipse
projects from the list, and click Run.
513
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
An Eclipse job is created and the progress is displayed in the bottom right corner of the IDE. This will
create a zip file containing all local source code from the configured project and send it to be analyzed by
Software Risk Manager. The Findings table will automatically be updated upon completion of the analysis.
Visual Studio
The Code Sight plugin streamlines the use of Software Risk Manager for developers by allowing them to
push out new builds for analysis and view analysis results from within the Visual Studio IDE.
A Software Risk Manager project is required. To allow users access to the project, they must be assigned
to the project where the user roles are consistent with those within Software Risk Manager.
For information on how to install and use the Code Sight plugin, please refer to the Code Sight
documentation.
The Code Sight plugin streamlines the use of Software Risk Manager for developers by allowing them to
view analysis results from within the Visual Studio Code IDE.
A Software Risk Manager project is required. To allow users access to the project, they must be assigned
to the project where the user roles are consistent with those within Software Risk Manager.
For information on how to install and use the Code Sight plugin, please refer to the Code Sight
documentation.
IntelliJ
The Code Sight plugin streamlines the use of Software Risk Manager for developers by allowing them to
view analysis results from within the IntelliJ IDE.
514
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
A Software Risk Manager project is required. To allow users access to the project, they must be assigned
to the project where the user roles are consistent with those within Software Risk Manager.
For information on how to install and use the Code Sight plugin, please refer to the Code Sight
documentation.
Burp Suite
The Software Risk Manager Burp Suite plugin provides a way to upload Burp Suite findings to your
Software Risk Manager server from within Burp Suite.
A Software Risk Manager project and an API key are required. The API key must have the create role on
the project it needs to interact with.
This section of the Plugins Guide explains how to install and use the Burp Suite plugin. For more
information, you may visit our GitHub Repository. This plugin is open source and we welcome community
involvement.
Installation
The Software Risk Manager Burp Suite plugin is available for download from the BApp Store and from our
GitHub Repository.
BApp Store
To install the Software Risk Manager Burp Suite plugin from the BApp Store, go to the Extender tab in
Burp Suite, click the BApp Store tab, and click on Code Dx.
515
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
GitHub Repository
The Burp Suite plugin can be found on our GitHub Repository.
516
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
To install the extension, go to the Extender tab in Burp Suite and click Add in the Burp Suite Extensions
section.
Click Select file for the Extension file field and navigate to the burp-extension-assembly jar, then click Next
to load the extension.
517
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Configuration
518
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Once the Server URL and API Key fields are populated, click the Refresh button to list the projects
available to the API key in the Project dropdown. It is highly recommended that you specify an HTTPS
URL, since using HTTP is insecure.
If you receive a warning regarding an invalid certificate, you will be prompted to Reject, Accept
Temporarily, or Accept Permanently. Accepting temporarily will remember the exception until the session
ends. Accepting permanently will create a .usertrust directory containing the truststore information. On
519
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Windows this will be in your appdata directory, on Mac it will be in the Application Support folder, and on
Linux it will be in the .codedx folder in the home directory.
After scanning with Burp Suite, there are two ways you can send the results to Software Risk Manager.
The first is to choose a Target URL from the list in the Software Risk Manager Settings in Burp Suite. After
performing a scan, click the refresh button to list all of the available targets. Multiple targets can be
selected from the list using Ctrl + Click.
Select the project you would like to use, then click the Send to Code Dx button to send the results.
520
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
You will receive a message indicating whether or not the action was successful.
The second method to send the results is to use the context menu in the Issues panel of the Target view.
To do this, open the Target view and select your target or targets from the Site map.
Select the issues that you want to analyze and right click in the Issues panel. Click the Send to Code Dx
button at the bottom of the context menu.
521
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
A menu will pop up and will ask you to select the Software Risk Manager project. Note that this option is
independent of the project and target settings from the Software Risk Manager view.
As with the previous method, you will receive a message indicating whether or not the action was
successful.
OWASP ZAP
The Software Risk Manager OWASP ZAP plugin provides a way to upload OWASP ZAP alerts to your
Software Risk Manager server from within OWASP ZAP.
A Software Risk Manager project and an API key are required. The API key must have the create role for
the project.
This section of the Plugins Guide explains how to install and use the OWASP ZAP plugin. For more
information, you may visit our GitHub Repository. This plugin is open source and we welcome community
involvement.
522
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Installation
The Software Risk Manager OWASP ZAP extension is available for installation through the OWASP ZAP
Marketplace.
523
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
The OWASP ZAP plugin can generate a compatible XML file which can be uploaded manually, or it can
upload a report directly to Software Risk Manager.
To upload a report to Software Risk Manager, select the Code Dx: Upload Report option from the Report
menu.
You will be prompted for the Server URL, API Key and Project. Your settings will be remembered between
sessions and are stored in the codedx.properties file located in the OWASP ZAP folder in your user
directory.
After entering the Server URL and API Key, click the Refresh button to populate the Project dropdown.
524
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
If you receive a warning regarding an invalid certificate, you will be prompted to Reject, Accept
Temporarily, or Accept Permanently. Accepting temporarily will remember the exception until the session
ends. Accepting permanently will create a .usertrust directory containing the truststore information. On
Windows this will be in your appdata directory, on Mac it will be in the Application Support folder, and on
Linux it will be in the home directory.
You will receive a message indicating whether or not the action was successful.
You can generate an XML file for use with Software Risk Manager by selecting the Code Dx: Generate
XML Report option from the Report menu.
525
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
API
The plugin also provides an API to use its functions programmatically. More information on how to use the
ZAP API can be found on the ZAP GitHub Wiki.
Note that as a security measure, ZAP will not include messages with Exceptions by default. If you want to
enable messages, you can check Report error details via API in Tools -> Options -> API.
Actions
uploadReport
Uploads a report to Software Risk Manager. Note that uploading an empty report with no alerts will cause
an Exception to be thrown as Software Risk Manager won't be able to read it and will return a non-200
response.
Parameters
Returns
OK if the report is uploaded successfully.
generateAndUpload
Generates a Software Risk Manager report, saves it to a temporary file, uploads to Software Risk
Manager, then deletes the file.
526
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Parameters
Returns
OK if the report is uploaded successfully.
EMPTY if the generated report is empty. The report will not be uploaded to Software Risk Manager.
Views
generateReport
Generates an XML report with request and response data.
Returns
An XML report String.
Splunk
The Software Risk Manager Splunk add-on integrates the Splunk data analysis/monitoring/visualization
platform with your Software Risk Manager server. It allows you to push Software Risk Manager findings to
your Splunk server as Splunk events.
An API key and at least one Software Risk Manager project are required. The API key must have the read
role for each project it needs to interact with.
This section of the Plugins Guide explains how to install and use the Splunk add-on. For more information
you may visit Splunkbase.
Installation
Under Apps in the Splunk home screen, click Find More Apps.
527
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Configuration
Under Apps in the Splunk home screen, click Code Dx to open the Software Risk Manager add-on.
528
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Go to Configuration and click Add-on Settings. Then input the URL of your Software Risk Manager server.
Keep in mind that your server's URL may or may not have /codedx at the end.
Input your API key.
Click Save.
529
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Click the Security tab and click the View certificate button to bring up the certificate details popup.
Go to the Details tab in the Certificate popup and click the Copy to File... button.
530
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Use the Base-64 encoded X.509 (.CER) format, then choose a name and location for the file.
531
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
When you click the Finish button, it should say "the export was successful."
532
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Notes:
• Interval determines how often your data input will run (every x seconds)
• If a run's start-to-finish duration exceeds the time specified by the Interval field (for example, if
the Interval is set to 60 and a particular run takes more than 60 seconds to finish), the next run
will wait for that previous run and start as soon as it finishes
• Project Specifier can be a project ID or a special string representation of a set of projects:
• To represent a single project, use that project's ID number, e.g. 12
• To represent all projects, use all
• To represent an arbitrary set of projects, join the IDs of each project with an underscore, e.g.
12_42_123_124
• To include 'descendant' projects, add a d before the IDs of the main projects, e.g. d12 or
d12_42_123_124 (note that there is only one d needed; it applies to each of the specified projects)
533
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
• Detection Method and Severity will filter the data by detection method and severity respectively
• These are both multi-value fields, so if you like you can specify multiple detection methods and/or
severities to filter by
To manage a specific input, click on its Action button, in the rightmost, Actions, column.
source="csv_report" - A simple search to start off with that gets results from all inputs (all inputs
534
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
By default, the host, source, and sourcetype fields are included in Selected Fields (on the left sidebar
after running a search). You can change which fields are selected by clicking on All Fields (also at top of
left sidebar) and selecting/deselecting fields.
GitHub Action
The Software Risk Manager GitHub Action enables an Action workflow to upload files and initiate a scan
with your Software Risk Manager server.
A Software Risk Manager project and an API key or PAT are required. It must have the create role for the
project.
The Action can be used on any Runner machine type. The machine should have access to your Software
Risk Manager server. If Software Risk Manager is inaccessible to public traffic, we recommend using a
535
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Overview
The Black Duck Bridge CLI Command Line Interface (Black Duck Bridge CLI) allows you to run scans and
receive results from the command line, either by scripting or running the commands manually. Black Duck
Bridge CLI invokes adapters that handle Coverity and Black Duck scanning, along with abstracting the
various extensions and variables for them, so that usually no manual configuration is required.
For more information on Black Duck Bridge CLI and how to use the command line interface, see Using
Bridge CLI with Software Risk Manager.
Configuring Coverity Thin Client for use with Black Duck Bridge CLI and SRM
When you use Black Duck Bridge CLI to start a Coverity static scan, Black Duck Bridge CLI calls the
Coverity Thin Client to manage code capture. Black Duck Bridge CLI uploads the resulting data and
artifacts to SRM.
In some cases a configuration file, usually named coverity.yaml, helps Coverity Thin Client by
providing capture settings.
When to use a Configuration file
A scan is likely to succeed without any intervention for uncompiled languages like Python, JavaScript, and
PHP, because Coverity Thin Client can automatically detect these languages and configure the scan.
Some scans require a configuration file to include project settings or optimize Coverity for best results.
Use a configuration file in the following situations:
• When scanning a compiled language, such as C/C++, C#, Java, and Kotlin, use the configuration file to
provide your build and clean commands.
• When scans for a project have failed or not returned useful results.
Note: Build environment components must be installed and accessible when integrating with compiled
languages, as illustrated in the "Build commands and dependencies for various build systems" section
further down in this guide. If you plan to run build capture, make sure the build tools are installed where
the capture will run.
Things you can specify with the Coverity Thin Client configuration file:
536
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
capture:
build:
clean-command: mvn clean
build-command: mvn install
• This example shows the complete contents of a coverity.yaml file that you can use to test a Maven
project.
• Note that white space matters in YAML files. The three levels of indentation indicate that the build
property is nested under the capture property and build-command and clean command are nested
under build.
capture:
build:
build-command: javac HelloWorld.java
C# with msbuild
capture:
build:
clean-command: dotnet msbuild /t:Restore;Clean OWASPTop10.SqlInjectio
n.Web.csproj
build-command: dotnet msbuild /t:Restore;Build OWASPTop10.SqlInjectio
n.Web.csproj
C# with dotnet
537
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
capture:
build:
clean-command: dotnet clean Foo.sln
build-command: dotnet build Foo.sln
capture:
build:
clean-command: clean.sh
build-command: build-it.sh
Coverity Thin Client will only accept one build command and one clean command in the config file, but you
can point to a script containing commands if you need more.
Configuration properties
The tables in this section describe each of the keys that can be used in the coverity.yaml file, starting
at the top level with capture.
Capture settings
The following table describes the capture configuration; subsections describe the fields that make up the
Capture type. All the Keys in the first column of this table can be nested directly under the capture key in
the coverity.yaml file. (For example, build can be seen in the first row of the table and is used in the
example immediately above.)
538
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Build settings
The following keys can be defined for compiled languages only. All the keys in this table can be nested
directly under the build key in the configuration file.
For example:
capture:
build:
clean-command: dotnet msbuild /t:Restore;Clean OWASPTop10.SqlInjectio
n.Web.csproj
build-command: dotnet msbuild /t:Restore;Build
aspnet-compiler: true
Language configuration
Use the following keys to specify which languages to include or exclude from capture. You may not specify
both fields.
Language strings may be the following:
• apex
• c-family (This family includes C, C++, Objective C, and Objective C++)
• csharp
• go
• java (Includes JSP and android config files)
539
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
• CUDA
• Fortran
• Scala
Keys in this table can be nested under the languages key, which appears in the first table above and is
nested under the capture key.
Specifies the languages for which the source code should be excluded in
the capture.
exclude Array of String This key is mutually exclusive with the include key.
Default: No languages are excluded.
For example:
capture:
languages:
exclude:
- python
540
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Minimal Set of
Build
How to Detect Machine Build and Clean commands
System
Dependencies
Look for the presence Maven build tool build-command: mvn -DskipTests
Maven of "pom.xml" files in -DskipITs install
the project directory Java compiler
clean-command: mvn clean
Java compiler
build-command: gradlew --no-daemon -x
With a "gradlew" file (Gradle will be test build testClasses
(Linux/Mac) downloaded
clean-command: gradlew clean
automatically)
Gradle
Java compiler
build-command: gradlew.bat --no-daemon
With a "gradlew.bat (Gradle will be -x test build testClasses
file (Windows) downloaded
clean-command: gradlew.bat clean
automatically)
541
Software Risk Manager Documentation (v2025.3.5) Software Risk Manager Plugins Guide
Minimal Set of
Build
How to Detect Machine Build and Clean commands
System
Dependencies
GCC configuration
The GNU Compiler Collection (GCC) requires its own coverity.yaml configuration settings. To use
GCC, add lines to:
cov-configure:
- [ --template, --compiler, arm-linux-gnueabi-gcc, --comptype, gcc ]
- [ --template, --compiler, arm-linux-gnueabi-g+, --comptype, g+ ]
Below is an example coverity.yaml settings block for GCC, telling it to run a make clean then run the
make command in parallel with at least 10 job slots (make -j 10).
Note: Pay special attention to GCC binary naming conventions if using more than one language and/or
CPU target.
542
Software Risk Manager Documentation (v2025.3.5)
4
Software Risk Manager API Guide
Software Risk Manager API Guide
543
©2025 Black Duck Software, Inc.
April 28, 2025