Sanitizing data over the wire

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



It is possible to execute a remote command that causes the xmlrpc
communication in func to bomb.  I have had this happen in several
ways, but the most common one I see is from init scripts that don't
function properly when running non-interactively (or maybe this is
just due to the way func executes things in a shell on the remote
end...).  The output will attempt to be colorized and the control
characters cause the XML to go invalid.  Another common example is
puppet; when run without the --color=false flag it breaks.

I can run the following command to reproduce this behavior (it's just
trying to print "test" in red):

$ sudo func '127.0.0.1' call command run 'echo -e "\033[0;31;40mtest\033[0m"'
('127.0.0.1',
 ['REMOTE_ERROR',
  'xml.parsers.expat.ExpatError',
  'not well-formed (invalid token): line 9, column 15'])

The client (overlord) side xmlrpclib.ServerProxy allows an optional
encoding to be set.  However, although present in xmlrpclib,
SimpleXMLRPCServer (or more specifically, SimpleXMLRPCDispatcher) does
not support encoding until python >= 2.5, which is a no-go in order to
maintain el4/5 support for func.

I propose the following, assmuming it will be reasonably
straightforward and not pull in a ton of unexpected deps:

- Ship the python 2.5 version of SimpleXMLRPCServer bundled with func
- Update the server (minion) code to use this bundled version on
  python < 2.5, otherwise use the standard library version
- Update the minion and overlord to base64 encode xmlrpc traffic

I will throw together a proof of concept for this hopefully sometime
Monday.  If anybody has thoughts / opinions / suggestions by all means
let's hear them!

- John

_______________________________________________
Func-list mailing list
Func-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/func-list

[Index of Archives]     [Fedora Users]     [Linux Networking]     [Fedora Legacy List]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux