Skip to content

Echo OSV feed integration #3453

Open
anchore/vunnel
#1174

Description

@orizerah

Hi! Hoping to coordinate on a new vunnel provider that introduces Echo OSV advisories.

Our PR: anchore/vunnel#1174 — echo-osv, which ingests Echo's OSV feed (https://advisory.echohq.com/osv/all.zip) for the Echo:PyPi and Echo:npm language ecosystems. Echo ships patched builds of upstream PyPI/npm packages (e.g. pip at 25.2+echo.1 for CVE-2026-1703), so we mark records as advisories so grype routes them through the unaffected store — that way the patched build clears the upstream CVE instead of false-positiving on every Echo image.

We're in the same boat as the OSV PRs already listed in #3252 (CRAN #1043, BellSoft #924, openEuler #839):

A question:

Anything specific our records should include for #3252 to handle Echo:PyPi / Echo:npm cleanly via the unaffected store? Records carry PURLs (pkg:pypi/..., pkg:npm/...) so PURL-based detection should work, but want to confirm.

Activity

  1. kzantow commented on Jun 22, 2026

    @kzantow
    Contributor

    We merged an update to include all current OSV models. We have added testing functionality to grype that takes vunnel output records, builds a database, and exercises the matcher with a real database. You can see some examples in the hummingbird tests with some sample data.

    The best thing to do is probably run your provider locally to get some sample records to include as tests in the appropriate matcher(s) that we can add and verify they have the expected match result.

  2. orizerah commented on Jul 2, 2026

    @orizerah
    ContributorAuthor

    Thanks @kzantow,

    Turned out our ECHO-* records had no strategy in the OSV transformer, so they were dropped at build time. #3526 wires that up: an echoStrategy for our language advisories (Echo:PyPi / npm / Maven) as NAK/unaffected records, gated by a small Echo qualifier that only fires on +echo.N versions so it can't leak onto plain upstream ones. Reads from anchore/vunnel#1174.

    Mostly I'd love your read on whether we're missing anything and what the PR still needs to merge. If there's a checklist for adding a provider strategy, point me at it.

  3. moved this to In Progress in OSSon Jul 20, 2026
  4. self-assigned this
    on Jul 20, 2026
  5. LaizaAngrest commented on Sep 6, 2026

    @LaizaAngrest

    Hi @kzantow
    Wanted to ask where things stand now, and whether a review is something you could fit in soon.
    If anything on our end is holding it up, just let me know and I'll sort it out.

    Thanks!

  6. kzantow commented on Oct 13, 2026

    @kzantow
    Contributor

    Hi, I'm working on adding a new feature that I believe will support Echo and other similar scenarios in a data-driven way where we can identify when a package should include additional vulnerability data based on some package-level characteristics. In your case, I believe this includes some version revision including echo in packages that you've patched -- is my understanding correct? I've added an example to that PR that would show generally how an echo package can be identified using the data-driven SearchRules. Any feedback on this approach would be great, especially if I've missed some nuance!

  7. LaizaAngrest commented on Oct 16, 2026

    @LaizaAngrest

    Hi @kzantow, yes sounds good. One important detail: Echo packages should only match versions ending exactly with +echo.N, where N is numeric—for example, 1.2.3+echo.1. A broad check for versions containing echo could match unrelated packages.
    The package name stays the same as upstream. We need this for PyPI, npm, Maven, NuGet and Go.
    We’ll wait for #3751 and then rework #3526 to use it. Please let us know when #3751 is ready, or if you’d prefer a different approach.
    Thanks!

  8. LaizaAngrest commented on Oct 21, 2026

    @LaizaAngrest

    @kzantow small clarification to my previous comment: +echo.N should be an exact version segment, but it may be followed by additional metadata.
    For example, both 1.2.3+echo.1 and 1.2.3+echo.1.frntr.1 should match.
    We’ll include this behavior when reworking #3526 to use SearchRules.

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

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

  • Status
    In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions