1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- Security Advisories
- ===================
- The Xmlrpc-c maintainer will normally post security advisories related
- to xmlrpc-c to the xmlrpc-c-announce mailing list. You can subscribe
- to this using the web:
- http://xmlrpc-c.sourceforge.net/lists.php
- You will also find a list of all known bugs including those with
- security ramifications, in the release notes on Sourceforge. To see
- the release notes for a release, go to the file download page and
- click on the release name. The list is current only for the most
- current release -- i.e. we stop adding to the list for release N after
- we release N+1.
- XML-RPC Security
- ================
- There are some security issues inherent in XML-RPC:
- 1) XML-RPC messages are not encrypted at the XML-RPC level. This
- means that unless you encrypt them at some lower level, someone
- with sufficient access to the network can see them with standard
- packet-sniffing and network administration tools.
- This is especially dangerous because XML-RPC is a stateless protocol.
- If you include reusable authentication tokens in an XML-RPC call, they
- can probably be sniffed and used by attackers.
- You can solve this problem by using SSL under HTTP. This is possible
- with Xmlrpc-c, but it's nontrivial to set up and the Xmlrpc-c
- documentation doesn't tell you how.
- 2) There are no permission restrictions and no authentication built
- into Xmlrpc-c by default -- any client can call any method on any
- visible server and neither can know for sure to whom it is talking.
- If you need permission and authentication, you either have to put
- it above the XML-RPC layer or below. For a server, above means in
- the method code you supply and register with the Xmlrpc-c server
- facilities; below means something like a firewall that lets clients
- only from a certain IP address connect to your server.
- 3) XML-RPC is a complex protocol based on complex data structures.
- Layers and layers of potentially buggy code gets run between the
- time network data is received, and the time it is understood; and
- conversely between the time data is conceived and the time it
- gets sent.
|