Skip to content

Conversation

@ppkarwasz
Copy link
Contributor

This change introduces two GitHub workflows that partially automate the maintenance of the VEX file for Apache Solr by identifying relevant CVEs and assessing their reachability.

  • check_cve Scans the components of a given Solr distribution for known CVEs. For each CVE that does not yet have a corresponding VEX entry (and is not already covered by an open PR), the workflow automatically triggers generate_vex with the appropriate parameters.

  • generate_vex Analyzes the reachability of a specific CVE using metadata from the callgraph_metadata repository and determines whether the vulnerability can impact Solr.

Together, these workflows reduce the maintenance effort of maintaining the VEX file.

This change introduces two GitHub workflows that partially automate the maintenance of the VEX file for Apache Solr by identifying relevant CVEs and assessing their reachability.

* **`check_cve`**
  Scans the components of a given Solr distribution for known CVEs.
  For each CVE that does not yet have a corresponding VEX entry (and is not already covered by an open PR), the workflow automatically triggers `generate_vex` with the appropriate parameters.

* **`generate_vex`**
  Analyzes the reachability of a specific CVE using metadata from the
  [`callgraph_metadata`](https://github.com/vex-generation-toolset/callgraph-metadata) repository and determines whether the vulnerability can impact Solr.

Together, these workflows reduce the maintenance effort of maintaining the VEX file.
@ppkarwasz
Copy link
Contributor Author

I have tested both workflows (specifically in the vex-generation-toolset fork of this repo; see, for example, vex-generation-toolset#1 and vex-generation-toolset#2) to validate their behavior.

A few important notes on the current state:

  • The workflows depend on data being available in the callgraph metadata repository maintained under the vex-generation-toolset org: https://github.com/vex-generation-toolset/callgraph-metadata. That repo contains call graphs for most Apache Solr 9.10.0 dependencies, but there are gaps (e.g., Scala- and Kotlin-based artifacts and some code-generated artifacts are not currently included).
  • We (@openrefactorymunawar and I) are actively maintaining that repository and adding CVE root causes as they are disclosed. At the moment there is a manual review step before inclusion, but we are considering maintaining separate reviewed and unreviewed branches to improve iteration and automation.

As a result of the above, the generate_vex workflow can sometimes fail due to missing metadata: this is an expected limitation at this stage, not a flaw in the workflow definitions themselves.

Since this would be the first upstream deployment of the tooling, it’s likely that users will encounter bugs or limitations. For example, the reachability analysis run in vex-generation-toolset#2 was not able to detect exploitability for CVE-2025-54988 (PR #162) due to the underlying graph data.

Request for feedback:

  • Does the project feel comfortable adopting these workflows in the current form given the external data dependency?
  • Should we provide guidance or fallback behavior for missing metadata (e.g., skip with warning vs. fail)?
  • Are there suggestions for first-class integration of call graph data into the Solr project process or tooling?

Happy to iterate on this based on feedback from the community and reviewers.

Copy link
Contributor

@dsmiley dsmiley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall I love the direction.
It's not clear to me when these GHA workflows should/need to be run?

I think adopting this requires more/better documentation holistically on VEX and the nature of these files/directories in the website repo. Okay to link elsewhere of course but still.

required: true
type: string
artifact_purl:
description: 'PURL of the vulnerable artifact'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

purl?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants