2.3 KiB
2.3 KiB
id, title, status, assignee, created_date, updated_date, labels, dependencies, references, priority
| id | title | status | assignee | created_date | updated_date | labels | dependencies | references | priority | |
|---|---|---|---|---|---|---|---|---|---|---|
| ML-9 | Add mix_audit dependency for CVE scanning | Done | 2026-04-20 08:49 | 2026-04-24 07:13 |
|
low |
Description
GitHub: created 2026-04-16 · updated 2026-04-16
Summary
The project has Sobelow (SAST) and mix hex.audit (retirement-only check) but no CVE database scan against the installed dep tree.
Evidence
mix.exsdoes not listmix_auditmise run dev:lintpipeline does not include a CVE step.github/workflows/test_and_deploy.ymllint job does not run any CVE scanner
Fix
Add {:mix_audit, "~> 2.1", only: :dev, runtime: false} to mix.exs and wire into the lint pipeline:
# in mise.toml, under [tasks."dev:lint"] or as a new task
mix deps.audit
And add a step in .github/workflows/test_and_deploy.yml lint job.
Acceptance Criteria
mix deps.auditruns in CI- CI fails (or warns, TBD) on advisories
- #1
mix deps.auditruns in CI as a warn-only step (continue-on-error) - #2
mix deps.auditruns inmise run dev:lintas a warn-only step
Implementation Notes
Decision on fail-vs-warn: warn-only on both CI and local lint. Rationale: CVE databases evolve independently of the project, so a newly published advisory should surface quickly (annotation in CI) without blocking unrelated PRs or breaking dev:lint for devs who may not be able to remediate immediately (e.g. waiting on upstream fix).
Changes:
mix.exs: added{:mix_audit, "~> 2.1", only: :dev, runtime: false}alongside other dev-only quality tools (ex_slop, quokka, credo).scripts/dev/lint: addedmix deps.audit || truebetween credo and gettext steps..github/workflows/test_and_deploy.yml: added🛡️ Audit dependencies for CVEsstep in the lint job withcontinue-on-error: true, placed after sobelow.
Verification:
mix deps.getresolved mix_audit 2.1.x plus yaml_elixir/yamerl transitive deps.mix deps.auditcurrently reports "No vulnerabilities found." — baseline clean.shellcheckpasses on the updatedscripts/dev/lint.