# checkmijn.ai — framework (CC BY 4.0)

- [ ] **A-03** SBOM in machineleesbaar formaat (SPDX of CycloneDX), automatisch bij de build gemaakt, minstens alle directe afhankelijkheden (CRA bijlage I deel II (1); ISO/IEC 5962)
- [ ] **A-09** AI-vermelding: vastgesteld of het product AI gebruikt (scan met vaste regels en verklaring van de bouwer); het rapport toont "AI: ja" of "AI: nee", met het hoogste autonomieniveau (AI Act art. 50; ISO/IEC 42001)
- [ ] **B-05** Agentconfiguratie in de repo (instructiebestanden, regels, MCP-configuratie, prompt- en agentlogs) bevat geen geheimen, geen klantgegevens en geen onveilige instructies zoals "sla tests over" (OWASP Agentic ASI01, ASI04)
- [ ] **B-06** Geen verzonnen of verdachte pakketten: elke afhankelijkheid bestaat in het officiële register, is niet pas geregistreerd en lijkt niet op een bekende naam (OWASP A03:2025)
- [ ] **C-01** Statische analyse zonder kritieke of hoge bevindingen op de vier kenmerken van ISO/IEC 5055 (ISO/IEC 5055)
- [ ] **C-06** Foutafhandeling: fouten worden niet ingeslikt, gebruikers zien geen stacktraces, gedrag bij uitzonderingen is bepaald (OWASP A10:2025)
- [ ] **C-07** Het project bouwt uit een schone checkout met één gedocumenteerde opdracht; versies zijn vastgezet in een lockfile (ISO/IEC 25010 (flexibiliteit); SLSA)
- [ ] **C-13** Geen blokkerende of kritieke code smells: ongebruikte variabelen en imports, magische getallen, lege catch-blokken, hardgecodeerde URL's of configuratie, verouderde (deprecated) API's. Lagere ernst staat in het rapport (ISO/IEC 5055)
- [ ] **C-19** Geen ongebruikte afhankelijkheden: elk pakket in het manifest wordt echt gebruikt (ongebruikte pakketten zijn onnodig aanvalsoppervlak) (ISO/IEC 5055; CRA bijlage I (2)(j))
- [ ] **C-20** Geen achtergebleven rommel in repository en artefact: back-upbestanden (.bak, .old, .orig), database-dumps, testdata met echte gegevens, voorbeeld- en democode, tijdelijke bestanden van AI-agents, gecommitte buildoutput (ISO/IEC 27002 8.4; OWASP WSTG-CONF-04)
- [ ] **D-02** Tests draaien automatisch bij elke wijziging en een falende test blokkeert de release (ISO/IEC 27002 8.29)
- [ ] **D-06** Statische beveiligingsanalyse en afhankelijkheidsscan in de pipeline, met een drempel die de release blokkeert (NIST SP 800-218; ISO/IEC 27002 8.25)
- [ ] **D-12** Extern aanvalsoppervlak gescand: alle domeinen, subdomeinen, open poorten en publiek bereikbare diensten van de app in kaart gebracht en getest op bekende zwakheden (externe kwetsbaarheidsscan; geen pentest) (CRA I (2)(j); ISO/IEC 27002 8.8)
- [ ] **E-03** Sessies: veilige cookies, time-outs, afmelden maakt de sessie ongeldig (OWASP ASVS 5.0)
- [ ] **E-04** Geen injectie: geparametriseerde queries, output-encoding, geen SQL-, OS-, template- of XSS-lekken (A05:2025)
- [ ] **E-05** Geen geheimen in code, configuratie of git-geschiedenis; geheimen staan in een kluis of de omgeving (ISO/IEC 27002 8.24; CRA I (2)(e))
- [ ] **E-06** Versleuteling: TLS 1.2 of hoger voor al het verkeer, gevoelige gegevens versleuteld opgeslagen, geen verouderde of zelfgemaakte algoritmen (A04:2025; CRA I (2)(e))
- [ ] **E-08** Beveiligingsheaders en configuratie: CSP, HSTS, restrictieve CORS (A02:2025)
- [ ] **F-01** Geen afhankelijkheden met bekende uitbuitbare kwetsbaarheden (bv. CISA KEV, EU-kwetsbaarhedendatabank) en geen kritieke CVE zonder mitigatie (CRA I deel I (2)(a))
- [ ] **F-02** Geen frameworks of runtimes die niet meer ondersteund worden; geen onbeheerde pakketten in kritieke functies (A03:2025)
- [ ] **F-03** Versies vastgezet met een lockfile en integriteitscontrole (hashes) (SLSA)
- [ ] **F-05** Alle licenties gekend en verenigbaar met het gebruik; geen onbedoelde copyleft (ISO/IEC 5230)
- [ ] **F-13** Indirecte (transitieve) afhankelijkheden worden mee gescand; bij Plus staan ze ook in de SBOM (CRA I deel II (1))
- [ ] **G-08** Doorlopende bewaking van nieuwe kwetsbaarheden in afhankelijkheden via de SBOM (CRA I deel II (1), (3))
- [ ] **H-02** Uitvoer van het model wordt behandeld als onbetrouwbare invoer: niet rechtstreeks uitgevoerd, gevalideerd en geëncodeerd (LLM05)
- [ ] **H-08** Limieten op verbruik (tokens, aanvragen) tegen misbruik en onverwachte kosten (LLM10)
- [ ] **O-04** Geen cookies of trackers vóór toestemming: de scan bezoekt de site zonder te klikken en noteert wat er wordt geplaatst (ePrivacyrichtlijn art. 5(3))
- [ ] **O-05** De site zelf is veilig: TLS, beveiligingsheaders, CMS en plugins op een ondersteunde versie, geen beheerpagina's open (OWASP Top 10:2025; CRA I (2)(a))
- [ ] **O-06** Domein en e-mail beschermd tegen misbruik: SPF, DKIM en DMARC ingesteld, geen overneembare subdomeinen, DNSSEC waar mogelijk (Basis cyberhygiëne (NIS2 art. 21(2)(g)))
- [ ] **P-05** Inkomende webhooks en berichten worden gecontroleerd (handtekening, herkomst); uitgaande verzoeken alleen naar toegestane bestemmingen; antwoorden van derden worden niet blind vertrouwd (OWASP API7, API10)
- [ ] **R-03** Branchstrategie vastgelegd; hoofdbranch beschermd: geen directe of geforceerde push, verplichte review (B-03) en een geslaagde pipeline (ISO/IEC 27002 8.32)
- [ ] **R-13** Repository-instellingen: geheimenscanning en afhankelijkheidswaarschuwingen aan, geen onbedoeld publieke repositories, geen langlevende persoonlijke tokens (OpenSSF Scorecard)
- [ ] **S-04** Geen geheimen of API-sleutels in de app zelf (OWASP MASVS-STORAGE, MASVS-CODE)
- [ ] **S-06** SDK's van derden (analyse, advertenties, crashrapporten) geïnventariseerd; tracking pas na toestemming (ePrivacyrichtlijn art. 5(3); OWASP MASVS-PRIVACY)
- [ ] **U-01** Geen geheimen, API-sleutels of interne adressen in de JavaScript-bundel (OWASP ASVS 5.0; A02:2025)
- [ ] **U-02** Source maps en debugmodus niet publiek in productie (A02:2025)
- [ ] **U-03** Sessietokens en gevoelige gegevens niet in localStorage of sessionStorage; cookies met HttpOnly, Secure en SameSite (OWASP ASVS 5.0)
- [ ] **U-04** Bescherming tegen CSRF en clickjacking (frame-ancestors) (OWASP ASVS 5.0)
- [ ] **U-06** Scripts van derden (analyse, chat, advertenties) geïnventariseerd, met toestemming waar nodig en beperkt via CSP; op betaalpagina's goedgekeurd en bewaakt (ePrivacyrichtlijn art. 5(3); A08:2025; PCI DSS 4.0 req. 6.4.3)
- [ ] **U-07** Geen gevaarlijke DOM-functies met gebruikersinvoer (innerHTML, eval); berichten tussen vensters (postMessage) met controle van de herkomst (A05:2025)
- [ ] **W-03** Bestandsopslag (bv. S3, Blob) privé, toegang via kortlevende ondertekende links; uploads gecontroleerd en buiten de webroot bewaard (A01:2025; OWASP ASVS 5.0)
- [ ] **W-06** Limieten op middelen: time-outs, maximale grootte van verzoeken en uploads, paginering, bescherming tegen trage queries (OWASP API4; CRA I (2)(h))
- [ ] **Y-01** TLS juist ingesteld: alleen TLS 1.2 en 1.3, sterke cipher suites met forward secrecy, geldige certificaten met volledige keten, HSTS (NIST SP 800-52 Rev. 2; BSI TR-02102-2)
- [ ] **Y-02** Geen onversleutelde protocollen voor gegevens of beheer: geen HTTP behalve doorverwijzing, geen FTP, Telnet, LDAP of MQTT zonder TLS, geen SNMP v1/v2 (CRA I (2)(e); ISO/IEC 27002 8.21)
- [ ] **Y-04** Verouderde protocolversies uit: SSH alleen versie 2 met sterke algoritmen en sleutels, SMBv1 uit, RDP niet publiek bereikbaar (CIS Benchmarks)
