Dag 1
Verantwoord programmeren met GenAI
Wat is beveiliging?
Bedreiging en risico
Soorten cyberbeveiligingsbedreigingen – de CIA-triade
Gevolgen van onveilige software
Wat is verantwoorde AI?
Beveiliging en verantwoorde AI in softwareontwikkeling
De OWASP Top Ten 2025
A01 - Gebrekkige toegangscontrole
· Basisprincipes van toegangscontrole
· Casestudy – Storing in het autorisatiesysteem van het FIFA-platform tijdens het WK 2026
· Verwarde hulpsheriff
o Onveilige verwijzing naar een lijdend voorwerp (IDOR)
o Paddoorloop
o Lab – Onveilige verwijzing naar een direct object
o Aanbevolen werkwijzen voor het doorlopen van paden
o Lab – Experimenteren met het doorlopen van paden in GenAI
o Omzeiling van autorisatie via door de gebruiker beheerde sleutels
o Casestudy – Overname op afstand van Nexx-garagedeuren en -alarmen
o Lab – Horizontale autorisatie
o Bestanden uploaden zonder beperkingen
o Goede praktijken
o Lab – Bestanden uploaden zonder beperkingen
· Server-side Request Forgery (SSRF)
o Casestudy – SSRF in Ivanti Connect Secure
A02 - Verkeerde beveiligingsconfiguratie
· Configuratiebeginselen
· Aanbevolen werkwijzen voor Python-configuratie
o Flask configureren
· Problemen met de configuratie van de webbeveiliging
o Beleid inzake inhoudsbeveiliging
o Fetch-richtlijnen
o Toelatingslijst voor bronnen
o Strikte CSP: gebruik van nonces en hashes
o Best practices voor CSP
· Beveiliging van cookies
o Koekje-attributen
· Beheer van vertrouwelijke informatie
o Vast geprogrammeerde wachtwoorden
o Beste praktijken
o Lab – Vastgelegd wachtwoord
· XML-entiteiten
o DTD en de entiteiten
o Uitbreiding van entiteiten
o Aanval via externe entiteit (XXE)
- Het opnemen van bestanden met externe entiteiten
- Server-Side Request Forgery met externe entiteiten
- Lab – Aanval door een externe entiteit
- XXE voorkomen
- Lab – DTD verbieden
- Casestudy – XXE-kwetsbaarheid in Ivanti-producten
- Lab – Experimenteren met XXE in GenAI
Dag 2
De OWASP Top Ten 2025
A03 - Storingen in de softwaretoeleveringsketen
· Gebruik van kwetsbare componenten
· De omgeving beoordelen
· Verharding
· Import van niet-vertrouwde functionaliteit
· Kwaadaardige pakketten in Python
· Beveiliging van de toeleveringsketen en de Software Bill of Materials (SBOM)
· Voorbeelden van SBOM’s
· Casestudy – De aanval op de toeleveringsketen van Polyfill.io
· Beheer van kwetsbaarheden
o Patchbeheer
o Beheer van kwetsbaarheden
o Databanken met kwetsbaarheden
o Lab – Kwetsbaarheden opsporen in componenten van derden
o DevOps, het CI/CD-bouwproces en Software Composition Analysis
o Controle op afhankelijkheden in Python
o Lab – Kwetsbare componenten opsporen
· Beveiliging van door AI gegenereerde code
o Praktische aanvallen op tools voor codegeneratie
o Hallucinaties door afhankelijkheid via generatieve AI
o Casestudie – Een overzicht van de zwakke punten van GitHub Copilot (tot medio 2025)
o Casestudie – Agentische codering en codebeveiliging (vanaf medio 2025)
A05 - Injectie
· Validatie van invoer
o Beginselen voor de validatie van invoer
o Blokkeerlijsten en toelatingslijsten
o Casestudie – Fout in de blokkeerlijst bij `urllib.parse.urlparse()`
o Wat moet worden gecontroleerd – het aanvalsoppervlak
o Waar moet er worden gecontroleerd – meerlaagse beveiliging
o Wanneer moet er worden gevalideerd – validatie versus transformaties
· SQL-injectie
o Basisprincipes van SQL-injectie
o Lab – SQL-injectie
o Aanvalstechnieken
o Inhoudsgebaseerde blinde SQL-injectie
o Tijdgebaseerde blinde SQL-injectie
o Aanbevolen werkwijzen voor SQL-injectie
- Invoercontrole
- Geparametriseerde query's
- Lab – Gebruik van voorbereide instructies
- Casestudie – SQL-injectie gericht tegen de beveiliging van een Amerikaanse luchthaven
· Code-injectie
o Code-injectie via input()
o OS-opdrachtinjectie
- Lab – Commando-injectie
- Aanbevolen werkwijzen voor het voorkomen van OS-command-injectie
- Command-injectie voorkomen met de juiste API’s
- Lab – Aanbevolen werkwijzen voor commando-injectie
- Lab – Experimenteren met commando-injectie in GenAI
- Casestudy – Shellshock
- Lab - Shellshock
- Casestudy – Command-injectie in Ivanti-beveiligingsapparaten
· HTML-injectie – Cross-site scripting (XSS)
o Basisprincipes van cross-site scripting
o Soorten cross-site scripting
- Aanhoudende cross-site scripting
- Gereflecteerd cross-site scripting
- Cross-site scripting aan de clientzijde (op basis van DOM)
o Lab – Opgeslagen XSS
o Lab – XSS via reflectie
o Casestudy – Van XSS naar RCE in Teltonika-routers
o Aanbevolen werkwijzen voor XSS-beveiliging
- Beschermingsbeginselen - ontsnappen
- Lab – XSS-oplossing / opgeslagen
- Lab – XSS-oplossing / gereflecteerd
- Casestudy – XSS-kwetsbaarheden in DrayTek Vigor-routers
Dag 3
De OWASP Top Ten 2025
A06 - Onveilig ontwerp
· Het STRIDE-model voor bedreigingen
· Beveiligingsontwerpprincipes van Saltzer en Schroeder
o Mechanisme-efficiëntie
o Veilige standaardinstellingen
o Volledige bemiddeling
o Open ontwerp
o Scheiding van bevoegdheden
o Minimaal bevoegdheidsniveau
o Het minst voorkomende mechanisme
o Psychologische aanvaardbaarheid
· Beveiliging aan de kant van de gebruiker
o Sandboxing van frames
- Cross-Frame Scripting (XFS)-aanvallen
- Lab – Clickjacking
- Aanbevolen werkwijzen voor bescherming tegen clickjacking
- Lab – CSP gebruiken om clickjacking te voorkomen
A07 - Fouten bij authenticatie
· Authenticatie
o Basisprincipes van authenticatie
o Meervoudige authenticatie (MFA)
o Casestudy – De InfinityGauntlet-aanval
· Wachtwoordbeheer
o Wachtwoorden van accounts opslaan
o Wachtwoord tijdens verzending
o Lab – Is het hashen van wachtwoorden alleen voldoende?
o Woordenboekaanvallen en brute-force-aanvallen
o Zouten
o Adaptieve hashfuncties voor het opslaan van wachtwoorden
o Lab – Adaptieve hashfuncties gebruiken in Python
o Lab – Experimenteren met adaptieve hashfuncties in GenAI
· Wachtwoordbeleid
o NIST-vereisten voor authenticatiemiddelen voor opgeslagen geheime gegevens
o Migratie van de wachtwoorddatabase
A08 - Storingen in de integriteit van software en gegevens
· Integriteit van subbronnen
o JavaScript importeren
o Lab – JavaScript importeren
o Casestudy – Het datalek bij British Airways
· Onveilige deserialisatie
o Uitdagingen op het gebied van serialisatie en deserialisatie
o Integriteit – deserialiseren van onbetrouwbare streams
o Deserialisatie met pickle
o Lab – Deserialiseren met Pickle
o Casestudy – De beveiliging van de toeleveringsketen voor machine learning
o Casestudy – De eerste golf van aanvallen op de toeleveringsketen: RCE via ‘pickle’ (2022)
o Casestudie – Inbreuk op de Hugging Face Hub-repository
o Integriteit – aanbevolen werkwijzen voor deserialisatie
A10 - Onjuiste aanpak van uitzonderlijke omstandigheden
· Beginselen voor het afhandelen van fouten en uitzonderingen
· Foutafhandeling
o Een misleidende statuscode retourneren
o Openbaarmaking van informatie via foutmeldingen
- Informatielekken via foutpagina's
- Lab – Informatielek bij de kolf
- Casestudie – Informatielekken door fouten in Apache Superset
· Afhandeling van uitzonderingen
o In het `except`-blok. En wat nu?
o Leeg, behalve het blok
o Lab – Een puinhoop bij het afhandelen van uitzonderingen
Samenvatting
Principes voor veilig programmeren
· Principes van robuuste programmering door Matt Bishop
En wat nu?
· Bronnen over softwarebeveiliging en aanvullende literatuur
· Python-bronnen
· Generatieve AI – Bronnen en aanvullende richtlijnen.