Using SCA Resolver in Checkmarx One
Checkmarx SCA Resolver
Checkmarx SCA Resolver is an on-prem utility that enables you to resolve and extract dependencies and fingerprints from your source code and send them to the Checkmarx One SCA scanner for risk analysis. This enables you to run a comprehensive SCA scan without the need to send your actual source code to the cloud. It also enables you to scan private (local) dependencies that aren’t accessible to the Checkmarx SCA cloud platform. For Checkmarx One users, Resolver is used in Offline mode for dependency resolution and the results file is then sent for analysis via your Checkmarx One account.
In order to use the SCA Resolver with the Checkmarx One CLI, you need to download the Checkmarx SCA Resolver separately in a location that the Checkmarx One CLI can access. Download links are available below.
To use the SCA Resolver, you need to add the --sca-resolver flag to your command line with an argument with the path to your local installation of the Resolver executable. For example:
./cx scan create --project-name <Project Name> -s <path> --branch <branch name> --sca-resolver <path-to-resolver> --sca-resolver-params <additional-resolver-arguments>
Sample command:
user@laptop:/AST$ ./cx scan create --project-name demo --scan-types sast,sca -s . --sca-resolver /sca/scaResolver --sca-resolver-params "-q -e my_file" --async
Warning
When running a CLI scan that uses SCA Resolver, the source code must be in a local folder, not in a zip archive or a code repository.
The Delta Scan feature will run by default on the CxOne CLI (since version 2.3.44) scans using SCAResolver (since version 2.13.3). To disable this feature, use the --sca-resolver-params flag with the argument --disable-delta-scan. For more information on this feature, see Delta Scans.
To add additional arguments to Checkmarx SCA Resolver, use the flag --sca-resolver-params with any additional arguments that you need. If necessary to use spaces and/or quotes, wrap the arguments in double quotes and use single quotes inside the value. For a complete list of SCA Resolver configuration arguments, see Checkmarx SCA Resolver Configuration Arguments.
Notice
Only arguments that can be used in Offline mode can be applied to scans run via the Checkmarx One CLI Tool and plugins.
For more information about using SCA Resolver in Checkmarx One CI/CD integrations, see Using SCA Resolver in Checkmarx One CI/CD Integrations.
Checkmarx SCA Resolver Download and Installation
Caution
Versions of SCA Resolver prior to 2.5.15 are no longer supported. Older versions will no longer be able to run Container scans. Download links for newer versions are available here.
We recommend always keeping up to date with the latest version of SCA Resolver, in order to benefit from the latest features as well as ongoing performance improvements and bug fixes.
Download Latest Version of Resolver
Use the relevant link to download the latest version of SCA Resolver.
Notice
The latest version of SCA Resolver is currently 2.16.2.
Use the relevant link to download the checksum for the latest version of Resolver.
Notice
Links to download older versions of Resolver are available at Checkmarx SCA Resolver Changelog.
Installation
Notice
The following procedure is relevant when you download Resolver as a zip archive. When you run the MacOS Installer you just need to follow the prompts to run the installer. The installer saves the Configuration.yml file to /Library/ScaResolver/{version}/Configuration.yml.
To download and Install Checkmarx SCA Resolver:
Use the appropriate link (shown above) to download the correct version of Checkmarx SCA Resolver for your OS.
Extract the compressed archive file.
Install all required resolution utilities, see Installing Supported Package Managers for Resolver
Installation Notes:
On Ubuntu, run the command as root before running, or if you encounter any startup issues.
apt update apt install ca-certificates libgssapi-krb5-2
On Alpine Linux, run the command as root before running, or if you encounter any startup issues.
apk add libstdc++ apk add glib apk add krb5 pcre apk add bash
Security Considerations for SCA and OSA Scanning
OSA and SCA Resolver analyze a project's third-party dependencies by invoking the native package manager associated with the target language (for example, pip for Python, npm for Node.js, Maven for Java). As part of standard dependency resolution, these package managers may retrieve packages from any repository or URL referenced in a project's manifest files, and some package formats (such as Python source distributions) execute installer scripts during resolution. This is standard behavior of the underlying package managers and is not unique to OSA or SCA Resolver.
This guidance applies to OSA and to SCA Resolver, which run dependency resolution on infrastructure that you control. It does not apply to cloud-based SCA scanning, where dependency resolution occurs within Checkmarx-managed infrastructure.
Because OSA and SCA Resolver resolve dependencies using the same mechanisms a developer's local environment would use, organizations should apply the same security controls to the infrastructure that runs them that they would apply to any environment that installs third-party code. Checkmarx recommends the following:
Run dependency resolution in an isolated environment. Where possible, perform dependency resolution within an isolated CI/CD pipeline job or dedicated execution environment, rather than directly on the CxSAST Manager. Apply appropriate security controls to the environment performing dependency resolution, consistent with the organization's existing software build and dependency-management practices.
Note
For OSA: When OSA dependency resolution is initiated through the CxSAST Web Portal or REST API, package managers may run on the CxSAST Manager host. In this case, some of the controls below may not be practical. These controls are marked "where possible" or "where supported".
Restrict dependency sources. Where possible, configure your package manager tooling and network policies so OSA and SCA Resolver can only resolve dependencies from approved, vendor-maintained registries (e.g., PyPI, npmjs.com, Maven Central) or an internal artifact repository/proxy (e.g., Artifactory, Nexus). Avoid allowing resolution from arbitrary external URLs.
Guard against dependency confusion and typosquatting. When internal or private package names overlap with names available on public registries, ensure package manager configuration enforces correct namespace/scope resolution and prioritizes the intended internal source. Review manifests for unfamiliar package names that closely resemble known internal or popular public packages.
Verify package integrity. Where supported, enforce lockfiles (e.g., package-lock.json, Pipfile.lock, requirements.txt with hashes, Maven checksums) and checksum/signature verification, so that dependency resolution fails closed on tampered or unexpected package content rather than silently installing it.
Isolate the scanning environment. Where possible, run OSA and SCA Resolver scans (particularly for on-prem/self-hosted deployments) in a segmented network zone with no access to internal systems, production credentials, or sensitive data stores. Ephemeral, single-use scan environments further reduce exposure.
Limit credentials available to the scan environment. Where possible, scan hosts should hold only the minimum registry authentication needed to reach approved sources (e.g., a scoped Artifactory/Nexus token) and nothing else (no CI/CD secrets, cloud metadata access, or credentials unrelated to dependency resolution) so a malicious install script has nothing valuable to exfiltrate.
Apply egress controls and monitoring. Where possible, restrict and log outbound network traffic from scan hosts. Alert on connections to unexpected or non-registry destinations, which may indicate a malicious dependency attempting to phone home or execute code.
Apply resource limits to scan execution. Where possible, constrain CPU, memory, disk, and execution time for dependency resolution and install-script execution to reduce exposure to zip bombs, decompression bombs, or scripts designed to exhaust host resources.
Limit who can submit projects for scanning. Only trusted, authenticated users should be able to upload source or trigger OSA or SCA Resolver scans, since a malicious or compromised manifest file (e.g., requirements.txt, package.json, pom.xml) is the primary vector for abuse.
Review manifests before scanning untrusted code. If scanning third-party or externally sourced repositories, review dependency manifests for unfamiliar or suspicious package sources before submitting them for scanning.
Consider hardened package manager configurations. Where supported by your package manager ecosystem, disable or restrict install-time script execution (e.g., build hooks, setup.py) for dependency resolution steps that don't require it.
These controls apply broadly across the package ecosystems that OSA and SCA Resolver support and are recommended as standard practice for any dependency-resolution tooling, not specific to a single language or package manager.