Softwareprogrammeurs maken veel fouten. Te veel, zegt dr. Erik Poll van de Radbouduniversiteit in Nijmegen. “In C en C++ zullen altijd fouten gemaakt blijven worden, maar veel ervan kunnen voorkomen worden.”
Standaardfouten in de C++-methode liggen volgens Erik Poll, onderzoeker op het gebied van softwarebeveiliging aan de Radboud Universiteit in Nijmegen, aan de wortel van de meeste beveiligingsproblemen. Bufferoverflows zijn al decennia lang de meest voorkomende reden dat software gemakkelijk gehackt kan worden. Problemen met bufferoverflows manifesteren zich vooral in de functie om strings te manipuleren, onder andere in C Library-functies. Wormenschrijvers gaan juist daar naar op zoek, terwijl er toch al jaren lang vele middelen voor handen zijn om hier iets aan te doen. Is het gewoon slordigheid, of is het onkunde? “Veel programmeurs zijn zich gewoon niet bewust van deze problemen”, zegt Poll. “Zij worden daar in eerste instantie niet op afgerekend. Soms wordt bepaalde apparatuur pas een paar jaar na het ontwikkelen aan het internet gehangen. Pas dan blijkt er een probleem te zijn. In bedrijven wordt het probleem vaak onvoldoende aangepakt. Men heeft het druk met deadlines en natuurlijk is er een afnemende return-on-investment om alle fouten uit software te halen. Het wordt wel een groter probleem, nu alle software in netwerken aan elkaar wordt gehangen.”
Hiaten in opleiding
Programmeurs zijn zich niet bewust van de problemen, stelt Poll, er is ook een gebrek aan kennis en dat begint al in de collegebanken, wat vooral te wijten zou zijn aan hiaten in het onderwijsprogramma. In het curriculum op universiteiten ligt de prioriteit verkeerd. “Wanneer je een willekeurig boek over computerbeveiliging openslaat, dan is er veel aandacht voor cryptografie”, zegt Poll. “Dat is logisch, want dit is een volwassen deel van de wiskunde. Maar cryptografie is niet de zwakste schakel. Daar liggen niet zozeer de beveiligingsproblemen. Meestal worden hele gewone programmeerfouten, vaak in C++, geëxploiteerd. In C en C++ zullen altijd fouten gemaakt blijven worden, maar er zouden wel meer fouten dan nu voorkomen kunnen worden.”
In programmeeropleidingen zou beveiliging zelfs een ondergeschikte rol spelen. Poll: “Als je geluk hebt, dan zegt een docent dat je bepaalde library-methoden niet moet gebruiken, maar ik vraag mij sterk af hoe vaak en of dit daadwerkelijk gebeurt. In programmeeropleidingen is beveiliging gewoon geen issue.”
Poll hoopt dat Microsoft verandering kan brengen in de huidige problemen. Natuurlijk heeft Microsoft ook lange tijd zijn beveiligingsproblemen onderschat, waardoor gebruikers na aankoop allerlei patches en servicepacks moesten downloaden. Microsoft is nu wel fanatiek in het stimuleren van onderwijs op dit gebied. Poll: “Microsoft is allerlei onderwijsprogramma’s op het gebied van softwarebeveiliging aan het opzetten. Zij zien dat blijkbaar als lacune in de huidige opleiding en proberen er iets aan te doen.”
De gemakkelijkste manier om de huidige beveiligingsproblemen op te lossen, zou zijn om allemaal in Java en C# te gaan programmeren. “Er zouden dan meer fouten voorkomen kunnen worden, die eigenlijk allemaal zijn toe te schrijven aan C en C++”, zegt Poll. “Nu zullen sommige mensen natuurlijk zeggen dat Java en C# twee keer zo langzaam zijn, maar als je elke maand patches moet uitbrengen, of oude codes moet reviewen, dat kost ook veel tijd.”
Koen Stegeman