Voor verantwoorde melding van kwetsbaarheden volgen we het beleid van het Ministerie van Binnenlandse Zaken en Koninkrijksrelaties (MinBZK):
- Beleid: https://github.com/MinBZK/.github/blob/main/SECURITY.md
- Meldpunt: het Nationaal Cyber Security Centrum (NCSC) — https://www.ncsc.nl/contact/kwetsbaarheid-melden
Vermeld in je melding beide referenties zodat de melding via MinBZK CIO-office bij de juiste maintainers terechtkomt:
- "MinBZK/CIO-office github security response" — conform het MinBZK-beleid (vrije-tekstreferentie, geen GitHub-pad)
- de repository
RijksICTGilde/hackathon-claude-code— voor directe routering naar de maintainers
Conform het MinBZK-beleid (gebaseerd op NCSC) streven we naar:
- inhoudelijke reactie binnen enkele werkdagen
- coördinatie van publicatie binnen 60 dagen na de melding
Vulnerability disclosure follows a coordinated 60-day timeline. Please report vulnerabilities via the NCSC link above.
- Publiceer de kwetsbaarheid niet voordat deze is opgelost.
- Misbruik de kwetsbaarheid niet verder dan nodig om het bestaan ervan aan te tonen.
- Wijzig of verwijder geen data op systemen.
Bij elke gepubliceerde release tekent de release-sign workflow zowel het bron-archief als de checksum met cosign keyless. De release bevat vier assets:
<repo>-<tag>.tar.gz— het ondertekende bron-archief<repo>-<tag>.tar.gz.sigstore— Sigstore-bundle (handtekening + certificaat + Rekor-entry) voor het archief<repo>-<tag>.tar.gz.sha256— SHA256-checksum<repo>-<tag>.tar.gz.sha256.sigstore— Sigstore-bundle voor de checksum
Belangrijk: verifieer alleen het <repo>-<tag>.tar.gz asset uit de release. GitHub's automatisch gegenereerde "Source code (tar.gz)" download is een ander archief en heeft een andere checksum — die handtekening werkt daar niet op.
De regex hieronder is gebonden aan de bestandsnaam
release-sign.yml. Een vergelijkbare zelf-referentie zit inbuild-image.yml(gebonden aan dat bestand zelf). Bij hernoemen van een van beide workflows breken consumer-verifies zonder duidelijke foutmelding — update zowel deze SECURITY.md als het verify-blok in de andere workflow mee.
TAG=v1.2.3
REPO=hackathon-claude-code
# De regex accepteert alleen handtekeningen die voortkomen uit een run
# op `refs/heads/main` of een `refs/tags/v*`-tag. De `release-sign`
# workflow weigert workflow_dispatch op andere refs, dus dit is in lijn
# met wat maintainers daadwerkelijk publiceren. Anchored (^...$) zodat
# substring-matches geen sluiproute zijn.
IDENTITY_REGEXP="^https://github\.com/RijksICTGilde/$REPO/\.github/workflows/release-sign\.yml@refs/(heads/main|tags/v[0-9A-Za-z._+-]+)$"
ISSUER="https://token.actions.githubusercontent.com"
gh release download "$TAG" --repo RijksICTGilde/$REPO \
--pattern "$REPO-$TAG.tar.gz*"
# Verifieer dat de checksum zelf authentiek is voordat we hem vertrouwen.
cosign verify-blob \
--bundle "$REPO-$TAG.tar.gz.sha256.sigstore" \
--certificate-identity-regexp "$IDENTITY_REGEXP" \
--certificate-oidc-issuer "$ISSUER" \
"$REPO-$TAG.tar.gz.sha256"
sha256sum -c "$REPO-$TAG.tar.gz.sha256"
cosign verify-blob \
--bundle "$REPO-$TAG.tar.gz.sigstore" \
--certificate-identity-regexp "$IDENTITY_REGEXP" \
--certificate-oidc-issuer "$ISSUER" \
"$REPO-$TAG.tar.gz"Cosign v2 consumers werken niet met deze assets — bundle format vereist cosign v3+.
Zie het volledige MinBZK-beleid voor de complete tekst, do's en don'ts, en wat wij beloven.