[ 
https://issues.apache.org/jira/browse/MESOS-9144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benjamin Mahler reassigned MESOS-9144:
--------------------------------------

    Assignee: Benjamin Mahler

> Master authentication handling leads to request amplification.
> --------------------------------------------------------------
>
>                 Key: MESOS-9144
>                 URL: https://issues.apache.org/jira/browse/MESOS-9144
>             Project: Mesos
>          Issue Type: Bug
>    Affects Versions: 1.4.1, 1.5.1, 1.6.1
>            Reporter: Meng Zhu
>            Assignee: Benjamin Mahler
>            Priority: Blocker
>         Attachments: master_auth_log.tar.gz
>
>
> In `Master::authenticate(const UPID& from, const UPID& pid)`, we have:
> https://github.com/apache/mesos/blob/master/src/master/master.cpp#L9594
> {code:c++}
>   if (authenticating.contains(pid)) {
>     LOG(INFO) << "Queuing up authentication request from " << pid
>               << " because authentication is still in progress";
>     // Try to cancel the in progress authentication by discarding the
>     // future.
>     authenticating[pid].discard();
>     // Retry after the current authenticator session finishes.
>     authenticating[pid]
>       .onAny(defer(self(), &Self::authenticate, from, pid));
>     return;
>   }
> {code}
> Let's say the master is processing authentication request R1 (whose 
> associating future is held in `authenticating`). Now it receives another 
> request R2 from the same client (due to e.g. re-try), according to the above 
> code logic, we will (1) discard R1; (2) enqueue R2 as a callback which will 
> be triggered when R1 is discarded, and we will redo `:: authenticate` with R2.
> Here the master assumes that R2 is the most current request. This is true in 
> the above example. However, this assumption could easily break when auth 
> requests come faster than they are discarded. If we have 3 requests (R1, R2, 
> R3) in the event queue, then we could trigger `::authenticate` SIX times in 
> total, once for R1, twice for R2 and three times for R3. This grows in 
> quadratic to the number of enqueued requests and the master will be 
> overwhelmed.
> This issue couples with MESOS-9146 and MESOS-9145 makes the master 
> authentication fragile and can easily be overwhlemed.



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

Reply via email to