Ruby on Rails is een open source applicatieontwikkelingraamwerk waarmee de presentatielaag van (web)applicatie geprogrammeerd kan worden. Ondanks het recent gevonden lek heeft het framework verschillende voordelen. Het platform kent echter ook verschillende nadelen.
De belangrijke voordelen ten opzichte van andere programmeerraamwerken zoals Java (spring/struts/faces) en PHP/memcached zijn:
• Het is relatief makkelijk te programmeren waardoor er een lagere instapdrempel is.
• Het heeft een snellere implementatietijd.
• Het is een geschikt systeem voor websites en applicaties die een lange levensduur vereisen.
• Het raamwerk heeft een zeer actieve wereldwijde gebruikerscommunity die bestaat uit softwareontwikkelaars die de passie voor effectief webdevelopment delen.
Ruby on Rails heeft echter ook nadelen:
• De applicaties die in Ruby on Rails zijn ontwikkeld vergen meer resources dan een vergelijkbare applicatie in Java.
• Het ontbreken van een standaard veiligheidsmodel in Ruby on Rails. Alle beveiligingfeatures in Ruby on Rails moeten handmatig worden geprogrammeerd, wat potentiële veiligheidsfouten in de hand werkt.
Volgens Ruby on Rails zijn er de volgende veiligheidslekken gevonden:
• CVE-2013-0155: JSON-string met null zorgt er voor dat de sql die het platform uitvoert gemanipuleerd kan worden. Hierdoor zouden onverwachte zaken kunnen gebeuren afhankelijk van de gebruikte code in DigiD.
• CVE-2013-0156: Door een bug in de parameter parser kan een aanvaller objecten van type (recast) laten uitvoeren. Hierdoor kunnen ddos en het invoeren van willekeurige sql’s plaatsvinden. Dit kan een grote bedreiging vormen voor de veiligheid van onderliggende applicaties.
Ruby heeft hiervoor inmiddels patches uitgebracht.
Exploits maken misbruik
Inmiddels zijn er exploits online verschenen die misbruik maken van het beveiligingslek in Ruby on Rails. Via de exploits kan een aanvaller willekeurige code, sql-injectie en een denial of service uitvoeren, alsmede de authenticatie omzeilen. Aangezien de update voor het lek in Rails pas sinds 8 januari 2013 beschikbaar is, is het goed mogelijk dat nog niet alle systeembeheerders hun installaties hebben bijgewerkt.
Het veiligheidslek is door Ruby on Rails zelf gemeld en de community van ontwikkelaars heeft een fix beschikbaar gesteld om het lek te dichten. Het is verder aan de gebruiker/afnemer zelf om de impact van het issue te bepalen en een afweging te maken over hoe snel de update uitgevoerd moet worden. DigiD heeft in ieder geval die afweging gemaakt en besloten de patch tijdig te installeren.
Vol met bugs
In principe kan dit probleem bij elk ander ontwikkelraamwerk zich voordoen. Het streven naar een systeem dan 100 procent veiligheid kan garanderen is, vanwege te hoge vaak niet acceptabele kosten en te lange implementatietijd, niet realistisch. Voorbeeld van een enorm duur ontwikkeltraject met de hoogste security en betrouwbaarheid in Nederland is het Beslissingsondersteunend Systeem van de Maeslantkering. (https://zoek.officielebekendmakingen.nl/kst-30800-A-6-b2.html) Deze bleek toch vol met bugs te zitten. Dit is een duidelijke indicatie dat het bijna onmogelijk is om alle technische fouten weg te krijgen.
Het belangrijkste is dat in het veiligheidsplan een doordachte afweging wordt gemaakt tussen de kans dat een veiligheidsrisico zich zou kunnen voordoen, de impact daarvan op de dienstverlening en het vaststellen van de hersteltijd in het geval een issue zich voordoet.
Bram Haasnoot
Algemeen directeur
RealOpen IT