Paypal behebt Path Traversal Lücke

Paypal ist wohl der bekannteste Onlinebezahldienste und ist eines der Unternehmen, welche ein Bug Bounty Programm anbieten. Wir konnten im Rahmen dieses Programms eine sehr kritische Sicherheitslücke bei Paypal aufdecken. Die Lücke und den Hergang möchten wir nun ein wenig schildern, um deutlich zu machen, dass selbst die größten IT-Unternehmen der Welt über kritische Lücken verfügen können, und die Schließung teilweise mehrere Monate in Anspruch nehmen können.

Paypal ist ein Online-Bezahlsystem, welches sich weltweit großer Beliebtheit erfreuen kann. Allein in Deutschland gibt es über 15 Millionen Kundenkonten, weltweit sogar über 230 Millionen. Das Unternehmen wurde im Jahr 1998 gegründet und 2002 von ebay erworben. Heute wird Paypal auf vielen Webseiten und Onlineshops als Bezahldienst genutzt.

Bei der Sicherheitslücke handelte es sich um eine sog. Path-Traversal-Lücke (auch Directory-Traversal-Lücke genannt)‎. Dabei kann der Angreifer beliebige (System-) Dateien vom Server herunterladen. Der Angreifer muss dazu nur den Pfad zur Dateien kennen bzw. diesen durch Brute-Force erraten. Die Sicherheitslücke entdeckten wir im Quelltext einer Paypalseite, denn dort wurde auf die Paypal API zugegriffen, um Dateien vom Server herunterzuladen und in die Seite einzubinden.

1
<script src="https://www.paypal.com/de/cgi-bin/webscr?cmd=_getnbinternal&path=netbiscuitsIPhone-1.0.107.js" type="text/javascript"></script>

Einige weitere Tests ergaben, dass man mittels “./” bzw. “../” den Pfad zur ausgegebenen Datei bearbeiten kann. Nach einigen Traversierungen stießen wir auf den Wurzelordner ( / ), von welchem man die etc/passwd erreich kann.

1
https://www.paypal.com/de/cgi-bin/webscr?cmd=_getnbinternal&path=../../../../etc/passwd

Vor wenigen Monaten führte dieser Link noch auf eine Systemdatei, heute ist die Lücke behoben.

Bei Betriebssystem wie Linux oder Windows gibt es lesbare Systemdateien, welche sich oft im gleichen Pfad befinden.

Nach diesen Erkenntnissen schrieben wir eine Email an Paypals Security Team. Einige Tage später erreichte uns die ernüchternde Antwort, dass diese Sicherheitslücke ungültig sei. Im Gegensatz zum Facebook-Hacker “Khalil Shreateh” schilderten wir dem Security Team erneut das Problem, und lieferten zusätzlich den Download-Link zur /etc/group, sowie die Konfigurationsdatei des Apache-Servers (httpd.conf). Außerdem beantworteten wir dem Team die Frage, was an der Lücke schädlich für die Kunden von Paypal sein könnte.

Nach mehreren (er)klärenden Emails entschied sich das Paypal Security Team diese Lücke doch im Rahmen des Bug Bounties zu bearbeiten, also diese als valid einzustufen. Leider geschah die Bearbeitung bzw. der Fix der Lücke nicht mit der von uns gewünschten Priorität, sodass die Sicherheitslücke erst nach 3 Monaten behoben wurde.

Insgesamt war die Kommunikation eher träge und langsam. Dieser Hinweis war Paypal eine mittleren 4-stellige Summe wert.

Der Fix bestand darin, alle Vorkommnisse von “./” bzw. “../” durch Nichts (“”) zu ersetzen. Leider war diese Implementierung des Schutzmechanismus nicht ganz durchdacht, sodass wir die Lücke mit einem Bypass nochmals ausnutzen konnten. Der Bypass war relativ einfach, da man nur folgende Ersetzungsregeln durchführen musste:

  • ”./” => “..//”
  • ”../” => “….//”
  • ”/” => “//”

Die neue URL zum Downloaden der Systemdateien sah dann so aus:

1
https://www.paypal.com/en/cgi-bin/webscr?cmd=_getnbinternal&path=....//....//....//....//etc//passwd

Es wäre durchaus denkbar gewesen, dass man durch Brute-Force noch weitere weitaus kritischere Dateien hätte downloaden können. Wären auf dem Server beispielsweise Backups von Nutzerdaten vorhanden hätte man diese ohne Probleme auslesen können, der Vertrauensverlust bei den Nutzern wäre enorm gewesen, das zeigen auch Beispiele aus der Vergangenheit, wie der Hack des Sony PlayStation Networks.

Wir kontaktierten Paypal erneut und teilten dem Security Team mit, dass man mit der beschriebenen Technik die Lücke weiterhin ausnutzen könne. Das Team eröffnete dazu ein neues Ticket und beseitigte die Sicherheitslücke endgültig nach wenigen Monaten.

Zuletzt kam es noch zu einigen Verwirrungen bezüglich der Bounty-Höhe. Nach den neuen Richtlinien des Bug Bounty Programms zahlt Paypal für Lücken auf derer Haupt-Domain mindestens 750$. Das Reward-Panel hatte für den zweiten Hinweis zunächst ein Bounty von 500$ ausgeschrieben. Nach einer freundlichen Nachfrage entschuldigte sich das Reward-Panel für seinen Fehler und passte das Bounty an, dieser fiehl genau so groß aus, wie beim ersten Payment. Insgesamt haben wir eine 5-stellige Summe erhalten.

Wir möchten Paypal für die Möglichkeit der Teilnahme am Bug Bounty, sowie die Nennung in der Hall-of-Fame, danken.

Screenshots:

Screenshot der Path Traversal Lücke auf www.paypal.com