Dealing with outdated third-party components


Overview

Keeping track of external/third-party packages or components used in a software application and obtaining visibility on their versions, vulnerabilities, and adherence with the rest of the software is crucial for several reasons:

  • Understanding the external packages and their versions helps ensure compatibility and proper functioning of the software. Different versions may introduce new features, bug fixes, or even breaking changes.
  • Monitoring for known vulnerabilities in external packages is essential for maintaining the security of the software. Many vulnerabilities are discovered and patched over time, and using outdated or vulnerable versions can expose the application to potential security risks.
  • Overall, having visibility helps to maintain software integrity and security. It enables developers to make informed decisions regarding updates and patches thereby reducing potential risks in the software.

This article explains how to quickly identify the use of external/third-party components in your application using CAST Imaging, therefore making their upgrade or removal a much easier and safer task.

How does this feature work?

The information about outdated third-party components is provided by CAST Highlight’sexternal link SCA database: containing 118+ million Open-Source components gathered from various forges that we crawl such as Github, GitLab, Maven Central, NPM, NuGet, RubyGem, Packagist, etc. Depending on the component name and version detected in an application scan, CAST Highlight finds possible vulnerabilities (CVEs) by cross-referencing the National Vulnerablity Database (NVD) from NIST, across 150+ thousand known vulnerabilities.

You will therefore need a CAST Highlight subscription in order to leverage this feature. In addition, your application must be fully analyzed in CAST Imaging ensuring that:

How do I find out which of my application’s components are outdated?

Your application needs to have the Ready to view status in the Landing page:

Then click Ready to view, expand the Learn about application section and select the Third-party components tile:

Clicking the Third-party components tile will display the following screen, where all outdated third-party components are listed:

Item Description
Component Name Lists the name of the obsolete third-party component found in your application.
Impacted object count
Available in ≥ 3.6.0-funcrel
Displays the total number of impacted objects (i.e. objects using the component) in the application. This column is used for the default sort order of the list of components in the table.
CVE Displays statistics about any CVEs (Common Vulnerabilities and Exposures etc.) that are present in the obsolete third-party component. The total count of CVEs is displayed together with the specific number per criticality:

  • Critical (black) > these should be prioritised for modernization
  • High (red)
  • Medium (yellow)
  • Low (grey)
  • Advisory CVEs
Versions Displays the version number of the obsolete third party component found in your application.
Release Date Displays the release date of the version of the obsolete third party component found in your application.
Gap Displays the age of the obsolete third party component - i.e. the difference between today’s date and the release date of the version found in your application. The larger the gap the higher the prioritization should be for modernization. Ages are listed in three categories:

  • Red - two years old or more
  • Orange - between one and two years old
  • Green - one year old or less

Filtering on technical roles

Available in ≥ 3.6.0-funcrel

Use Technical Roles filter to filter the list of third-party components:

How do I exclude unused items from the results?

Available in ≥ 3.6.0-funcrel

By default, the list of third-party components will contain all components that have been found in the application - whether they are actually used or not. If you need to focus your efforts on components that are actually used, then you can toggle the Exclude unused components option:

Where are these outdated components used in my application?

Once you have a list of the outdated third-party components, the next step is find out where these components are being used in your application so that you can make an update plan. The right panel shows a high-level view of the items interacting with the third-party component in your application. Clicking the Investigate button opens up the relevant objects and nodes in full screen mode. A hypothetical example is explained below.

Example

Take the following example where the Jackson Databind component (a general data-binding functionality for Jacksonexternal link) is flagged as out of date, with 56 CVEs, 22 of which are critical. This is a great candidate to upgrade. Look at the right panel high-level overview to see adherence:

We can see two types of elements, Java classes and MVC classes that have some connections to the third-party component.

Next click the Investigate button to drill-down to the details - this will help you understand the impact of updating the component, or if you want to remove it entirely. CAST Imaging will show you the internal elements (classes) and whether they concentrated or scattered throughout your application. The red square in the image below highlights the external class from the Jackson component and all other items correspond to internal classes that part of the application and which call the Jackson class:

You can also save this information as a view in order to plan the update, use the export feature or compare the objects with a previous analysis state:

It is also possible to view the exact piece of source code that defines where your custom object is calling the the class - click the link between the objects to do so:

Finally, you can add a Post-It to the view to inform your co-workers what needs doing: