| 

.NET C# Java Javascript Exception

6
curl hat in der aktuell verwendeten Version im stabilen Ubuntu 13.10 einen Bug, der sich auch rein bis in die PHP-Scripte auswirkt. Wenn man bei der Nutzung von curl die Authentifizierung nutzt und im Passwort ein Semikolon enthalten ist (was gute Passwörter ja so an sich haben), dann wird dieses Passwort abgeschnitten. Folgender Beispielcode: Es wird […]

CURLcurl hat in der aktuell verwendeten Version im stabilen Ubuntu 13.10 einen Bug, der sich auch rein bis in die PHP-Scripte auswirkt.

Wenn man bei der Nutzung von curl die Authentifizierung nutzt und im Passwort ein Semikolon enthalten ist (was gute Passwörter ja so an sich haben), dann wird dieses Passwort abgeschnitten. Folgender Beispielcode:

$curlSettings[CURLOPT_HTTPAUTH] = CURLAUTH_BASIC;
$curlSettings[CURLOPT_USERPWD] = '1testuser' . ':' . 'pass;word';

$curl = curl_init('http://www.phpgangsta.de/download/curl_auth_test.php');
 // content: echo 'Password: '.$_SERVER['PHP_AUTH_PW'];
curl_setopt_array($curl, $curlSettings);

curl_exec($curl);
// should output: Password: pass;word
// wrong output: Password: pass

Es wird mittels des curl-Parameters CURLOPT_USERPWD der Username und das Passwort übertragen, und wie man an der Antwort des Servers sieht kommt nur das Passwort bis zum Semikolon beim Server an, es wird abgeschnitten.

Nach ein paar Tests auf unterschiedlichen Systemen stand fest: es liegt nicht an PHP, sondern an der verwendeten curl-Library:

not affected: 5.4.14 (curl 7.19.7)
affected: 5.5.3-1ubuntu2.1 (curl 7.32.0)
not affected: 5.5.3 (curl 7.22.0)
affected: 5.5.9 (curl 7.32.0)
not affected: 5.5.9 (curl 7.22.0)
not affected: 5.6-alpha2 (curl 7.22.0)

Dann habe ich mir das Changelog angeschaut von curl, um zu sehen ob es bereits in 7.35.0 behoben ist. Folgender Eintrag in Version 7.34.0 behebt den Fehler:

login options: remove the ;options support from CURLOPT_USERPWD

http://sourceforge.net/p/curl/bugs/1311/

Zur Sicherheit habe ich es noch selbst getestet, curl in Version 7.35.0 herunterladen, kompiliert und getestet:

wget http://curl.haxx.se/download/curl-7.35.0.tar.gz
tar -xzvf curl-7.35.0.tar.gz
cd curl-7.35.0
./configure
make
src/curl --basic --user "1testuser:pass;word" http://www.phpgangsta.de/download/curl_auth_test.php

7.35.0 ist fehlerfrei.
7.34.0 ist fehlerfrei.
7.33.0 ist fehlerhaft.

Leider gibt es noch kein Update für Ubuntu 13.10.

Der Workaround:

Seit curl 7.19.1 kann man Username und Passwort einzeln übergeben, und PHP beherrscht das seit Version 5.5.0 auch. Statt

$curlSettings[CURLOPT_USERPWD] = '1testuser' . ':' . 'pass;word';

sollte man nun also

$curlSettings[CURLOPT_USERNAME] = '1testuser';
$curlSettings[CURLOPT_PASSWORD] = 'pass;word';

nutzen, da tritt das beschriebene Problem nicht auf, auch mit den fehlerhaften Versionen von curl nicht.

php bug php-5.5 curl semikolon-im-passwort
Weitere News:
Schreibe einen Kommentar:
Themen:
semikolon-im-passwort curl php-5.5 bug php
Entweder einloggen... ...oder ohne Wartezeit registrieren
Benutzername
Passwort
Passwort wiederholen
E-Mail