feat(scans): geheimen- en SAST-scan draaien nu bij elke PR en push #799
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!799
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/ci-scans-778-v2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Sluit #778.
check-secrets(gitleaks + trufflehog, werkboom én volledige historie) ensast(semgrep) zaten alleen incheck-full, en dat draait nergens automatisch. Of er ooit gescand was, hing af van wie het lokaal toevallig deed. Geen bekend lek — beide draaiden handmatig schoon op main — maar wel een gat in de controle.Wat er anders is dan het issue voorstelde
Het issue vroeg om een tweede job in
ci.yml, naastgate. Dat kan niet meer:on:geldt per workflow, enci.ymlis sinds #790 de uitbrengpoort die op eenv*-tag vuurt. Een job daarin zou pas scannen als het geheim al op main stond mét een tag eromheen — precies te laat voor het enige wat bij een geheim telt.Daarom een eigen
scans.yml, die vuurt op elke PR en elke push naar main. De reden voor #790 was de klok (22 minuten per PR tegen eenmake checkdie toch al lokaal draaide); deze twee doen 17 en 2 seconden, dus dat argument reikt er niet tot.En op de Linux-runner, niet op de Mac. De Mac heeft de drie scanners al staan, maar is sinds #797 zowel de uitbrengpoort als de werkmachine van de committer — en dit is de enige workflow die bij élke push vuurt, dus die zou kernen afnemen van de
make checkdie op dat moment draait. De server staat sinds diezelfde verhuizing stil.Twee dingen dragen het gewicht
fetch-depth: 0— gemeten in plaats van beweerd. Op een wegwerprepo met een geheim dat gecommit en daarna verwijderd is:--depth 1Zonder die regel meldt de historie-scan dus groen over vrijwel niets.
Gepinde versies met geverifieerde download. De
test -n "$SHA"daarin is geen plichtpleging:grep … | sha256sum -c -slaagt stíl bij een lege treffer, dus één hernoemd release-asset zou de verificatie weghalen zonder een enkel rood vinkje.Tegenproef
Een scan die niets ziet lijkt precies op een schone repo, dus beide richtingen getoetst met een willekeurig gegenereerd AWS-vormig sleutelpaar (nooit gecommit in deze repo; de historie-proef stond in een wegwerprepo):
make check-secretsvalt om en noemt de vondst;Deze PR is zijn eigen bewijs:
scans.ymlvuurt oppull_request, dus de eerste run staat hieronder.Verder in deze tak
De notitie bij
nosemgrepBaselinerechtvaardigde die ratchet met "make sastdraait niet automatisch". Dat klopt niet meer, en het echte argument stond er niet: semgrep telt zijn eigen onderdrukkingen niet, dus een repo die er twintig verzamelt heeft een groenemake sasten geen enkel signaal.make checkgroen. Geen Dart-wijziging oplib/, geen l10n, geen SBOM-gevolg.Vervangt
feat/ci-scans-778, die tegen deci.ymlvan vóór #796/#797 was geschreven.Nagekomen: de drie absolute beloftes
CONTRIBUTING.md,README.mdendocs/BUILD.mdkregen bij #790 alle drie een absolute formulering — "nothing runs it for you between your branch andmain", "the only thing standing between a change andmain", "the assurance beforemainis entirely the committer's local run". Die klopte toen precies, en klopt sinds deze tak niet meer helemaal. #790 schreef zelf op dat een belofte die niet meer waar is erger is dan geen belofte; dat geldt ook in deze richting. Alle drie hebben nu de uitzondering erbij, nadrukkelijk als aanvulling op de lokale run en niet als vervanging.