SCA Scanner
Overview
Software developers are relying more and more on open source components to expedite the software development process. Projects often use numerous open source libraries, each of which calls on numerous direct and transitive dependencies. No matter how secure your proprietary code is, these open source dependencies can expose you to a broad range of security and legal risks.
The SCA scanner is Checkmarx's proprietary Software Composition Analysis (SCA) solution for detecting risks associated with your open source dependencies. Checkmarx SCA enables you to easily identify, prioritize, and remediate the risks posed by your open source packages. These risks may include security vulnerabilities, license requirements and outdated open source packages. SCA addresses all of these issues, providing highly accurate, relevant, and actionable insights.
Understanding the Scan Process
The following are the main processes that Checkmarx One SCA scans run to identify the 3rd party packages in your project:
File Analysis – SCA identifies all files in your project that may be part of a 3rd party package, and analyzes them in order to determine which packages are being used. This is done by comparing the hashes and metadata of the relevant files (e.g., .jar files for Java, .js files for JS) in the scanned project with the hashes and metadata of packages that are cataloged in our database.
Notice
For non-scripting files (e.g., .dll, .jar .zip .egg) there is a one to one relationship between files and packages. For scripting files (e.g., .js, .php, .c .cpp) we identify the package that best matches the group of related files in your project.
As part of this process, compressed files of supported types (.jar, .war, .ear, .zip) are extracted so that the files can be analyzed. This is applied recursively up to four levels of depth.
Dependency Resolution - SCA uses package managers to resolve the dependencies against customer-defined or public repositories and extract the dependency trees.
Evidence Analysis - SCA takes the output of the previous steps and uses it to identify the specific risks that affect the packages in your project. This is done by checking the packages that were identified against our extensive database of vulnerabilities as well as checking for legal and suspected malware risks.
Key Features
Exploitable Path
Prioritizing remediation of the many open source vulnerabilities identified by Checkmarx SCA can be a challenging task. It isn't always apparent whether the vulnerable packages are actually being called by your project, or whether the vulnerable methods inside them are actually being used by your code. The key question is: is there a path from your project code into the vulnerable package code, through which the vulnerability could be exploited? If not, remediation is a much lower priority
This is where Exploitable Path is essential. Checkmarx SCA analyzes your actual project source code, in parallel with your manifest file, to determine whether the vulnerable open source packages are called from your proprietary code and whether the vulnerable methods are actually used. This lets you focus remediation effort on vulnerabilities that are genuinely exploitable, rather than on every CVE reported in your dependency tree.
Exploitable Path also identifies which lines in your project code actually reach the vulnerable method in the vulnerable package, and shows you the full path to the vulnerability.
Notice
Because Exploitable Path analyzes your entire codebase, it also shows the actual usage of packages in your project. You may find that some packages listed in your manifest file are no longer used, letting you streamline your manifest file and reduce your dependency footprint.
How Exploitable Path Works
Exploitable Path combines what Checkmarx already knows about a vulnerability with what it finds in your code:
For every supported CVE, the Checkmarx AppSec research team identifies the exact function, or functions, that must be called for the vulnerability to be triggered, and documents its signature. In parallel, Checkmarx indexes the public methods of the open source package itself.
When you run a Checkmarx One SCA scan, that same engine analyzes your source code to identify what it imports and calls. It confirms the package is genuinely used, resolves your calls to concrete methods inside it, and searches for a code path from your code to the documented vulnerable method.
If that path exists, the finding is flagged as an Exploitable Path: a real, traceable route from your application code to the vulnerable behavior.
Key Benefits
Verify whether the vulnerable methods in open source packages are actually being called by your proprietary code.
Prioritize remediation of exploitable vulnerabilities.
See the full path from your project code to the vulnerable method.
Runs natively as part of your regular Checkmarx One SCA scan: no separate scan, no additional engine, and no extra configuration required.
Enabling Exploitable Path
Exploitable Path only runs on Projects for which it has been activated. You can activate it during Project Creation or by editing Project Settings. You can also set it as your account's default for all new Projects, via Account Settings.
Notice
Activating the feature globally does not retroactively activate Exploitable Path for Projects that were created before the activation.
Once activated for a Project, Exploitable Path runs automatically as part of every Checkmarx One SCA scan of that Project, whether triggered from the web portal, a CI/CD integration, or the CLI. No separate scan or additional setup is required.
Viewing the Exploitable Path Results
On the SCA Results > Packages tab, next to each package in the list, the Usage column shows the package's usage status.
Opening a package's details takes you to the Package Usage section, where you can see how many times, and in which files and lines, the package is called by your project code.
On the SCA Results > Risks tab, the Reachability column shows each vulnerability's Exploitable Path status.
Opening a vulnerability's details shows the full Exploitable Path: the visual call chain from your code, through the open source package, to the vulnerable method. You can clearly see which lines in your project code reach the vulnerable method, giving you a clear basis for remediation.
The following tables list the different values and their meanings.
Status | What it means |
|---|---|
Used | The package is used by your source code. |
Potentially | The package is a transitive dependency of a direct package that your source code uses. |
Unused | No usage of this package was found in your source code. |
Package to be analayzed soon | The package is newly seen and has been added to the analysis queue. Usage information will be available in an upcoming scan. |
Package source code not available | The package's source code isn't publicly available, so usage can't be determined. |
Failed to analyse source code | An error occurred while analyzing the package or your source code. |
Unsupported language | Package Usage analysis isn't available yet for this programming language. |
Status | What it means |
|---|---|
Exp. Path Found | A code path was found from your source code to the vulnerable method in the package. The vulnerability is reachable and can potentially be triggered. |
Not Detected | Exploitable Path was evaluated for this finding, but no code path to the vulnerable method was found in your project. |
Pending Analysis | The package is newly seen and has been added to the analysis queue. This finding will be evaluated for Exploitable Path in an upcoming scan. |
Not Supported | Exploitable Path can't be evaluated for this finding. This covers a few underlying cases: the package's source code isn't available, the package is only used as a transitive dependency, or the language or package manager isn't yet supported for Exploitable Path. |
Calculation Failed | An error occurred while analyzing the source code for this finding. |
Note
Package Usage and Exploitable Path are evaluated independently. A package can show as Used while its Exploitable Path status is Not Detected, if your code calls the package but never reaches the specific vulnerable method.
Current Support
Supported languages: Python, Java, JavaScript and C#.
Scope: Exploitable Path evaluates packages that your code calls directly, where the vulnerable method lives in that same package. This direct-call analysis gives you a fast, high-confidence answer for the dependencies your code actually touches.
Package Coverage: Checkmarx continuously grows its database of analyzed open source packages. If a package in your scan hasn't been analyzed yet, scanning a project that uses it moves that package to the front of the queue, and it's typically analyzed within the next 48 hours. From then on, it's included in Exploitable Path evaluation for every future scan.
SCA Global Inventory
The SCA Global Inventory and Risks page displays a comprehensive list of all packages identified in your account, along with their associated risks and license information. This includes details such as vulnerabilities, outdated versions, and policy violations. By aggregating information across all Projects, the Global Inventory helps you prioritize remediation by showing which risks and vulnerable packages impact multiple Projects, making it easier to coordinate efforts across development teams.
With the addition of bulk triage actions in the Global Inventory, managing these risks at scale has become even more efficient. You can now select multiple items and triage them all at once across the Packages, Vulnerabilities and Malware, and Licenses tabs. For example, if you determine that a particular package is not a concern, you can search for all its instances in the Packages tab and mark them all as Muted with a single action. This capability streamlines large-scale triage workflows and saves time by enabling consistent decisions to be applied across the entire tenant.
For instructions on how to view the SCA Global Inventory, see Global Inventory.
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 platform for risk analysis. The Resolver uses command line interface (CLI) commands to configure and scan your Projects.
Checkmarx SCA Resolver 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 One platform.
For Checkmarx One accounts, Resolver is run via the Checkmarx One CLI, by adding the relevant flags to the scan create command. Resolver runs in Offline mode and the results are automatically sent to the Checkmarx One cloud for analysis.
After the File Analysis and Dependency Resolution are completed on-prem, the output of the analysis, the “evidence files”, are sent to the cloud for the final process of Evidence Analysis.
The project name
List of all file names and relative paths (except the ones that were excluded from the scan)
Various checksums of the files (SHA-1, SHA-1 on content without spaces, etc.)
Manifest files (except for scans run via Resolver with the
--no-upload-manifestflag)
Notice
The complete list of files that are sent to the cloud can be seen in Files Used for Manifest Resolution.
Names of dependencies extracted from manifest files
Scan errors and warnings such as “Failed resolving dependencies”. Each warning message may contain a file path as an argument.
SAST Exploitable Path Query result (for Exploitable Path scans)
Delta Scans
The Delta scan feature dramatically cuts the time of SCA scans when rescanning an existing project., if the manifest files haven’t been changed since the last scan, then we skip the dependency resolution process. This can cut scan times by up to 95% without detracting from the accuracy of the scan.
Once a week a full scan is enforced even if no changes were detected in the manifest files. This is intended to identify version changes caused by use of ranged versions.
Notice
A failed scan won't be used as the basis for a subsequent Delta scan. However, if a partially successful scan identified the manifest files and they did not change, this will be used as the basis for a Delta scan.
When a scan runs as a Delta scan, an indication is shown in the Resolving Info dialog in the SCA scan results viewer.
Current Limitations
Supported for all languages and package managers for which dependency resolution is done using manifest files except for C and C++.
Does not apply to languages for which dependency resolution is done by file analysis (fingerprint method).
For Single-Tenant, this is not available for scans run in the cloud. However, it is available for Single-Tenant accounts v3.56+ running scans locally using SCA Resolver.
Export Remediated Manifest File
You can generate remediated manifest file/s that contain the recommended versions of your packages. These files can be download and used to update your project.
Remediated manifest files can be exported directly from the SCA scan results viewer. They are provided as a ZIP archive that preserves your project’s original file structure.
Notice
Limitations:
Currently supported for the following manifest files:
npm
package.jsonPython
requirement.txtNuGet
*.csprojandpackages.config
Remediates only direct dependencies (not transitive)
Because this method updates all vulnerable packages (sometimes changing a major version) it may break methods used in your code. You may need to refactor your code to avoid changes in functionality.
For a guided procedure of exporting remediated manifest files, see Remediation using a Manifest File.
SCA Auto Pull Request
For Code Repository Integration projects, SCA Auto Pull Request automatically submits pull requests with suggested remediation for SCA vulnerabilities. When code is pushed to a protected branch, triggering an SCA scan, Checkmarx identifies vulnerable packages for which a remediated version is available and sends an automatic PR to adjust your manifest files to use the remediated versions. The PR is created with branch name branch_auto_pr, and once approved, it is merged into your protected branch.
This is supported for all supported SCMs (GitHub, GitLab, Bitbucket and Azure DevOps).
This feature can be activated on the project level by turning on the SCA Auto Pull Request toggle in the project settings.
Limitations
Currently supported for the following manifest files:
npm
package.jsonPython
requirement.txtNuGet
*.csprojandpackages.config
A single PR is sent with all of the suggested changes (i.e., no separate PR for each package).
A PR is sent whenever a remediated package is available. It is not possible to set thresholds or filter conditions.
For Bitbucket integrations, the user who sets up the integration must have an email associated with their Bitbucket user account in order for this feature to work.
Scan Reports and SBOM Reports
Results from the SCA scanner are returned together with results from other scanners in Checkmarx One Scan Reports and Projects Reports. See Checkmarx One Reports
In addition, you can generate specialized SCA scan reports as well as Software Bill of Materials (SBOM) reports based on the packages identified by SCA.
Scanning SBOMs
You can run an SCA scan on an SBOM file. The scan is run as a Checkmarx One project, with the source specified as an SBOM file. The SCA scanner returns comprehensive results of all risks associated with your open source packages. This enables customers who don’t want to submit their actual code, to obtain comprehensive SCA results for their project and manage the remediation via Checkmarx One.
SBOM scans can be run from the UI as well as via CLI or REST API.
Note
This capability is distinct from the capability to analyze an SBOM using the POST /analysis/requests API. The new method shows SCA results in the context of an actual Checkmarx One project, as opposed to just returning a report with the enriched SBOM data.
Requirements:
Supported file formats: json or xml following CycloneDX (v1.0-1.6) or SPDX (v2.2 or v2.3)
It is mandatory to include the Package URL (purl) for each package in the SBOM. For more information about purl syntax, see here.
Only the SCA scanner can run on an SBOM
Can only run on a “manual” project (not a code repository integration)
The procedure for running a scan on an SBOM is described here.
AI Guided Package Remediation
When the SCA scanner identifies a vulnerable package in your project and there is no remediated version available, a button is shown that enables you to get AI generated suggestions for non-vulnerable replacement packages.
Policy Management
Create customized policies with conditions relating to results from the SCA scanner. Conditions can relate to packages, vulnerabilities, malicious packages, and licenses.
For more information, see SCA Policy Conditions.
CxScore
In addition to Risk Score (which focuses on severity of the risk based on CVSS), Checkmarx One provides an additional metric, CxScore, for each vulnerability. CxScore is a composite metric that reflects both vulnerability severity and likelihood of exploitation. It incorporates the EPSS score along with key exploitability indicators, including Exploitable Path, Known Exploited Vulnerabilities (KEV), and Proof of Concept (PoC) availability.
CxScore is assigned to vulnerabilities displayed in the Risks tab and is also shown for packages in the Packages tab. The Package CxScore reflects the highest CxScore among all vulnerabilities associated with that package.
For the complete documentation on CxScore, see CxScore: Risk Prioritization for SCA Vulnerabilities