Re: How about employing TLS for private DBus connections ? (Re: dbus insecure over secure TCP?

rony <[email protected]>
Newsgroups gmane.comp.freedesktop.dbus
Organization WU Wien
Message-ID <[email protected]>
Not knowing what is involved in D-Bus for adding TLS, I thought for those in the know the server and
client code at openssl.org may help assess the complexity:

  * <https://wiki.openssl.org/index.php/Simple_TLS_Server>
  * <https://wiki.openssl.org/index.php/SSL/TLS_Client>

The downloadable samples, they write, include error checking which was left out for brevity of the
examples.

---rony

On 16.07.2018 17:22, rony wrote:
> On 14.07.2018 21:32, Thiago Macieira wrote:
>> On Saturday, 14 July 2018 07:24:16 PDT rony wrote:
>>> On 14.07.2018 07:17, Thiago Macieira wrote:
>>>> On Friday, 13 July 2018 10:33:32 PDT L A Walsh wrote:
>>>>> Why?  If the TCP-PATH between systems is secure, how is dbus insecure?
>>>> It's not. The point is that the networks are usually not secure, which
>>>> means you open glaring security holes into your machine by opening the
>>>> system or session well-known buses via TCP.
>>> The important assumption here is "usually". However, there are plenty of
>>> organizations/businesses that are able to deploy secured networks.
>> Fair enough.
>>
>> Please understand that opening an unauthenticated and unencrypted TCP port for 
>> either well-known D-Bus bus, you're basically saying the entire network is 
>> part of the same system and ALL processes running in it, in any node connected 
>> to it, have the same privilege rights.
> We might talk past each other, I should have been more precise (also changed the subject line
> accordingly): I am not talking about system and session D-Bus, but rather about private DBus
> connections, taking advantage of the D-Bus message infrastructure to allow a mix of computers
> running Linux, Windows (and sometimes MacOSX) interconnected via TCP, which has been possible for
> a long time!
>
> Taking advantage of the D-Bus infrastructure via private D-Bus connections for creating services
> and exploiting them on the clients seems to be quite efficient and bears low overhead for the
> application developers employing D-Bus for their communication needs, especially in a mix of
> computers running different operating systems in businesses/organizations within a closed LAN.
>
>>> It seems that usually the focal point in these security comments are D-Bus
>>> daemons on a single Linux machine, where great efforts have been put in
>>> place to make deploying system and session D-Bus daemons secure in an open
>>> network environment, which in today's world is very important, needless to
>>> say.
>> I don't know which great efforts you're speaking about are. I've never heard 
>> of anyone doing that.
> Probably my fault, this is what I meant (https://dbus.freedesktop.org/doc/dbus-tutorial.html):
>
>     " ...cut...
>     The bus daemon has multiple instances on a typical computer. The first instance is a
>     machine-global singleton, that is, a system daemon similar to sendmail or Apache. This
>     instance has heavy security restrictions on what messages it will accept, and is used for
>     systemwide communication.
>     ...cut..."
>
>>> ---
>>>
>>> Turning to another aspect of D-Bus that seems to have been overlooked in
>>> many discussions: D-Bus can also be used to create private D-Bus servers,
>>> which is a *very* easy, straight forward process. If a network is secured
>>> in an organization, then one can safely take advantage of it for
>>> server-client applications within an entire network!
>> Correct. If you're comfortable with unauthenticated and unencrypted 
>> connections, you can use this. As you said, the security must come from the 
>> lower layer.
>>
>>> In effect, I speculate that the D-Bus developers and maintainers do not
>>> realize the potential this would allow for, otherwise support for TLS would
>>> have been created and made available for the D-Bus reference
>>> implementation.
>> We do, we just don't consider it the main focus or effort. That is why TLS not 
>> implemented. That's simply not what D-Bus is designed for.
> Ad the argument "not what ... is designed for": sometimes designs are great to be applied to use
> cases, the original developers have not thought about at all (or thought they might be
> interesting, but not important).
>
> E.g. Linux was not designed for TVs or watches, yet in the meantime Linux gets deployed on such
> devices (and in many other scenarios). Suggesting an improvement to Linux to help it being
> deployed/exploited better or on other than originally envisioned devices then could have been
> easily be turned down with the killer argument "that's simply not what Linux is designed for". In
> fact that has not happened and Linux has been happily running on such - originally - unenvisioned
> devices (with more to be expected in the future). And each new device that runs Linux makes Linux
> more important and more ubiquitous.
>
> Just the fact that private DBus connections exist proves that D-Bus was designed for leveraging
> the D-Bus message infrastructure to client-server applications with private DBus connections.
>
> Maybe there are shortcomings in this application scenario that I am not aware of and that cause
> the D-Bus developers to step back from supporting private DBus connections in the future?
>
> ... cut ...
>
> D-Bus has been allowing D-Bus servers on private D-Bus connections that employ TCP.  Just learned
> from <https://dbus.freedesktop.org/doc/dbus-specification.html> that the current plan is to get
> TCP deprecated (what about nonce)?
>
> It seems to me that if security was a concern in such a deployment scenario, rather than
> deprecating the (cross-platform) TCP it would be beneficial for D-Bus to allow TLS to be employed
> for private DBus connections.
>
> Whether a handshaking protocol is needed and/or the local path to an accessible certificate
> (keystore) file on the server and the client machine must be supplied, would depend on such an
> implementation.
>
> For the private D-Bus connection the address parameter for "DBUS_EXPORT DBusConnection *
> dbus_connection_open_private(const char * address, DBusError * error )" [1] would ideally be the
> only necessary change to existing D-Bus applications in such a case.
>
> ---
>
> Creating client-server applications exploiting the DBus message infrastructure using private DBus
> connections is a quite powerful means, straight-forward and easy for application programmers. TLS
> for private DBus connections would allow application programmers to (quickly) create and deploy
> DBus server and client applications, intermixing Linux, Windows and MacOSX server/client machines
> in a secure manner.
>
> ---rony
>
> [1]
> <https://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html#ga434e3fc7ee420fd30e2f05e57ff26b1d>
>

_______________________________________________
dbus mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dbus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.