Development

Security
wanhoop

Programmeertalen bevatten nu ook al lekken

Schrijf je code met alle aandacht voor veiligheid, blijkt de programmeertaal fouten te introduceren

© CC BY 2.0 - Flickr Pabak Sarkar
12 december 2017

Schrijf je code met alle aandacht voor veiligheid, blijkt de programmeertaal fouten te introduceren

De code kan maar zo veilig zijn als de programmeertalen die je gebruikt. IOActive ontdekte fouten in de interpreters van vijf veelgebruikte programmeertalen.

IOActive ontdekte de fouten bij een onderzoek naar een weinig gebruikt type geautomatiseerde codetesters zogeheten extended differential 'fuzzers'. Uit het onderzoek blijkt dat Python, Perl, NodeJS, JRuby en PHP allemaal kwetsbaarheden bevatten die door hackers misbruikt kunnen worden.

Fuzzers

IOActive gebruikte voor het onderzoek hybrid 'fuzzers'. De meest gebruikte 'fuzzers' in beveiligingsonderzoek zijn geautomatiseerde codetesters die ongeldige invoer, onverwachte of random data genereren als input voor de te testen software. Vervolgens wordt gekeken of het programma gaat 'hangen' of geheugenlekken vertoont.

Daarnaast bestaan zogeheten 'differential fuzzers'. Die voeren twee of meer implementaties uit van de te testen code en analyseren wat het effect is van de 'fuzzy' data ten opzichte van normale uitvoer van het programma. Hoe wel er een harde scheidslijn lijkt te zijn tussen 'gewone' fuzzers en differential fuzzers, is er ook nog een hybride vorm waarbij de analysetechnieken van beiden worden ingezet. Het onderzoek van IOActive richtte zich op de inzet van een nieuw type hybrid fuzzer (extended differential fuzzer) die in staat is kwetsbaarheden te ontdekken in individuele stukken software en in verschillende stukken software die hetzelfde gedrag vertonen.

  • Python bevat een aantal ongedocumenteerde methoden en variabelen voor gebruik in een local environment die kwaadwillenden in staat stelt opdrachten door het besturingssysteem te laten uitvoeren.
  • Perl heeft een typemaps function die het mogelijk maakt code uit te voeren als eval().
  • NodeJS geeft foutmeldingen die aangeven of een bestand op de server aanwezig is en bovendien de eerste regels code van bestanden op de server kunnen onthullen. Dat biedt  hackers mogelijk handvatten voor verdere acties.
  • JRuby kan remote code uitvoeren op een functie die niet ontworpen is voor het uitvoeren van remote code. De fout zit in de Java-implementatie van de Ruby programmeertaal en niet in de standaard versie.
  • De PHP benaming van constanten kunnen misbruikt gebruikt worden om extern gegeven commando's uit te voeren op het besturingssysteem.

IOActive gaat er van uit dat de gevonden kwetsbaarheden het gevolg zijn van menselijke fouten of pogingen software-ontwikkeling te vereenvoudigen en dat er geen sprake is van opzettelijk geïntroduceerde kwetsbaarheden. Het probleem is dat deze kwetsbaarheden gevolgen hebben voor reguliere applicaties die met de betreffende interpreters worden geparsed. Fernando Arnaboldi, de senior security consultant van het beveiligingsbedrijf beveelt daarom een snelle reparatie van de interpreters aan.

Een uitgebreide documentatie van de fouten staat in de whitepaper die IOActive heeft gepubliceerd. Arnaboldi concludeert verder dat het gebruik van extended differential fuzzers heel geschikt is voor de foutanalyse van vergelijkbare implementaties zoals programmeertalen, software standaarden, webbrowsers en cryptografische libraries.

Bekijk ook de update
Lees meer over Development OP AG Intelligence
1
Reacties
Hans 13 december 2017 04:15

Het is echt niet zo moielijk om met wat tools je software te controleren hoor!! Het is het problem van de ontwikkelaar cq leverancier dat die hier geen tijd in wil steken omdat het verkopen nou eenmaal belangrijker is.

Reactie toevoegen
De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.