image

Onderzoeker vindt ernstige kwetsbaarheid in PayPal

dinsdag 26 januari 2016, 11:32 door Redactie, 7 reacties

Onderzoeker Michael Stepankin laat in een blog posting weten een ernstige kwetsbaarheid gevonden te hebben in PayPal. Met behulp van de kwetsbaarheid was Stepankin in staat om systeemcommando's uit te voeren op de servers van Paypal.

Het gaat om een zogeheten "Java Object Deserialization" kwetsbaarheid. Dit type kwetsbaarheid ontstaat wanneer ontwikkelaars, zonder enige vorm van validatie, gebruikersinvoer deserialiseren.

Serialisatie

Serialisatie omvat het omzetten van objecten (bijvoorbeeld een object waarin de informatie van een gebruiker wordt opgeslagen) naar een stroom van bytes die makkelijk over het netwerk verstuurd kunnen worden. De applicatie die de stroom van bytes ontvangt kan deze deserialiseren om weer het originele object te verkrijgen.

De kwetsbaarheid ontstaat wanneer een aanvaller deze stroom van bytes zelf kan opgeven of kan aanpassen. Hierdoor kunnen de deseralisatie functies van de ontvangen applicatie beïnvloed worden en bijvoorbeeld systeem commando's uitvoeren of ander ongewenst gedrag vertonen.

Dit soort kwetsbaarheden komen niet alleen voor in Java, maar bijvoorbeeld ook in Python en PHP.

Bonus

PayPal heeft de kwetsbaarheid inmiddels verhopen en een Bug Bounty van $ 5000 uitgekeerd aan Michael Stepankin.

Reacties (7)
26-01-2016, 16:54 door Anoniem
Dit is een programmeerfout bij PayPal. Geen kwetsbaarheid die ook in Python en PHP voorkomt. Gewoon slecht programmeerwerk.
26-01-2016, 18:08 door karma4
Door Anoniem: Dit is een programmeerfout bij PayPal. Geen kwetsbaarheid die ook in Python en PHP voorkomt. Gewoon slecht programmeerwerk.
Aangezien het slechte programmeerwerk kennelijk de eenvoudigste oplossing is bij het coderen zijn de talen en de rest niet inherent veilig.
26-01-2016, 19:56 door [Account Verwijderd]
[Verwijderd]
26-01-2016, 22:02 door Anoniem
http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
27-01-2016, 10:04 door Anoniem
Dit is een van de vele manieren waarop applicatieontwikkelaars de fout kunnen maken om onbetrouwbare invoer als betrouwbaar te behandelen. Daarmee valt deze fout in dezelfde (ruime) categorie als fouten die XSS en SQL injection mogelijk maken.

Zeggen dat deze kwetsbaarheid in Java, PHP en Python voorkomt is zoiets als zeggen dat SQL injection in SQL Server, MySQL en PostgreSQL voorkomt. Bij SQL injection zijn we toch gewend om dat niet als een fout in het DBMS te zien maar als een fout in de applicatie die het gebruikt. Laten we dat bij deserialiseren van niet-gevalideerde objecten ook doen. De fout komt dus niet voor in de programmeertaal maar in de applicatie.

Dit is een webapplicatie die een geserialiseerd object in HTML-formulieren liet meeliften met de naam "oldFormData". Dat suggereert dat het de inhoud van eerder ingevulde formuliervelden bevat. Dan kan je net zo goed JSON, YAML, XML of zo als serialisatieformaat kiezen, dat reduceert de mogelijkheden van een malafide gebruiker al aanzienlijk. Maar ook dan moet de ontwikkelaar nagaan of er geen misbruik van gemaakt kan worden, een webwinkel doet zichzelf bijvoorbeeld geen plezier als de klant zelf de prijs van een artikel kan verlagen in een bestelling door fouten hiermee. Als ervoor gekozen wordt sessiedata niet op de server bij te houden maar dat uit te besteden aan de client dan moet die data bij elke interactie gevalideerd worden.
27-01-2016, 16:21 door Anoniem
Overigens zou ik Java absoluut geen Ferrari willen noemen. Java is rommel eerste klas!
28-01-2016, 10:01 door Anoniem
Door Anoniem: Overigens zou ik Java absoluut geen Ferrari willen noemen. Java is rommel eerste klas!

In de vergelijking PHP - Python - Java steekt Java er met kop en schouders bovenuit. Ook in een vergelijking met andere server side programmeertalen zoals bv. (ASP.NET's) C# of Ruby komt het er goed uit.

Een Linux kernel ga je niet in Java schrijven. Embedded toepassingen zijn er weer wel.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.