Múlt kedden az egyik Go szolgáltatásom egy nap alatt 14 Dependabot PR-t kapott.
Ugyanahhoz az egy CVE-hez tartoztak, de a mi futó kódunkat valójában nem érintették. Ettől még végig kellett nézni az alertet, reviewzni a PR-eket, megvárni a CI-t, majd mergelni. Itt döntöttem el, hogy ebben a folyamatban nálunk ennyi volt a Dependabot.
Mi volt az utolsó csepp
A konkrét eset a CVE-2026-26958 volt a filippo.io/edwards25519 modulban.
A sebezhetőség a (*Point).MultiScalarMult metódust érintette, amit a legtöbb projekt nem hív. A javítás is pici volt. Ennek ellenére a Dependabot rengeteg PR-t nyitott Go repókban, még olyanokban is, ahol csak a modul más részeit használták.
Ez a gond a gyakorlatban: ijesztő alert, sürgős hangnem, sok admin munka, kevés valódi biztonsági nyereség.
Miért történik ez
A Dependabot modul szinten gondolkodik. Ha a modulban valahol van sebezhető szimbólum, minden függő repóra riasztást küld.
Két fontos kérdést nem tesz fel:
- Importálod egyáltalán az érintett csomagot?
- Meghívod az érintett függvényt?
Ha ezek kimaradnak, pillanatok alatt zaj lesz a rendszerből.
Mit használok most
A Dependabotot két egyszerű dologra cseréltem:
govulnchecka CI-ban, hogy a Go kód valódi kockázatait lássam.- Egy ütemezett függőségfrissítő és tesztelő workflow.
1) govulncheck a CI-ban
A govulncheck szimbólum szinten elemez. Követi a hívási gráfot, és azt jelzi, ami tényleg elérhető a kódodból.
name: Vulnerability Check
on:
schedule:
- cron: '0 8 * * 1-5' # Hétköznapokon reggel 8-kor
push:
branches: [main]
jobs:
vulncheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: stable
- name: Install govulncheck
run: go install golang.org/x/vuln/cmd/govulncheck@latest
- name: Run govulncheck
run: govulncheck ./...
Ha talál valós problémát, konkrét hívási pontokat kapsz, nem csak egy általános figyelmeztetést.
2) Heti teszt a legfrissebb függőségekkel
Ez a workflow frissíti a függőségeket, futtatja a teszteket, és megmutatja, hol csúszik szét valami:
name: Dependency Freshness
on:
schedule:
- cron: '0 6 * * 1' # Hétfő reggel
jobs:
test-latest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: stable
- name: Update all dependencies
run: |
go get -u ./...
go mod tidy
- name: Run tests
run: go test ./...
- name: Report drift
if: failure()
run: |
echo "A tesztek elbuknak a legfrissebb függőségekkel."
echo "Nézd meg a go.sum diffet a törő változásokhoz."
git diff go.sum
Ha zöld, nyugodtan frissítesz. Ha piros, egy valós törést vizsgálsz, nem sok tucat bizonytalan alertet.
Mit hozott ez nálunk
Három hónap után:
- A biztonsági alertek kb. 20/hétről 1-2/hónapra estek vissza.
- A csapat újra komolyan veszi az alertet, mert megbízhatóbb lett a jelzés.
- A függőségkarbantartás havi ráfordítása nagyjából 30 perc.
- Nem maradt ki olyan valódi Go sebezhetőség, ami elérhető lett volna a kódunkból.
Ha kipróbálnád
- Tedd be a
govulnchecklépést a CI-ba. - Futtasd le kézzel, és javítsd, amit tényleg elér a kód.
- Add hozzá az ütemezett frissítés plusz teszt workflow-t.
- Kapcsold ki a Dependabotot a repo beállításaiban, vagy használd ezt:
version: 2
updates: []
- Küldd a hibákat és találatokat Slackre vagy Teamsre.
Zárás
A biztonsági eszköz jó esetben csökkenti a kockázatot, nem növeli a háttérzajt.
A Dependabot nem rossz eszköz, de nálunk túl sok téves riadást adott. A govulncheck és az ütemezett függőségtesztelés használhatóbb, hihetőbb jelzést ad.