Contrast CLI commands
The following is a list of commands available to both basic and advanced users of Contrast CLI.
Usage:contrast [command] [options]
Authentication/connectivity
If you already have a Contrast account, run the following auth command to store your credentials locally.
Usage:
contrast authcontrast auth --api-key <your API key> --authorization <your authorization header> --host <your host domain> --organization-id <your organization ID>
You can then run an analysis with the commands.
Displays stored credentials.
Usage:
contrast configExample:
contrastuser@userc-C02GD0LUMD6TTY ~ % contrast config { version: '1.0.24', host: 'https://app.contrastsecurity.com', apiKey: 'wwEHMnYEIAujE03fFGH', organizationId: '0fde1b36-6986-4a14-b16d-6258aa913e5bceerfj', authorization: 'Z2l1bGlhbmEubWFyaWFuaUBjb250cmFzdHNlY3VyaXR5LmNvbTpDUktMUTE3T1czMDU2NjlLOPDS', numOfRuns: 0 }Options:
-c,--clearRemoves stored credentials.
Displays Contrast CLI version.
Usage:
contrast versionExample:
contrastuser@usercsa-C02GD0LUMD6TTY ~ % contrast version 1.0.24
Main functions
Searches for a dependency configuration file in the working directory to perform a security audit of dependencies and returns the results.
Usage:
contrast audit [option]Example:
contrastuser@usercsa-C02GD0LUMD6TTY ~ % contrast audit Searching for package manager files from /Users/contrastuser/Documents/ Contrast SCA audit started... Contrast audit complete Found 4 vulnerable libraries with 4 CVEs CONTRAST-001 - [CRITICAL] minimist-1.2.5 introduces 1 vulnerability Issue: 1 Critical [C]CVE-2021-44906 Advice: Update to version 1.2.6 CONTRAST-002 - [CRITICAL] json-schema-0.2.3 introduces 1 vulnerability Issue: 1 Critical [C]CVE-2021-3918 Advice: Update to version 0.4.0 CONTRAST-003 - [HIGH] glob-parent-5.1.1 introduces 1 vulnerability Issue: 1 High [H]CVE-2020-28469 Advice: Update to version 5.1.2 CONTRAST-003 - [HIGH] ansi-regex-0.2.1 introduces 1 vulnerability Issue: 1 High [H]CVE-2021-3807 Advice: Update to version 6.0.1Options:
--failFail a build based on the severity of CVEs found. Use with the --severity flag. For example, contrast audit --fail --severity high . Returns all failures if no severity level is specified. If a failure is detected the CLI will exit with code 2.
--fileSpecify a directory or the file where dependencies are declared. (By default, Contrast CLI will search for project files in the current directory.) If multiple project files are found in the directory, you will be prompted to confirm the file to audit.
Alias:
-f--helpDisplays usage information for all
auditcommand options.--ignore-devExcludes developer dependencies from the results. All dependencies are included by default.
Alias:
-i--legacyCreates an application in Contrast (a legacy workflow). It displays a dependency tree for your piece of code and utilizes metadata. Note that this is only available for Contrast CLI V2.0 and later.
--nameSet a custom project name. If the name is already in use, it will replace the results for that project. Avoid special characters.
--resource-groupSpecify a resource group when generating SCA projects. Resource groups specify the applications, projects, and organization settings that users can access, based on their assigned roles. See Resouce groups for more information.
--saveGenerate and save an SBOM (Software Bill of Materials). Valid options are: --save cyclonedx and --save spdx (CycloneDX is the default format.).
Alias:
-s--severitySpecify the minimum severity of CVE to fail a build. Use with the --fail flag. For example, contrast audit --fail --severity high. Severity levels are critical, high, medium, low, or note.
--trackBy default, results are not held or stored, which would allow you to do local checks via your console. Add the
--trackflag to view your projects' SCA results under the Static view on the Libraries page in the Contrast web interface. Note that this is only available for Contrast CLI V2.0.
Advanced options:
--api-keyRequired for Enterprise users. Agent API key provided by Contrast. See agent keys to find your keys.
--application-idThe ID of the application cataloged by Contrast.
--application-nameThe name of the application cataloged by Contrast.
--app-groupsAssign your application to one or more preexisting groups when onboarding an application. Group lists should be comma separated.
--authorizationRequired for Enterprise users. Authorization header provided by Contrast.
--codeThe application code the application should use in Contrast.
--hostRequired for Enterprise users. The host name. For example, https://app.contrastsecurity.com.
--maven-settings-pathDisplays the path to the maven settings.xml file.
--metadataDefine a set of key=value pairs (that conforms to RFC 2253) for specifying user-defined metadata associated with the application.
--organization-idRequired for Enterprise users. The ID of your organization in Contrast. See agent keys to find the ID.
--tagsApply labels to an application. Labels must be formatted as a comma-delimited list. For example, label1,label2,label3.
Proxy settings:
--cacertDisplays the path to the CaCert (certificate authority (CA) certificates) file.
--certDisplays the path to the Cert (certificate) file.
--cert-self-signedFor Contrast on-premises (EOP) users with a local install, will bypass the SSL certificate and recognize a self-signed certificate.
--keyDisplays the path to the Certificate Key.
--proxyAllows for connection via a proxy server. If authentication is required, provide the username and password with the protocol, host, and port. For example, "http://username:password@<host>:<port>".
To use audit in pipelines for failing builds, see the Contrast SCA Action.
Reports vulnerabilities found at run-time on a server using a Contrast agent.
Usage:
contrast assess [option]Example:
contrastuser@usercsa-C02GD0LUMD6TTY ~ % contrast assess ✔ Configuration file found at "user_path" ✔ Session created. CONTRAST-001 - [HIGH] Path Traversal from "RawQuery" QueryString Parameter on "/pathTraversal/os.Open/:source/:mode" pagePath Traversal from "RawQuery" QueryString Parameter on "/pathTraversal/os.Open/:source/:mode" page App: CLIAssessApplication Source: GET /pathTraversal/os.Open/:source/:mode?input=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd Location: /opt/homebrew/Cellar/go/1.19.1/libexec/src/os/file.go, line 316, in os.Open() Dataflow: "../../../../../../../../../../../../etc/passwd" Issue: Because there is untrusted data being used as part of the file path, it may be possible for an attacker to read sensitive data or write, update, or delete arbitrary files on the container's file system. The ability to write arbitrary files to the file system is also called Unrestricted or Arbitrary File Uploads. CONTRAST-002 - [HIGH] Path Traversal from "RawQuery" QueryString Parameter on "/pathTraversal/os.ReadFile/:source/:mode" pagePath Traversal from "RawQuery" QueryString Parameter on "/pathTraversal/os.ReadFile/:source/:mode" page App: CLIAssessApplication Source: GET /pathTraversal/os.ReadFile/:source/:mode?input=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd Location: /opt/homebrew/Cellar/go/1.19.1/libexec/src/os/file.go, line 672, in os.ReadFile() Dataflow: "../../../../../../../../../../../../etc/passwd" Issue: Because there is untrusted data being used as part of the file path, it may be possible for an attacker to read sensitive data or write, update, or delete arbitrary files on the container's file system. The ability to write arbitrary files to the file system is also called Unrestricted or Arbitrary File Uploads. CONTRAST-003 - [HIGH] Path Traversal from "input[0]" Parameter on "/pathTraversal/os.Open/:source/:mode" pagePath Traversal from "input[0]" Parameter on "/pathTraversal/os.Open/:source/:mode" page App: CLIAssessApplication Source: POST /pathTraversal/os.Open/:source/:mode input=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd Location: /opt/homebrew/Cellar/go/1.19.1/libexec/src/os/file.go, line 316, in os.Open() Dataflow: "../../../../../../../../../../../../etc/passwd" Issue: Because there is untrusted data being used as part of the file path, it may be possible for an attacker to read sensitive data or write, update, or delete arbitrary files on the container's file system. The ability to write arbitrary files to the file system is also called Unrestricted or Arbitrary File Uploads.Options:
--config-path <path>Specifies the path or directory for the
contrast_security.yamlfile that the Assess CLI and the agent share.If not specified, the default paths are:
MacOS and Linux:
/etc/contrastWindows:
%ProgramData%\Contrast\
Alias:
-c--file <filename>Specifies the path or directory for the vulnerability results file so Contrast can read it and display the results in the terminal. The file name is
contrast-assess-{Date}.jsonl., where the date is in epoch milli-seconds, For example:contrast-assess-1691520302714.jsonl.Alias:
-f--helpDisplays usage information for all
assesscommand options.--no-watch [true|false]If set to
truewhen using Assess with a Contrast agent, the CLI does not watch (or poll) Contrast for available vulnerabilities. The CLI retrieves the vulnerabilities only once for a specificbuildNumber. The default setting isfalse.Alias:
-n--output-path <path>Specifies the path or directory where you want the vulnerability results file located. The output file is in JSONL format. The file name is
contrast-assess-{Date}.jsonl., where the date is in epoch milli-seconds, For example:contrast-assess-1691520302714.jsonl.Alias:
-o--report-notes [true|false]If set to
true, the access command displays vulnerabilities with a notes severity level. The default value isfalsewhich displays higher priority vulnerabilities.Alias:
-r
Generates a SARIF file (contrast.sarif) that contains findings from Contrast Assess and Contrast SCA for a specific application ID. Once processing is complete, you'll receive a notification containing a link to download the file.
Note
You can also use the sarif API to generate the SARIF file.
Usage:
contrast sarif [option]Example:
contrast sarif --application-id 8f32952c-987c-4b9e-882c-a2b59a2fb4ee --severity high --metadata 'repo=TS,commit=commit-49-61670e50-1e9c-11ef-9109-059d9bfadadd,developer=Dev-49-61670e50-1e9c-11ef-9109-059d9bfadadd'
Options:
--application-id <id>The ID of the application cataloged by Contrast.
--severity [type]Set the severity level to filter the findings included in the SARIF output. Severity levels are critical, high, medium, low or, note.
The severity level you specify is the minimum level that the report includes. For example, if you specify
--severity high, the report includes findings with a severity of high and critical.--metadataDefine a set of key=value pairs (that conforms to RFC 2253) for specifying user-defined metadata associated with the application.
--tool-typeFilters the type of findings included in the report. The valid types are SCA and ASSESS. For example,
--tool-type ASSESSincludes Assess findings only.If you don't specify this option, the report includes findings for both SCA and Assess.
Advanced options:
--api-keyRequired for Enterprise users. Agent API key provided by Contrast. See agent keys to find your keys.
--authorizationRequired for Enterprise users. Authorization header provided by Contrast.
--codeThe application code the application should use in Contrast.
--hostRequired for Enterprise users. The host name. For example, https://app.contrastsecurity.com.
--organization-idRequired for Enterprise users. The ID of your organization in Contrast. See agent keys to find the ID.
Proxy settings:
--cacertDisplays the path to the CaCert (certificate authority (CA) certificates) file.
--certDisplays the path to the Cert (certificate) file.
--cert-self-signedFor Contrast on-premises (EOP) users with a local install, will bypass the SSL certificate and recognize a self-signed certificate.
--keyDisplays the path to the Certificate Key.
--proxyAllows for connection via a proxy server. If authentication is required, provide the username and password with the protocol, host, and port. For example, "http://username:password@<host>:<port>".
Performs a security SAST scan.
Usage:
contrast scan [option]Example:
contrastuser@usercsa-C02GD0LUMD6TTY ~ % contrast scan Searching for files to scan from from /Users/contrast/Documents/ Searched 3 directory levels & found... - spring-petclinic-1.5.1.jar - webgoat-server-8.2.2.jar - webgoat.jar Java Scan requires a .war or.jar file. Javascript Scan requires a .js or .zip file. To start a Scan enter "contrast scan -f <path-to-file>" contrastuser@usercsa-C02GD0LUMD6TTY ~ % contrast scan -f webgoat.jar Found existing project... Uploading... Uploaded file successfully. Contrast Scan started. Here are your top priorities to fix CRITICAL sql-injection (2) 1. org/owasp/webgoat/plugin/challenge6/Assigment6.java @43 2. org/owasp/webgoat/plugin/challenge5/challenge6/Assigment5.java @38--branchSpecifies a branch in a repository to be scanned. When specified, scan results are aggregated against results for the current branch and not the main project.
Alias: -
b--failFail a build based on the severity of the vulnerability found. Use with the --severity flag. For example, contrast scan --fail --severity high . Returns all failures if no severity level is specified. If a failure is detected the CLI will exit with code 2.
--filePath of the file you want to scan. Contrast searches for a .jar, .war, .js or .zip file in the working directory if a file is not specified.
Alias:
-f--helpDisplays usage information for all
scancommand options.--hostRequired for Enterprise users. The host name. For example, https://app.contrastsecurity.com.
--languageValid values are JAVA and JAVASCRIPT.
Important
This option is not valid if you are using the multi-language source code scan engine.
Alias:
-l--memoryMemory override for the multi-language source code scan engine. The default memory setting is 2 GB.
--nameContrast project name. If not specified, Contrast uses contrast.settings to identify the project or creates a project.
Alias:
-n-rContrast resource group name. This option is required for host-based customers if role-based access control is turned on.
--saveDownload the results to a Static Analysis Results Interchange Format (SARIF) file. The file is downloaded to the current working directory with a default name of results.sarif. You can view the file with any text editor.
Alias:
-s--severityA Contrast vulnerability severity level that returns a build failure status code that you can use to gate builds in pipelines.\
Valid values are:
critical,high,medium,low, andnote.The specified value is the minimum level of severity that returns a build failure status code. For example, if you specify
--severity high, a finding of that severity or higher returns a build failure status code.Use with the --fail flag. For example, contrast scan --fail --severity high.
--timeoutTime in seconds to wait for the scan to complete. Default value is 300 seconds.
Alias:
-t
Options:
Advanced options:
--api-keyRequired for Enterprise users. Agent API key provided by Contrast. See agent keys to find your keys
--authorizationRequired for Enterprise users. Authorization header provided by Contrast.
--ffFire and forget. Do not wait for the result of the scan.
--hostRequired for Enterprise users. The host name. For example, https://app.contrastsecurity.com.
--labelAdds a label to the scan. Defaults to Started by CLI tool at [current date].
--organization-idRequired for Enterprise users. The ID of your organization in Contrast. See agent keys to find the ID.
--project-idThe ID associated with a scan project. To find the ID, select a scan project in Contrast and locate the last number in the URL.
Proxy settings:
--cacertDisplays the path to the CaCert (certificate authority (CA) certificates) file.
--certDisplays the path to the Cert (certificate) file.
--cert-self-signedFor Contrast on-premises (EOP) users with a local install, will bypass the SSL certificate and recognize a self-signed certificate.
--keyDisplays the path to the Certificate Key.
--proxyAllows for connection via a proxy server. If authentication is required, provide the username and password with the protocol, host, and port. For example, "http://username:password@<host>:<port>".
Name of AWS lambda function to scan.
Usage:
contrast lambda --function-name <function> [options]Alias:
-fOptions:
--endpoint-urlAWS Endpoint override. Similar to AWS CLI.
Alias:
-e-
-helpDisplays usage information for all
lambdacommand options.--regionRegion override. Defaults to AWS_DEFAULT_REGION. Similar to AWS CLI.
Alias:
-r--profileAWS configuration profile override. Similar to AWS CLI.
Alias:
-p--jsonReturn response in JSON (versus default human-readable format).
Alias:
-j-–verboseReturns extended information to the terminal.
Alias:
-v--list-functionsLists all available lambda functions to scan.
-–helpDisplays usage guide.
Alias:
-h
Proxy settings:
--cacertDisplays the path to the CaCert (certificate authority (CA) certificates) file.
--certDisplays the path to the Cert (certificate) file.
--cert-self-signedFor Contrast on-premises (EOP) users with a local install, will bypass the SSL certificate and recognize a self-signed certificate.
--keyDisplays the path to the Certificate Key.
--proxyAllows for connection via a proxy server. If authentication is required, provide the username and password with the protocol, host, and port. For example, "http://username:password@<host>:<port>".
Help and learn
Displays usage guide. To list detailed help for any CLI command, add the -h or --help flag to the command.
Usage:
contrast helpExample:
contrastuser@usercsa-C02GD0LUMD6TTY ~ % contrast help Contrast CLI @ v1.0.24 Contrast Scan CLI Pre-requisites Java, Javascript and .NET supported To scan a Java project you will need a .jar or .war file for analysis To scan a Javascript project you will need a single .js or a .zip of multiple .js files To scan a .NET c# webforms project you will need a .exe or a .zip file for analysis The file argument is optional. If no file is given, Contrast will search for a .jar, .war, .exe or .zip file in the working directory. Submitted files are encrypted during upload and deleted in 24 hours. Scan Options -l, --language string (optional): Valid values are JAVA, JAVASCRIPT and DOTNET --label string (optional): adds a label to the scan - defaults to 'Started by CLI tool at current date' -n, --name string (optional): Contrast project name. If not specified, Contrast uses contrast.settings to identify the project or creates a project. -f, --file string (optional): Path of the file you want to scan. If no file is specified, Contrast searches for a .jar, .war, .exe or .zip file in the working directory. -t, --timeout number (optional): Time in seconds to wait for scan to complete. Default value is 300 seconds. --fail (optional): Use with contrast scan or contrast audit. Detects failures based on the severity level specified with the --severity command. For example, "contrast scan --fail --severity high". Returns all failures if no severity level is specified. --severity type (optional): Use with "contrast scan --fail --severity high" or "contrast audit --fail --severity high". Set the severity level to detect vulnerabilities or dependencies. Severity levels are critical, high, medium, low or note. -s, --save string (optional): Saves the Scan Results SARIF to file. Advanced -o, --organization-id string (required for Contrast Enterprise): The ID of your organization as provided by Contrast UI --api-key string (required for Contrast Enterprise): An agent API key as provided by Contrast UI --authorization string (required for Contrast Enterprise): An authorization header as provided by Contrast UI --host string (required for Contrast Enterprise): host name e.g. https://app.contrastsecurity.com --proxy string (optional): Allows for connection via a proxy server. If authentication is required please provide the username and password with the protocol, host and port. For instance: "https://username:password@<host>:<port>". --key string (optional): Path to the Certificate Key --cacert string (optional): Path to the CaCert file --cert string (optional): Path to the Cert file --cert-self-signed (optional):For EOP users with a local Teamserver install, this will bypass the SSL certificate and recognise a self signed certificate. -p, --project-id string (optional): The ID associated with a scan project. Replace <ProjectID> with the ID for the scan project. To find the ID, select a scan project in Contrast and locate the last number in the URL. -l, --language string (optional): Valid values are JAVA, JAVASCRIPT and DOTNET --ff (optional): Fire and forget. Do not wait for the result of the scan. --label string (optional):adds a label to the scan - defaults to 'Started by CLI tool at current date' Need More Help? NEW users Check out: https://support.contrastsecurity.com Learn more at: https://www.contrastsecurity.com/developer Join the discussion: https://www.contrastsecurity.com/developer/community Existing Contrast Licensed user? Read our docs: https://docs.contrastsecurity.com/en/run-contrast-cli.html Want to UP your game? type 'contrast learn' 💰 Advance your security knowledge and become an All-star coder ⭐ with Contrast Secure Code Learning Hub. 😺
Alias:
-h
Launch Contrast’s Secure Code Learning Hub.
Usage:
contrast learnExample:
contrastuser@usercsa-C02GD0LUMD6TTY ~ % contrast learn Opening Contrast’s Secure Code Learning Hub... If the page does not open you can open it directly via https://www.contrastsecurity.com/developer/learn