Safeguard
Supply Chain•

How do you check whether a package appears in a malware advisory?

Search the GitHub Advisory Database for malware entries, check OSV, and compare names for lookalikes before you install. Steps and what to do on a match.

Safeguard Security Team
4 min read

To check whether a package appears in a malware advisory, search the GitHub Advisory Database with the type:malware filter, query OSV for the package name, and compare your spelling against popular names. On a match, do not install it, and if it is already installed, remove it and rotate anything it could reach.

What these sources contain

The GitHub Advisory Database holds advisories for vulnerabilities and malware in open source packages. Its malware advisories come from the npm security team and the OpenSSF Malicious Packages repository. They have no fix version, so the only safe step is to stop using the package. Dependabot can generate malware alerts when enabled, and you can search them with type:malware.

OSV aggregates vulnerability databases that use the OpenSSF vulnerability format, with an API that includes endpoints for querying a package and for fetching a vulnerability by ID. deps.dev indexes advisories from OSV and displays them next to the dependency graph.

Steps before adopting

  1. Write down the exact package name and ecosystem.
  2. Search the GitHub Advisory Database for the name with the malware filter.
  3. Query OSV for the same name.
  4. Search for near spellings: swapped letters, added hyphens, different scope or namespace. Our post on how typosquatting campaigns pick targets explains the patterns.
  5. Open the registry page and check owners, repository link and first release date.
  6. Record the check in the adoption record.

What a clean result means

Not much on its own. Advisories appear after someone finds and reports a problem, so a brand new malicious package will not be listed yet. A clean search lowers one risk and leaves the others. Pair it with the registry checks in what to check on a registry page.

What to do on a match

SituationAction
Not yet installedDo not install. Fix the name in your manifest
In a lockfile onlyRemove, regenerate the lockfile, review the pull request that added it
Installed on a developer machineRemove and treat that machine's secrets as exposed
Ran in CIRotate every secret the job could read, review artifacts built after

Whether to treat secrets as exposed depends on what the package did, which the advisory may describe. When in doubt, rotate.

Automate it

Manual lookups do not scale beyond new adoptions. Keep an inventory of the packages you use and have a monitor that alerts when any one gains an advisory. Also gate new packages at pull request time so the lookup happens before merge.

Build the check into your workflow

A developer who adds a package today will not remember to search advisory databases. Put the lookup where the decision happens: in the pull request template, in a pre-merge check, or in the tool your team uses to install packages. Whatever you choose, make the result visible to the reviewer, so a missing check is as obvious as a failing test. Keep a short list of packages already blocked in your organization, and update it after each incident so the lesson is shared.

Safeguard can help here. Its SBOM and dependency scanning, reachability analysis and policy gates cover the checks that should repeat after adoption, and the free scan at gold.safeguard.sh/scan shows what a project already depends on.

Quick check

Is a package safe if no advisory exists?

No. Advisories lag behind new attacks. Verify owners, source and install behavior yourself.

Why is there no fixed version for malware?

The package itself is hostile, so there is nothing to patch. The safe response is removal.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.