Skip to content

Roll out run-hex-advisory-check to the remaining Elixir repos on @v2 #68

Description

@nkg

run-hex-advisory-check shipped in v2.16.0 (#67) but is off by default, so every Elixir repo on @v2 still has the blind spot it was added to close. This tracks the per-repo opt-in.

Why it can't just be default-on

mix_audit — what run-deps-audit runs — resolves advisories from exactly one source, mirego/elixir-security-advisories. Anything not in that mirror is not reported at all. Measured on HordiaLabs/scraper-control, same mix.lock, same machine:

$ mix deps.audit
No vulnerabilities found.

$ mix deps.get
  bandit 1.12.4 VULNERABLE!
    EEF-CVE-2026-74836 (HIGH)
    EEF-CVE-2026-75484 (MEDIUM)

The mirror clone was already at upstream HEAD and neither advisory exists in it, so this is missing data rather than a stale cache — a rebuild or cache-bust wouldn't surface it. Any repo relying on run-deps-audit alone is exposed the same way.

Default stays false because flipping it fleet-wide would red-line any repo whose deps carry an untriaged advisory, with no warning and no chance to assess first. Opt-in keeps that a decision rather than a surprise.

Per-repo steps

  1. Run mix deps.get locally and note any VULNERABLE! blocks.
  2. Upgrade what's upgradable.
  3. For anything genuinely unadoptable, add the id to hex-advisory-ignore with a comment saying why and what unblocks it — e.g. scraper-control ignores GHSA-rhv4-8758-jx7v because decimal 3.0 has the fix but ecto pins decimal ~> 2.0.
  4. Set run-hex-advisory-check: true. Leave run-deps-audit: true — the sources are complementary, neither is a superset.

Ids match the primary id or any aka: alias, so GHSA ids already passed to mix_audit's --ignore-advisory-ids can be reused verbatim and both lists stay in one dialect.

Repos

  • HordiaLabs/scraper-control — HordiaLabs/scraper-control#70
  • remaining Elixir consumers of @v2

Once coverage is broad enough that a default flip is uneventful, worth reconsidering default: true so new repos inherit the gate rather than having to know to ask for it.

🤖 Generated with Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions