Auswertung des Query-Parts eines GET-Requests ist fehlerhaft

Versucht man über MOA ID Proxy eine GET-URL mit einem Query-Part zu tunneln, der nicht der Form (<Name>=<Wert>)+ entspricht (also z.B. http://test.app/test.js?query), wird die GET-URL nicht korrekt an die hinter MOA ID Proxy liegende Applikation weitergeleitet.

Gemäß RFC 3986, Abschnitt 3.4 darf der Query-Part einer URI eine beliebige Zeichenfolge sein, muss also nicht einer bestimmten Syntax (wie z.B. (<Name>=<Wert>)+ genügen.

Das fehlerhafte Verhalten ist in der Methode at.gv.egovernment.moa.id.util.InOrderServletRequestWrapper#parseParameters implementiert. Dort wird versucht, den Query-Part der URL in jedem Fall gemäß der Struktur (<Name>=<Wert>)+ zu parsen, und zwar egal, ob es sich dabei um einen GET-Request oder einen POST-Request handelt.

Gemäß Java Servlet Spezifikation (z.B. Version 2.3, die zum Entstehungszeitpunkt von MOA ID die neueste Version war) ist dieses Verhalten jedoch nicht korrekt. Gemäß Abschnitt SRV 4.1 (letzter Absatz) bzw. SRV 4.1.1 dürfen die Paramter eines HTTP Servlet Requests nur dann zur Verfügung gestellt werden, wenn es sich um einen POST-Request handelt, und dieser einen content-type application/x-www-form-urlencoded aufweist.

Die Code-Zeilen 109 und 110 in at.gv.egovernment.moa.id.util.InOrderServletRequestWrapper (aus MOA ID Version 1.4.8) müssten daher erst innerhalb der in Zeile 119 beginnenden if-Anweisung stehen.

Sehr problematisch ist übrigends auch, dass der Fehler sich nur so äußert, dass es in der Klasse at.gv.egovernment.moa.id.util.InOrderServletRequestWrapper#tokenize zu einer IllegalArgumentException kommt, ohne dass entsprechende Log-Ausgaben erfolgen.



HardwareOSF/1
ProductMOA
Operating SystemOSF/1
ComponentID Proxy
VersionOSF/1
Severitycritical
Target MilestoneOSF/1
ResolutionFixed

Category

Bugs
Login or create an account to comment.