Deserialization

PyXmlrpc

xmlrpc.client and xmlrpc.server. ServerProxy RPCs execute arbitrary methods — dispatch on untrusted method names is a sink. ServerProxy + HTTP (not HTTPS) transmits credentials in plaintext.

2 sinks
Taint flow0 sources 2 sinks
Sinks — dangerous call
.ServerProxy()
.loads()

Sinks

.ServerProxy()Sink
#
Signature
xmlrpc.client.ServerProxy(uri, transport=None, encoding=None, verbose=False, ...) -> ServerProxy

Opens an XML-RPC connection. Finding on http:// URIs (credentials in plaintext).

tracks:0
.loads()Sink
#
Signature
xmlrpc.client.loads(data, use_datetime=False, use_builtin_types=False) -> (params, methodname)

Parses an XML-RPC response. Inherits XXE surface from the XML parser.

tracks:0

Fully-Qualified Names

FQNField
xmlrpc.clientfqns[0]
xmlrpc.serverfqns[1]

Wrong FQN → 0 findings. Verify with: change fqns to garbage → must produce 0 results.

Import

rule.py
from codepathfinder.go_rule import PyXmlrpc