211service.com
Het echte softwarebeveiligingsprobleem zijn wij
Een collega beschreef onlangs een leuke vrijdagavond voor zijn tienerzoon: thuisblijven en online chatten. Af en toe is er een feestje waar al zijn vrienden op hun laptop praten.
We raken steeds meer gewend aan het leven in dergelijke virtuele ruimtes, maar er moet een belangrijk onderscheid worden gemaakt tussen virtuele ruimtes en de daadwerkelijke fysieke ruimtes waarin we rondlopen. Meestal verwachten we dat we over een brug of een gebouw kunnen lopen zonder dat de structuur instort. Dat vertrouwen hebben we niet met softwareprogramma's.
Geloof het niet, we zouden in de niet zo verre toekomst echt in een wereld kunnen leven waar software niet willekeurig en catastrofaal faalt. Onze softwaresystemen waren bestand tegen aanvallen. Onze privé-sociale media en gezondheidsgegevens konden alleen worden bekeken door degenen met toestemming om deze te zien. Het enige dat we nodig hebben, zijn de juiste oplossingen.
Het probleem met moderne software is dat we onze wolkenkrabbers hebben gebouwd met dezelfde materialen en technieken die gebruikt zijn om hutten te bouwen. Software begon als een verzameling stenen: eenvoudige procedures, reeksen opdrachten voor berekeningen, spelletjes en curiosa. Decennia later hebben we miljoenen procedures die met elkaar communiceren op onderling verbonden machines met toegang tot allerlei soorten geheime informatie. Toch gebruiken we nog steeds vergelijkbare talen en tools.
Als we willen dat onze systemen minder kwetsbaarheden hebben, moeten we betere bouwmaterialen gebruiken. De talen die mensen tegenwoordig gebruiken, maken het de programmeur te gemakkelijk om fouten te maken, en ze maken het te moeilijk om de fouten op te sporen.
Een betere manier zou zijn om talen te gebruiken die de garanties bieden die we nodig hebben. De Heartbleed-kwetsbaarheid deed zich voor omdat iemand vergat te controleren of een stuk geheugen eindigde waar het hoorde. Dit kan alleen gebeuren in een programmeertaal waar de programmeur verantwoordelijk is voor het geheugenbeheer. Dus waarom geen talen gebruiken die het geheugen automatisch beheren? Waarom niet de programmeertalen het zware werk laten doen?
Een andere manier zou zijn om software gemakkelijker te analyseren te maken. Facebook had zoveel moeite om de gebruikte software te begrijpen dat het Hack and Flow, geannoteerde versies van PHP en Javascript, heeft gemaakt om de twee talen begrijpelijker te maken.
Dit is deels onze eigen schuld. We vinden het online leven leuk, dus we hebben de neiging om sites te laten doen wat ze willen met onze persoonlijke gegevens. Softwarebedrijven reageren door zo snel mogelijk nieuwe functies te ontwikkelen, met gebruikmaking van de handigste materialen en tools ten koste van de beveiliging.
Verandering zal pas plaatsvinden als we eisen dat het gebeurt. Onze software kan net zo goed gebouwd en betrouwbaar zijn als onze gebouwen. Om dat mogelijk te maken, moeten we allemaal technische degelijkheid belangrijker vinden dan nieuwigheid. Het is aan ons om het online leven net zo veilig als plezierig te maken.
Jean Yang is een assistent-professor computerwetenschappen aan de Carnegie Mellon University en medeoprichter van Cybersecurity Factory, een accelerator gericht op softwarebeveiliging.