A Comparative Study On The Security Of Open Source Web Content Management Systems

Steve
Bottelbergs

De veiligheid van WordPress, Joomla en Drupal onder de loep

De alomtegenwoordigheid van het internet is tegenwoordig niet meer weg te denken. Bijna iedereen heeft een account op websites als Facebook, Twitter en Instagram. Dit betekent dat men allerlei persoonlijke gegevens zoals naam, e-mailadres en wachtwoord verspreidt op het internet, veronderstelt dat deze veilig worden opgeslagen, en dat het gebruik van de websites zelf ook veilig is.

Veel mensen hebben ook een eigen website of blog waar ze hun creativiteit de vrije loop kunnen laten, of zijn geregistreerd op andere websites om op de hoogte te blijven van de laatste nieuwtjes. Velen zullen niet zelf een eigen website programmeren, maar grijpen naar zogenaamde content management systemen of CMS’en. Deze systemen voorzien alle functionaliteit om een eigen website op maat te maken zonder dat de beheerder zich zorgen hoeft te maken over de veiligheid of de interne werking van het systeem. Er kan ook altijd extra functionaliteit geïnstalleerd worden als plug- ins, om de website verder te personaliseren.

CMS’en kunnen gebruikt worden om blogs te bouwen, maar bijvoorbeeld ook om websites te bouwen die een band of jeugdvereniging promoten of om een eigen webwinkel op te zetten. Meer dan 30% van alle websites op het internet gebruiken een of ander CMS. De drie meest gebruikte zijn WordPress (gebruikt door o.a. Ebay), Joomla (gebruikt door o.a. MTV) en Drupal (gebruikt door o.a. Het Witte Huis). Dit is precies de reden waarom we onderzocht hebben hoe veilig deze drie veelgebruikte CMS’en zijn.

Ons onderzoek bestaat uit een vergelijkende studie tussen deze drie CMS’en op basis van de technieken die ze gebruiken om zich te beveiligen tegen de meest voorkomende veiligheidsrisico’s op het internet. Deze veiligheidsrisico’s zijn vooropgesteld door The Open Web Application Security Project of OWASP, een organisatie die zich bezighoudt met het verbeteren van de beveiliging van software. De OWASP Top 10 geeft een overzicht van de 10 gevaarlijkste en meest voorkomende veiligheidsrisico’s op het internet. De top 10 bestaat uit de volgende veiligheidsrisico’s:

1. Injection

Dit type van veiligheidsrisico maakt het mogelijk om gegevens te bemachtigen die normaal afgeschermd zijn, bijvoorbeeld in een database. Meestal gebeurt dit door programmacode te injecteren, bijvoorbeeld in een zoekveld op een webpagina. Als de applicatie niet veilig omspringt met de gegevens die ze ontvangt van haar bezoekers kan een kwaadwillige bezoeker hier misbruik van maken om gegevens te stelen of aan te passen.

2. Broken Authentication and Session Management

Veel websites voorzien een mechanisme waarmee men zich kan inloggen, hetgeen vaak werkt met behulp van cookies, kleine gegevenspakketjes die worden opgeslagen op de computer. Sessie cookies kunnen gebruikt worden om een bepaald ID in op te slaan, wat de website vervolgens gebruikt om

een bezoeker te identificeren. Als men het ID van een bepaalde bezoeker kan achterhalen kan men zich voordoen als die bezoeker en toegang krijgen tot diens gegevens.

3. Cross-Site Scripting (XSS)

Websites kunnen scripts bevatten die in de browser worden uitgevoerd, bijvoorbeeld JavaScript. Deze zorgen er bijvoorbeeld voor dat dynamische handelingen mogelijk zijn zoals het tonen van nieuwe meldingen op Facebook. Indien men de website niet goed beveiligt, is het mogelijk dat een kwaadwillige gebruiker zelf scripts kan toevoegen, bijvoorbeeld om de sessie cookie van iemand anders te stelen.

4. Insecure Direct Object References

Vaak bevatten websites onderdelen die niet publiek toegankelijk zijn voor iedereen. Er moeten dus veilige mechanismen aanwezig zijn die ervoor zorgen dat deze afgeschermd blijven van iedereen zonder de juiste toestemming.

5. Security Misconfiguration

Een CMS voorziet verschillende instellingen die een administrator kan aanpassen. Het is belangrijk dat de standaard instellingen veilig zijn, zodat het CMS meteen veilig gebruikt kan worden.

6. Sensitive Data Exposure

Gegevens enkel afgeschermd bewaren is niet voldoende. Het is bijvoorbeeld mogelijk dat er een fout in het systeem zit waardoor men toegang krijgt tot de database en alle wachtwoorden kan lezen. Deze moeten dus geëncrypteerd worden opgeslagen, wat wil zeggen dat ze zo vervormd moeten worden dat ze niet achterhaald kunnen worden, zelfs als ze gestolen worden.

7. Missing Function Level Access Control

Dit type veiligheidsrisico is sterk gerelateerd aan Insecure Direct Object References. Het is bijvoorbeeld niet voldoende om gewoonweg geen link te tonen naar onderdelen die niet gezien mogen worden door onbevoegden. Function Level Access Control houdt in dat er achterliggend in de web applicatie ook mechanismen aanwezig moeten zijn die nagaan of een bepaald verzoek al dan niet wordt toegestaan.

8. Cross-Site Request Forgery (CSRF)

Een website moet kunnen achterhalen of een bepaald verzoek van een gebruiker afkomstig is, en dat hij deze handeling ook effectief wilde uitvoeren. Het zou bijvoorbeeld niet mogelijk mogen zijn dat iemand op een andere website op een link klikt en ineens uitgelogd is op zijn eigen website.

9. Using Components with Known Vulnerabilities

Eerder werd al vermeld dat een CMS uitgebreid kan worden door plug-ins te installeren. Deze kunnen echter ook fouten bevatten, waardoor de website onveilig kan worden. Het is belangrijk dat men weet welke plug-ins al dan niet onveilig zijn, en dat deze ook gemakkelijk geüpdatet moeten kunnen worden.

10. Unvalidated Redirects and Forwards

Een web applicatie kan bezoekers doorsturen naar andere pagina’s, bijvoorbeeld om na het inloggen naar de homepage van de website gestuurd te worden. Als dit doorsturen afhankelijk is van parameters die door iedereen aangepast kunnen worden, kan deze functionaliteit misbruikt worden om bezoekers bijvoorbeeld naar een andere website te sturen waar gegevens gestolen kunnen worden.

Uit ons onderzoek blijkt dat deze CMS’en wel degelijk mechanismen bevatten om deze risico’s te beperken of te voorkomen. Soms zijn deze technieken vergelijkbaar, maar soms ook zeer verschillend. Uit statistieken blijkt dat er meer fouten gevonden worden in plug-ins, maar ondanks alle pogingen om de standaard systemen te beveiligen, worden er toch regelmatig veiligheidsfouten gevonden in de basisfunctionaliteit. Daarom is het belangrijk om steeds alle onderdelen up to date te houden, zodat er zo weinig mogelijk kwetsbaarheden geëxploiteerd kunnen worden. CMS’en waarbij er geautomatiseerde updatesystemen aanwezig zijn, zijn daarom meer aangewezen voor onervaren gebruikers. 

 

Download scriptie (1.17 MB)
Universiteit of Hogeschool
Universiteit Hasselt
Thesis jaar
2013