“‘Databasemodule Perl laat ruimte voor sql-injecties’ – update”

0
353

De veelgebruikte databasemodule dbi van Perl laat ruimte voor sql-injecties, door de onvoorspelbare manier waarop Perl met lists omgaat. Dat zorgde er onder meer voor dat het cms Movable Type kwetsbaar was voor sql-injecties.

Het beveiligingsprobleem wordt volgens beveiligingsonderzoeker Netanel Rubin van Check Point veroorzaakt door de niet altijd even intuïtieve manier waarop Perl omgaat met lists in combinatie met gebruikersinvoer. Rubin deed zijn bevindingen uit de doeken op de CCC-beveiligingsconferentie in Hamburg.

Als een gebruiker handmatig meerdere parameters ingeeft maakt Perl er een list van. Wanneer de invoer van de gebruiker al wordt verwerkt in een list, worden de extra parameters toegevoegd aan de list, wat onverwachte situaties en zelfs beveiligingsproblemen kan opleveren.

In het geval van de veelgebruikte database-module dbi van Perl betekent dit dat quote, een functie die kan worden aangeroepen om sql-injecties te voorkomen door gebruikersinvoer te strippen van aanhalingstekens, niet meer goed werkt als een gebruiker meerdere parameters toevoegt aan een request. Aanhalingstekens worden dan soms namelijk niet meer gestript, waardoor een gebruiker eigen code in sql-commando’s kan verstoppen.

Onder meer het veelgebruikte cms Movable Type, dat door veel grote websites wordt gebruikt, was daardoor kwetsbaar voor sql-injecties. Imiddels is dat specifieke beveiligingsprobleem opgelost, maar nog veel sites met Perl zijn kwetsbaar. “Zoek maar eens op Github naar Perl-scripts met ‘quote'”, aldus Rubin. Sites die op Perl en dbi leunen kunnen beter de prepare-functie gebruiken om sql-injectie te voorkomen.

Eerder bleek al dat de tegenintuïtieve manier waarop Perl met lists omgaat ervoor zorgde dat gebruikers zichzelf toegang konden verschaffen tot Bugzilla, de bugtracker-tool die onder meer door het Linux-kernelproject en Mozilla zelf wordt gebruikt. Dat beveiligingsprobleem is inmiddels opgelost. In de opensource-wiki-software Twiki konden aanvallers door hetzelfde probleem eigen code injecteren.

De werking van de lists-functie is weliswaar vastgelegd in de documentatie, maar is niet intuïtief, aldus Rubin. “Het is de schuld van de programmeur”, erkent Rubin. ‘Iedereen’ doet het echter verkeerd, tekent hij aan. Rubin riep aanwezige programmeurs op de hackersconferentie, die tot dinsdag duurt, op om te stoppen met het gebruik van Perl. Volgens de beveiligingsonderzoeker is Perl onveilig en sterk verouderd.

Update, 11:36: Volgens Perl-ontwikkelaar Juerd Waalboer ligt het probleem niet aan Perl of dbi, maar aan de cgi-module van Perl, een manier om Perl aan een webserver te knopen. “De fout is dat de CGI-module een interface heeft die op een bijzonder onhandige manier gebruik maakt van die fundamentele feature in Perl”, aldus Waalboer. Dat levert in de praktijk een flink aantal kwetsbaarheden op, waaronder in dbi.