Inputvalidatie
Inputvalidatie zorgt ervoor dat alleen correct geformatteerde gegevens een informatiesysteem binnenkomen, waardoor storingen in downstream-componenten worden voorkomen. Het negeren van inputvalidatie kan leiden tot aanzienlijke gevolgen.
Het 2024 CrowdStrike incident
Op 19 juli 2024 verspreidde het Amerikaanse cybersecuritybedrijf CrowdStrike een defecte update van een configuratie- (of channel-)bestand voor zijn beveiligingssoftware, wat wijdverspreide problemen veroorzaakte met computers die Microsoft Windows draaiden. Als gevolg hiervan crashten ongeveer 8,5 miljoen systemen en konden niet goed opnieuw opstarten, in wat wordt beschouwd als de grootste uitval in de geschiedenis van informatietechnologie.
De CrowdStrike-fout was een samengestelde fout. Een fout die voorkomen had kunnen, en moeten, worden door meerdere stappen in het bedrijfsproces.
Hoe inputvalidatie de uitval had kunnen voorkomen
CrowdStrike biedt zijn klanten een kernel-driver genaamd
Falcon Sensor. De storing werd niet veroorzaakt door een
update van deze kernel-driver, maar door een configuratie-updatebestand
dat het gebruikt. Het bleek dat dit “channel” bestand onjuiste gegevens
bevatte en enkel uit nullen bestond. Dit veroorzaakte een logische fout
in de CrowdStrike Falcon Sensor, wat resulteerde in een blue screen of
death en leidde tot de uitval van 8,5 miljoen apparaten
wereldwijd.
Door de juiste inputvalidatie toe te passen, had de
Falcon Sensor de crash kunnen voorkomen. Het programma zou
moeten uitgaan van de mogelijkheid dat het invoerbestand foutief kan
zijn. Zie het OWASP Input
Validation Cheat Sheet voor praktische richtlijnen over het bieden
van inputvalidatiebeveiligingsfunctionaliteit in uw toepassingen.
Samengestelde fout
Als dit voorkomen had kunnen worden door juiste inputvalidatie, waarom wordt het dan als een samengestelde fout beschouwd?
De uitval had ook voorkomen of verminderd kunnen worden als:
- De
Falcon Sensorexception handling had geïmplementeerd rond het laden van het configuratiebestand. - De
Falcon Sensorontwikkeld zou zijn met Test-driven Development, waarbij de ontwikkelaar mogelijk de mogelijkheid van een corrupt configuratiebestand zou hebben geïdentificeerd tijdens het schrijven van de tests. - De CI/CD-pijplijn bij CrowdStrike stappen voor het valideren van configuratiebestanden zou hebben geïmplementeerd.
- De CI/CD-pijplijn bij CrowdStrike gefaseerde adoptie zou hebben geïmplementeerd.
- Microsoft had besloten om geen kernel-drivers te ondertekenen waarvan het gedrag door configuratiebestanden kon worden gewijzigd.
- Microsoft had besloten om een proces te creëren voor het valideren van configuratiebestanden voor kernel-drivers.
- … en waarschijnlijk nog veel meer.
Deze lijst is bedoeld om te laten zien dat dit niet de fout van één persoon was, maar eerder een resultaat van een onvolledig bedrijfsproces.
“Een slecht systeem zal altijd een goed persoon verslaan.”
— W. Edwards Deming
Referenties
- Input Validation Sheet Sheet - OWASP
- File Content Validation - OWASP
- Error Handling Cheat Sheet - OWASP
- 2024
CrowdStrike incident - Wikipedia
- Workaround - CrowdStrike
- CrowdStrike Update: Latest News, Lessons Learned from a Retired Microsoft Engineer - YouTube: Dave’s Garage
- CrowdStrike IT Outage Explained by a Windows Developer - YouTube: Dave’s Garage
- Test-driven Development - Wikipedia
- CI/CD - Wikipedia
- Phased adoption - Wikipedia