Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CRAVEX: Vulnerability exploitability: Reachability integration #103

Closed
pombredanne opened this issue May 8, 2024 · 6 comments
Closed

CRAVEX: Vulnerability exploitability: Reachability integration #103

pombredanne opened this issue May 8, 2024 · 6 comments
Assignees
Labels
design needed Design details needed to complete the issue vulnerabilities Vulnerability Management

Comments

@pombredanne
Copy link
Member

pombredanne commented May 8, 2024

Create models and design API to integrate external tool's reachability analysis results inform vulnerability ranking

See also:

@DennisClark
Copy link
Member

A reachable vulnerability has a path from your code to the root cause of a vulnerability.

Gauge risk by identifying whether a function related to the vulnerability is being called by your application, raising the chances of that vulnerability being exploitable in the context of your application.

@DennisClark DennisClark added the vulnerabilities Vulnerability Management label Jun 19, 2024
@DennisClark DennisClark self-assigned this Jun 24, 2024
@DennisClark DennisClark added the design needed Design details needed to complete the issue label Jun 24, 2024
@DennisClark
Copy link
Member

A "reachability ranking" appears to be relevant to product or other first-party code ("your code") and applies to that usage context.

@pombredanne
Copy link
Member Author

pombredanne commented Nov 28, 2024

Here is my take:

A definition of reachability

from https://owasp.org/www-chapter-los-angeles/assets/prez/OWASPLA_prez_2024_03-1.pdf

Vulnerability Reachability Analysis

Code that is contains vulnerabilities is bad
Code that contains vulnerabilities used in your application is worse
How do you know if some code you are using is vulnerable?
Better yet, how do you know you’re even using the vulnerable code at all?

Minimal design

In this context there are tools that can determine if a vulnerable piece of code is effectively used and reached in some way.

The goal of this issue is to provide a way to track this information. For a simple start, we could have a trib-oolean field at the intersection of product packages and vulnerability that state if a this vulnerability is reachable or not reachable, or this fact is not known. Bonus if we have an extra field that explain how this was determined.

We are going to provide a minimal UI to update the data in these new fields, so that a user can do this. And a way through the API to update the data so we can offer an entry point for tools to contribute their results

And finally, this reachability should also influence the ranking of vulnerabilities in a product as detailed in:

@tdruez
Copy link
Contributor

tdruez commented Dec 3, 2024

The goal of this issue is to provide a way to track this information. For a simple start, we could have a trib-oolean field at the intersection of product packages and vulnerability that state if a this vulnerability is reachable or not reachable, or this fact is not known. Bonus if we have an extra field that explain how this was determined.

@DennisClark Could you review this design and provide name and help for those new fields so I can get started on the implementation. Thanks!

@DennisClark
Copy link
Member

@tdruez and @pombredanne I think we actually already cover the functionality described here in the ability to edit the Analysis of a product package vulnerability. I don't think we need to introduce anything completely new and we can declare this functionality covered by the Analysis fields. See example screenshot.

Screenshot 2024-12-03 at 08 58 27

tdruez added a commit that referenced this issue Dec 9, 2024
tdruez added a commit that referenced this issue Dec 10, 2024
tdruez added a commit that referenced this issue Dec 10, 2024
tdruez added a commit that referenced this issue Dec 11, 2024
tdruez added a commit that referenced this issue Dec 11, 2024
tdruez added a commit that referenced this issue Dec 11, 2024
tdruez added a commit that referenced this issue Dec 11, 2024
* Add `is_reachable` field on the VulnerabilityAnalysis model #103

Signed-off-by: tdruez <[email protected]>

* Add support for "unknown" in the is_reachable filter #103

Signed-off-by: tdruez <[email protected]>

* Add a VulnerabilityAnalysis REST API endpoint #103

Signed-off-by: tdruez <[email protected]>

* Move the VulnerabilityAnalysisViewSet in the vulnerabilities module #103

Signed-off-by: tdruez <[email protected]>

* Add unit tests for the VulnerabilityAnalysis API endpoint #103

Signed-off-by: tdruez <[email protected]>

* Add unit test for patch method on VulnerabilityAnalysis API endpoint #103

Signed-off-by: tdruez <[email protected]>

---------

Signed-off-by: tdruez <[email protected]>
tdruez added a commit that referenced this issue Dec 11, 2024
@tdruez
Copy link
Contributor

tdruez commented Dec 11, 2024

Implemented in #206 (comment)

Changes:

  • Add is_reachable field on the VulnerabilityAnalysis model as a tri-boolean field: yes, no, unknown
  • Reachability column added in the "Vulnerability" tab.
  • Add filter by "Reachability" from the column header.
  • The is_reachable value can be set from the "Vulnerability analysis" modal form
  • Add a VulnerabilityAnalysis REST API endpoint.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
design needed Design details needed to complete the issue vulnerabilities Vulnerability Management
Projects
Status: Validated
Development

No branches or pull requests

3 participants