Benno Evers created MESOS-9569:
----------------------------------

             Summary: Missing master-side validation of 
UpdateOperationStatusMessage
                 Key: MESOS-9569
                 URL: https://issues.apache.org/jira/browse/MESOS-9569
             Project: Mesos
          Issue Type: Bug
            Reporter: Benno Evers


The master is currently not validating incoming 
`UpdateOperationStatusMessage`s, and is performing `CHECK()`s on the values of 
certain protobuf fields of the message.

This means a malformed HTTP request can trigger a master crash. This can be 
reproduced e.g. by executing code like this on a master host:
{noformat}
import urllib.request
rq = 
urllib.request.Request("http://localhost:5050/master/mesos.internal.UpdateOperationStatusMessage";,
 headers={"Libprocess-From": "foo@127.0.1.1:5052"}, method="POST", 
data=b'\x1a\x02\x10\x01*\x05\n\x03xxx')
rsp = urllib.request.urlopen(rq).read()
{noformat}

(where the posted data is just an UpdateOperationStatusMessage protobuf without 
a  slave_id serialized as string)

{noformat}
F0213 13:14:22.507489 16492 master.cpp:8413] Check failed: 
update.has_slave_id() External resource provider is not supported yet
{noformat}

Looking at other internal messages, some of them already have a validation step 
implemented (i.e. RegisterSlaveMessage), so probably we should probably add 
something similar for this case.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to