<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 29, 2014 at 2:49 PM, Prathmesh Prabhu Chromium <span dir="ltr"><<a href="mailto:pprabhu@chromium.org" target="_blank">pprabhu@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Wed, Sep 24, 2014 at 12:36 AM, Aleksander Morgado <span dir="ltr"><<a href="mailto:aleksander@aleksander.es" target="_blank">aleksander@aleksander.es</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>On Wed, Sep 24, 2014 at 12:37 AM, Prathmesh Prabhu Chromium<br>
<<a href="mailto:pprabhu@chromium.org" target="_blank">pprabhu@chromium.org</a>> wrote:<br>
> (All discussion here applies equally to mbim-proxy and qmi-proxy)<br>
><br>
> Reviving this thread since ChromeOS needs to relax the root requirement in<br>
> order to use mbim-proxy.<br>
><br>
> I discussed this somewhat widely here, and it seems that the simplest<br>
> linux-footed solution is to use user/group membership.<br>
> So, instead of forcing clients that connect with the proxy to be root, we<br>
> can force them to have the same group id.<br>
><br>
> This keeps the current behavior (when mbim-proxy is indeed launched as root)<br>
> unchanged (uid(proxy) == gid(proxy) == uid(client) == gid(client) == 0)<br>
> It introduces no new security vulnerabilities. If mbim-proxy is launched<br>
> with insufficient rights to access the modem device, any attempt to open the<br>
> device will simply fail.<br>
><br>
> Those systems that want to sandbox the modemmanager/proxy process better can<br>
> then do so using groups.<br>
><br>
> I'll submit a patch separately for mbim-proxy for this approach.<br>
><br>
> What do you think?<br>
<br>
</span>Problem here is that there will only be one qmi-proxy process in the<br>
system. If a user without enough privileges to open a QMI port<br>
launches the proxy, we will end up with a proxy process which cannot<br>
do anything. The root user check is not only to ensure that<br>
unprivileged users don't make use of the QMI ports; it's also to<br>
ensure that the process launching the proxy will be able to open and<br>
use the QMI ports.<br>
<br>
Maybe, a special new 'modem' unix group would be a good idea; i.e. so<br>
that the QMI/MBIM ports get rwx for that group, and so that we can<br>
directly pass a --with-group=modem configure switch when compiling<br>
libmbim/libqmi? That would limit all QMI/MBIM access to users<br>
belonging to that group.<br></blockquote><div><br></div></div></div><div>I agree that it is a problem if mbim-proxy is launched with not enough privileges. But this is a problem that should be solved by the system packagers, not the proxy.</div><div><br></div><div>I think the ideal solution lies in the 'modem' unix group your talked about. The distro packagers can create the 'modem' unix group, and make sure that all required kernel devices have rwx for this group. The same packagers then also make sure that the proxy is executable only by the 'modem' group.</div><div>This provides the required access control and also guarantees capabilities needed by the proxy.</div><div><br></div><div>mbim-proxy documentation can recommend this approach, but it is up to the distro to choose its own access control policy.</div><div><br></div><div>What do you think?</div></div></div></div></blockquote><div><br></div><div>Once again: I mean mbim-proxy/qmi-proxy. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><font color="#888888"><br><span class="HOEnZb"><font color="#888888">
<br>
--<br>
Aleksander<br>
<a href="https://aleksander.es" target="_blank">https://aleksander.es</a><br>
</font></span></font></span></blockquote></div><br></div></div>
</blockquote></div><br></div></div>