feat(ci): geheimen- en SAST-scan draaien nu in CI (#778) #785
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!785
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/ci-scans-778"
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?
Closes #778.
make checkstaat sinds #741 op de runner.check-secrets(gitleaks +trufflehog) en
sast(semgrep) zaten alleen incheck-full, en dat draaitnergens automatisch — of er ooit gescand was, hing af van wie het lokaal
toevallig deed. Voor een geheim telt alleen of het vóór de merge gevonden
wordt; daarna staat het in de historie.
Geen bekend lek. Ik heb beide handmatig op main gedraaid: schoon, en semgrep
0 bevindingen over 690 bestanden. Dit dicht de controle, niet een gat.
Waarom nu
De rechtvaardiging voor het gat staat opgeschreven in
check_conventions.dartbij
nosemgrepBaseline— "het vraagt een externe binary" — en ging over demachine van een bijdrager. In een container bepaal je zelf wat erin zit. Het is
dus geen nieuwe afweging maar een vervallen beperking.
Twee dingen die het gewicht dragen
fetch-depth: 0. Zonder dit is de job theater:actions/checkoutkloont ééncommit diep, en
gitleaks git/trufflehog gitscannen de histórie. Op eenondiepe kloon kijken ze naar bijna niets en melden groen — terwijl een geheim
dat drie commits terug is toegevoegd en daarna "verwijderd" precies het geval is
dat deze pas moet vinden.
Gepinde versies, geverifieerde download. Zelfde discipline als de
Flutter-stap. De
test -n "$SHA"daarin is geen plichtpleging: ik heb gemetendat
grep … | sha256sum -c -stil slaagt met exit 0 zodra de grep nietsvindt. Eén hernoemd release-asset en de verificatie is weg zonder één rood
vinkje. Dat was een fout in mijn eigen eerste versie.
Tegenproef
De poort is rood gezien met een geplant sleutelpaar in een commit:
AKIAIOSFODNN7EXAMPLE(AWS' eigen documentatievoorbeeld)Dat eerste is terecht — die waarde staat in de standaardregels op een
uitzonderingslijst. Het is ook de reden dat zo'n tegenproef mét een dummy niets
bewijst; met de dummy zou ik hebben geconcludeerd dat de poort tandeloos is.
De commit is daarna volledig uit de tak verwijderd en
gitleaks gitbevestigtdat er geen spoor van over is.
Wat er bewust buiten blijft
DAST (ZAP) — de webbundel is CanvasKit; een spider komt niet door een canvas.
Het geserveerde oppervlak dekt
make check-webal.De adviserende doelen (
deps-outdated,catalogs-outdated) — die verouderenbuiten je schuld en horen niet rood te kunnen worden op andermans PR.
Semgrep is op versie gepind maar niet hash-gepind. Het komt van PyPI; de
transitieve afhankelijkheden hash-pinnen vraagt een eigen requirements-bestand
met honderden hashes, en dat onderhouden is een grotere belofte dan hier
waargemaakt wordt. Staat als zodanig in het commentaar in plaats van stilzwijgend.
Poorten
make check,make check-secrets,make sastenmake shellcheckalle vierexit 0 op deze tak. Geen Dart-wijziging, geen l10n, geen SBOM-gevolg.
docs/CHECKS.mdbij.Deze PR toetst zichzelf: de nieuwe job draait op deze pull request. Als
scanshier groen is, is dat het bewijs dat de workflow werkt op de echterunner — dat kan ik lokaal niet nabootsen.
Pull request closed