summaryrefslogtreecommitdiff
path: root/SECURITY
blob: 2cc3a3015ed89650255a6cee2cdfda40ca4d4edc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
custodian-enqueue
-----------------

  We open named files from the user to parse tests.  The configuration file(s)
 are currently opened by root, via /etc/service/custodian-enqueue.  This should
 be changed to run as a lower-privileged user.




custodian-dequeue
-----------------

One test passes arguments from the configuration file to the shell:

    ping

The hostname used to ping will be used assuming it matches the following regular expression:

^([^\s]+)\s+

So the following configuration file snippet potentially allows a command to be executed by our worker:

    $(/home/steve/hg/custodian/exploit.sh) must ping otherwise "Owned".

Given that anybody who can talk to the beanstalkd server can submit jobs we cannot rely on catching this solely in the parser.

For the moment we've solved the case of the ping-exploitation, by validating
that hostnames passed to the multi-ping command match ^[a-z0-9.-]$ - both forms
of input are validated:

  * Ensuring the hostname is valid prior to executing the shell command.

  * Ensure the hostname is valid before adding the job to the queue.




General
-------

We decode arbitrary jobs from the queue.  We should sign them, or validate them to prevent trojan malformed lines from being added.




TODO
----

  Anything else?  DoS attacks?



Steve
--