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

Transitive Dependencies #91

Open
theinfosecguy opened this issue Dec 20, 2022 · 16 comments
Open

Transitive Dependencies #91

theinfosecguy opened this issue Dec 20, 2022 · 16 comments
Labels
backlog Important but currently unprioritized enhancement New feature or request

Comments

@theinfosecguy
Copy link
Contributor

Is there a way we can find if a dependency is transitive or not?

@oliverchang oliverchang added the enhancement New feature or request label Jan 5, 2023
@oliverchang
Copy link
Collaborator

Hi! Can you please elaborate?

Do you mean a boolean flag of some source in our JSON output indicating if a vulnerability is in a direct dependency or not?

@HarelMil
Copy link

@theinfosecguy +1
@oliverchang In my opinion it would be great not just to outline as boolean whether it is a direct or transitive, but to indicate the depth of the dependency tree.
This will be very useful for mitigation strategy (direct or low depth can be better influenced than a deeper depth).

@theinfosecguy
Copy link
Contributor Author

@oliverchang Not just a boolean flag but a vulnerable function and dependency tree as well. Is there a way to achieve this?

@oliverchang
Copy link
Collaborator

That certainly sounds doable. Sounds like what we'd like here is some output that indicates the vulnerable dependency chain that led to a finding (including function level info if we have that)?

@theinfosecguy
Copy link
Contributor Author

Thanks, @oliverchang!! Having a check for direct dependency would be an amazing feature.

@agmond
Copy link

agmond commented Mar 5, 2023

That certainly sounds doable. Sounds like what we'd like here is some output that indicates the vulnerable dependency chain that led to a finding (including function level info if we have that)?

@oliverchang I'd be very happy to see the chain of packages that led to a finding!

@oliverchang
Copy link
Collaborator

With the deps.dev API becoming open and available, this could be potentially a lot easier for us to implement now!

@oliverchang
Copy link
Collaborator

To track the concrete FR: this is around adding some ability to visualise the dependency chain(s) that leads to a vulnerable package. This could be either output as a JSON, and/or visualised as a graph image.

@theinfosecguy @agmond @HarelMil can you talk about a bit more about how you plan to use the dependency trees this would potentially generate? This would help us a bit more in prioritising/shaping how this actually looks.

(#352 may also be interesting for folks in this thread to follow).

@agmond
Copy link

agmond commented Apr 18, 2023

Thanks @oliverchang.
Yesterday I already started exploring deps.dev as well.

As for my use case (and it connects to the remediation efforts as well):
Currently, OSV-Scanner scans lock files (e.g. package-lock.json), which are auto-generated files, and marks some sub-dependencies as vulnerable.
I want to connect the vulnerable sub-dependency to the root of the tree (i.e. to the package that appears in the package.json file), and then raise an alert on the relevant line in the package.json file (which is the file where the root cause of the vulnerability was introduced, and this is the place that should be edited to remediate the issue).

Another relevant issue I opened is #150

@HarelMil
Copy link

@oliverchang Sure.

TL;DR - Direct/indirect and dependency depth are great indicators for prioritizing vulnerable package remediation processes at scale.

Dependency depth will be an excellent indication for understanding the possibility of patching the vulnerable package, which will affect the priority of addressing the specific vulnerable package.

Applying a fix (if available) is easy and straightforward when it is a direct package, but for indirect packages, it is a different story.

If the depth is relatively "shallow" the probability of applying a fix by contacting the chain of package maintainers is doable.
However, when the depth is deep, the probability to apply an actual fix decreases significantly.

When you have a significant amount of vulnerable packages, it may be a great help.

@agmond
Copy link

agmond commented Jun 1, 2023

Hi,
Is there any update on this issue?
Thanks!

@oliverchang
Copy link
Collaborator

Hi @agmond, thanks for the continued interest. We're actively working on this as part of #352. We'll have more to share in the coming months!

@agmond
Copy link

agmond commented Jun 6, 2023

Thank you, @oliverchang.
Can this feature (returning the dependency chain(s) that leads to a vulnerable package) be released as soon as it is ready, even before the full remediation feature?

@oliverchang
Copy link
Collaborator

Sorry for the slow response. The dependency chain feature is closedly tied to the full remediation feature, which we're actively working on. We're working through the necessary steps to release such a feature, because it involves a bit of coordination with the deps.dev team.

@oliverchang
Copy link
Collaborator

For folks following here, check out #352 (comment) which this feature is closely related to.

Transitive dependency depth is one of the capabilities that will be added as part of the guided remediation feature we're aiming to launch Q1 next year. Sorry for the delays!

Copy link

This issue has not had any activity for 60 days and will be automatically closed in two weeks

@github-actions github-actions bot added the stale The issue or PR is stale and pending automated closure label Jul 25, 2024
@oliverchang oliverchang added backlog Important but currently unprioritized and removed stale The issue or PR is stale and pending automated closure labels Jul 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backlog Important but currently unprioritized enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants