PHP onder cgi is kwetsbaar door ernstige bug

2016-01-18 03:01:58

 PHP-installaties die via cgi worden aangeroepen, kunnen eenvoudig worden misbruikt. Op afstand kunnen argumenten aan het cgi-script worden toegevoegd, waardoor bijvoorbeeld code kan worden uitgevoerd of de broncode gedumpt.

PHPOmdat alleen PHP-installaties die php-cgi gebruiken of via een cgi-wrapper draaien kwetsbaar zijn, valt de impact mee: vaker wordt PHP als Apache-module of via fastcgi geconfigureerd. Wel gebruiken sommige shared hosting-providers nog de - overigens weinig efficiënte - php-cgi-implementatie of cgi-wrappers.

De ict-beveiligingsorganisatie van de Amerikaanse overheid waarschuwt dat hackers gevoelige informatie kunnen binnenhalen, een denial of service kunnen veroorzaken of eigen code kunnen uitvoeren. Bovendien is er nog geen officiële oplossing voor het probleem, hoewel het PHP-team aan een patch zou werken.

Kwetsbare PHP-installaties kunnen eenvoudig worden misbruikt: command line-argumenten kunnen als query string worden meegegeven. Om bijvoorbeeld de broncode van 'index.php' integraal uit te draaien, is het opvragen van '/index.php?-s' voldoende.

De kwetsbaarheid is begin januari ontdekt door De Eindbazen, een groep beveiligingsonderzoekers. Aanvankelijk werd door de groep geheimhouding beloofd, maar toen een PHP-ontwikkelaar de bug-report per ongeluk integraal publiceerde, besloten De Eindbazen om hun ontdekkingen uit de doeken te doen. Tevens hebben ze twee patches vrijgegeven.

Ook websites die onder PHP's safe_mode draaien, wat bij veel shared hosting-providers het geval is, zijn kwetsbaar als ze onder een cgi-wrapper draaien. Wel kunnen onder cgi5 bepaalde omgevingsvariabelen verhinderen dat er code wordt uitgevoerd - maar dat is volgens De Eindbazen eenvoudig te voorkomen.

Opvallend is dat PHP tot 2004 ingebouwde beveiliging bevat om uitvoeren van code via de command line tegen te gaan, maar dat die naderhand is verwijderd. Tegelijkertijd doet de officiële documentatie van PHP nog steeds voorkomen alsof die beveiliging is ingebouwd.