Skip to content

ci(security): workflow skanowania CVE w uv.lock + bump jaraco.context#180

Merged
mpasternak merged 1 commit into
devfrom
security/dependency-vuln-scan
Apr 27, 2026
Merged

ci(security): workflow skanowania CVE w uv.lock + bump jaraco.context#180
mpasternak merged 1 commit into
devfrom
security/dependency-vuln-scan

Conversation

@mpasternak
Copy link
Copy Markdown
Member

Podsumowanie

PR 8/12 z serii pypi-security-best-practices — praktyka #6: Scan for Known Vulnerabilities.

Co się zmienia

1. Nowy workflow .github/workflows/dependency-audit.yml

uv-secure skanuje uv.lock (natively reads hashe SHA-256) na:

Trigger Kiedy
push do dev/master gdy zmienia się uv.lock/pyproject.toml
pull_request każdy PR dotykający lockfile
schedule weekly cron, poniedziałek 6:00 UTC
workflow_dispatch manualny z UI

Policy:

  • HIGH/CRITICAL z dostępnym fix-em → failure. PR podbijający dep
    to jedyne wyjście.
  • LOW/MEDIUM → raport w GitHub Step Summary, nie blokuje.
  • --ignore-unfixed → CVE bez fix-a pomijane.

2. Bump jaraco.context 6.0.1 → 6.1.2

Workflow wykrył transitive vuln GHSA-58pv-8j8x-9vj2 (ReDoS) podczas
testowania lokalnie. Bez fixa workflow failowal by od razu na pierwszym
runie. Bump zrobiony przez:

uv lock --upgrade-package "jaraco.context"

Dlaczego uv-secure a nie pip-audit

uv-secure czyta uv.lock natively (z hashami SHA-256), pip-audit
potrzebuje konwersji do requirements.txt. uv-secure to mniej kroków,
mniej miejsc gdzie coś może rozjechać. Możemy dodać pip-audit jako
second opinion w follow-up.

Plan testowy

  • Lokalne uv-secure --severity high --ignore-unfixed uv.lock → exit 0
    po bumpie jaraco.context.
  • actionlint passed.
  • persist-credentials: false na checkout.
  • Permissions: contents: read only.
  • Po mergeu sprawdzić że workflow uruchamia się na PR dotykających
    uv.lock.
  • Weekly cron run w przyszły poniedziałek.

Future work

  • Dodać pip-audit jako second opinion w osobnym jobie.
  • Dodać Slack/email notification dla weekly cron failures.

🤖 Generated with Claude Code

…ontext

Praktyka #6 z lirantal/pypi-security-best-practices (Scan for Known
Vulnerabilities).

Nowy workflow .github/workflows/dependency-audit.yml uruchamia
uv-secure (natively reads uv.lock z hashami SHA-256) na:
- push/PR dotykajace uv.lock lub pyproject.toml
- weekly cron (poniedzialek 6:00 UTC)
- workflow_dispatch (manualny)

Polityka:
- HIGH/CRITICAL z dostepnym fix-em -> failure (PR podbijajacy dep
  to jedyne wyjscie)
- LOW/MEDIUM -> raport w job summary, nie blokuje
- --ignore-unfixed -> CVE bez fix-a pomijane (nic nie da sie zrobic)

Przy okazji wykryto i naprawiono jaraco.context 6.0.1
(GHSA-58pv-8j8x-9vj2 - ReDoS) -> bump do 6.1.2 przez:
  uv lock --upgrade-package "jaraco.context"

Bez tego bumpa nowy workflow failowal by od razu na pierwszym runie.

Akcje pinowane na SHA + persist-credentials: false (zgodnie z PR #176).
Permissions: contents: read (read-only).
@mpasternak mpasternak merged commit cf6efb3 into dev Apr 27, 2026
10 checks passed
@mpasternak mpasternak deleted the security/dependency-vuln-scan branch April 28, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant