Open source
Je hoeft ons niet te vertrouwen. Je kunt het nakijken.
De scanner is open source onder de Europese licentie EUPL-1.2. Iedereen kan lezen wat hij doet, hem zelf draaien en elke dagversie zelf controleren. De lijst van checks is open onder CC BY 4.0.
Wat de scanner doet, stap voor stap
- Hij haalt de dagversie op. Eén bestand,
checkmijn-JJJJ-MM-DD.pyz, met de scanner, de regels en de lijst van bekende lekken van die dag. Er wordt niets geïnstalleerd. - Hij controleert dat het bestand echt van ons komt. Het controlegetal (SHA-256) moet kloppen met het manifest, en het manifest is ondertekend met onze sleutel (Ed25519).
- Hij scant zonder netwerk. Met
--offlinemaakt de scanner geen enkele verbinding. Hij leest de bestanden van je project en de git-geschiedenis, en verder niets. - Hij schrijft het rapport lokaal. In je eigen omgeving:
rapport.html,rapport.jsonen een SBOM. Geheimen worden altijd gemaskeerd. - Alleen als jij het wilt, gaat er iets naar buiten. Zie hieronder precies wat.
Wat er wel en niet naar buiten gaat
| Wat | Gaat naar CheckMijn.AI? | Toelichting |
|---|---|---|
| Je broncode | Nooit | De scanner draait bij jou: op je machine of in je eigen GitHub. |
| Geheimen, wachtwoorden, sleutels | Nooit | Ook in het rapport zijn ze gemaskeerd. |
Bewijsbestand (bewijs.json) | Alleen na jouw "ja" | Per check alleen de uitkomst en het aantal bevindingen. Geen code, geen paden, geen bestandsnamen. Nodig voor een scorepagina en badge. |
| Opgemaakt rapport | Versleuteld, als je de rapportlink aanzet | Versleuteld met AES-256-GCM vóór het vertrekt. De sleutel zit alleen in jouw link, na het #-teken, en een browser stuurt dat deel nooit naar een server. Wij kunnen het niet lezen. Zonder account wissen we het na 90 dagen. |
| Je IP-adres | Ja, als je iets inlevert | Alleen om misbruik te beperken (maximaal aantal aanvragen per uur), niet bewaard in de rapporten. |
Controleer de dagversie zelf
Elke nacht bouwt GitHub een nieuwe dagversie uit de broncode, in een openbare workflow. Het manifest vermeldt uit welke commit ze gebouwd is.
# 1. Het manifest en de scanner van vandaag ophalen
curl -sO https://checkmijn.ai/latest.json
curl -sO https://checkmijn.ai/public-key.pem
curl -sO "$(python3 -c 'import json;print(json.load(open("latest.json"))["url"])')"
# 2. Het controlegetal vergelijken met het manifest
sha256sum checkmijn-*.pyz
grep sha256 latest.json
# 3. Kijken wat erin zit: het is een gewoon zip-bestand
unzip -l checkmijn-*.pyz | head -40
De handtekening controleren kan met het script action/scan_ci.py, dat de GitHub Action ook gebruikt.
Waar de code van elke check staat
Bij elke check die de scanner automatisch uitvoert, linken we naar de regel code die het doet. Een paar voorbeelden:
- E-05: aiscan/checks/secrets.py
- F-01: aiscan/checks/supply.py
- B-06: aiscan/checks/supply.py
- U-01: aiscan/checks/bundle.py
- O-04: aiscan/checks/live.py
Waarom open source
Geen zwarte doos
Een keurmerk dat niemand kan nakijken, verdient geen vertrouwen. Bij ons kan iedereen zien hoe de score tot stand komt.
Iedereen meet hetzelfde
Een bouwer, een koper en een keurder gebruiken dezelfde meetlat. Een uitslag is daardoor vergelijkbaar en reproduceerbaar.
Beter door meer ogen
Vind je een fout of een gemiste check? Meld het op GitHub. Elke wijziging van de meetlat staat publiek in de changelog.
Waar we wel geld voor vragen
De scanner is gratis en blijft gratis. We verdienen aan het uitvoeren van scans en keuringen: een partner die de scan voor je draait en uitlegt, een erkende keurder die meekijkt, een pentester die aanvalt. Bekijk wat je per niveau krijgt.
Licenties
- Scanner en website: EUPL-1.2. Wie de scanner aanpast en verspreidt of als dienst aanbiedt, deelt die aanpassingen ook.
- Lijst van checks (de norm): CC BY 4.0. Vrij te gebruiken, met bronvermelding.
- Naam en logo CheckMijn.AI: niet vrij. Alleen erkende partners mogen ze gebruiken.
Deze website en de API draaien op onze eigen server bij Hetzner, Helsinki (Finland, EU).