Zwakke plekken in software te voorkomen

Erik Poll: 'Programmeurs leren niet om veilig te ontwikkelen'

02-12-2005 00:00 | Door Koen Stegeman | Lees meer artikelen over: C++ | Er zijn nog geen reacties op dit artikel | Permalink

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
92 vacatures
docent Software Engineering

Hogeschool van Amsterdam , Amsterdam

Developer

Matthat Sofware B.V. , Gouda

Web Developer ASP.NET C# (Medior / Senior)

NiDiDo BV , Barneveld

PHP Programmeur

BWSS B.V. , Deventer

.NET (C#) Programmeur

Let's build IT , Hoorn NH

Top 10 Reagerende members
  Aantal reacties
met 3+ sterren
Gemiddelde
waardering
Klik voor meer info1 1575 6.2
Klik voor meer info2 1305 6.0
Klik voor meer info3 1272 6.2
Klik voor meer info4 1072 6.2
Klik voor meer info5 1000 6.1
Klik voor meer info6 901 6.1
Klik voor meer info7 755 6.2
Klik voor meer info8 528 6.1
Klik voor meer info9 405 6.2
Klik voor meer info10 399 6.0