Commit graph

5864 commits

Author SHA1 Message Date
Simon McVittie
9458bd7038 Merge branch '275-docs-fix' into 'master'
doc: Fix environment variable name in dbus-daemon(1)

Closes #275

See merge request dbus/dbus!122
2019-08-19 08:10:19 +00:00
Philip Withnall
bf71a58e4a doc: Fix environment variable name in dbus-daemon(1)
Spotted by Mubin. This documentation relates to the code in
add_bus_environment() in bus/activation.c.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
Fixes: #275
2019-08-13 16:08:03 +02:00
Simon McVittie
b9e3c80d1f Merge branch 'dbus-send-sender' into 'master'
dbus-send: add --sender option

See merge request dbus/dbus!116
2019-07-15 12:36:50 +00:00
Christopher Morin
9842689a29 dbus-send: add --sender option
Clients listening for a signal can match against the 'sender', expecting
it to come from a connection with a specific name. With this change,
dbus-send can send signals to them.
2019-07-15 12:36:50 +00:00
Simon McVittie
1823c8e14a Update NEWS
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 15:01:22 +01:00
Simon McVittie
ac5cdd281a Merge branch 'break-out-more-tests' into 'master'
Break out more tests from libdbus

See merge request dbus/dbus!121
2019-07-03 13:43:25 +00:00
Simon McVittie
f73b40b883 Merge branch 'pass-tests-if-root' into 'master'
Fix test failures when running as root

See merge request dbus/dbus!117
2019-07-03 13:42:07 +00:00
Simon McVittie
b8912cf770 Merge branch 'malloc-fail-diags' into 'master'
tests: Improve diagnostics for malloc-failure tests

See merge request dbus/dbus!118
2019-07-03 13:41:21 +00:00
Simon McVittie
47148c6b55 Merge branch 'auth-idempotent' into 'master'
auth: Clear GUID from server if out of memory

See merge request dbus/dbus!119
2019-07-03 13:41:11 +00:00
Simon McVittie
379eb3a253 Merge branch 'fdleak-diagnostics' into 'master'
Move fd-leak checking from dbus/ into test/, and improve diagnostics

See merge request dbus/dbus!120
2019-07-03 13:40:54 +00:00
Simon McVittie
95db64700a tests: Move userdb test out of libdbus
All the functions under test turn out to be DBUS_PRIVATE_EXPORT already.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 11:19:50 +01:00
Simon McVittie
c1412056bb tests: Move mempool test out of libdbus
All the functions under test turn out to be DBUS_PRIVATE_EXPORT already.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 11:19:47 +01:00
Simon McVittie
7386456e4b tests: Move address test out of libdbus
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 11:19:19 +01:00
Simon McVittie
78d5af5ce9 tests: Move _dbus_sha_test outside libdbus
Instead of exposing _dbus_sha_test() as a private exported symbol,
we can expose _dbus_sha_compute(), which is the only thing called by
the test that isn't already exported.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 11:18:49 +01:00
Simon McVittie
043494618e Introduce a new macro to export symbols solely for tests
This lets us expose symbols in the embedded-tests build without
expanding the symbol table of the production library.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 11:17:27 +01:00
Simon McVittie
8421d887aa bus tests: Shut down audit socket
Some CI environments run build-time tests as root with CAP_AUDIT_WRITE.
In this case we need to close the audit socket so that it will not be
reported as leaked.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 11:11:23 +01:00
Simon McVittie
1b1c5ddd35 bus: Make audit initialization idempotent
The audit module is initialized every time a new BusContext is created,
which is only once in the real dbus-daemon, but can happen several times
in some unit tests.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 11:11:23 +01:00
Simon McVittie
e148aa47d3 tests: Skip if unable to launch uninstalled dbus-daemon as other uid
Some CI systems do the entire build as uid 0 in a throwaway container.
If this is done in a build directory for which the messagebus user
does not have search (+x) permission, then they will be unable to
execute the just-built dbus-daemon binary.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 11:11:23 +01:00
Simon McVittie
505bbfe4bd tests: Skip system bus test if we are root but messagebus does not exist
Some CI systems do the build as root in a disposable container, and
run tests without ever having installed dbus. This means we can't
expect to be able to drop privileges from root to the DBUS_USER (usually
named messagebus or dbus) unless we have checked that the
DBUS_USER exists.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-03 11:11:23 +01:00
Simon McVittie
fd41caa366 Merge branch 'doc-fix' into 'master'
doc: replace dbus-send's --address with --peer and --bus

See merge request dbus/dbus!115
2019-07-03 08:28:29 +00:00
Christopher Morin
75bf56e16d Apply suggestion to doc/dbus-send.1.xml.in 2019-07-03 00:20:12 +00:00
Christopher Morin
738d5af0df Apply suggestion to doc/dbus-send.1.xml.in 2019-07-02 22:53:36 +00:00
Simon McVittie
4876dbb161 tests: Improve diagnostics for malloc-failure tests
Some of these appear to hang, but making this diagnostic appear in the
log reveals the truth: it's just very slow.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-02 20:45:59 +01:00
Simon McVittie
0cc191f8e8 auth: Clear GUID from server if out of memory
If we retry processing the message in response to OOM, but we don't
clear this buffer first, then the assertion at the beginning will fail.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-02 20:45:31 +01:00
Simon McVittie
e4e904a86b tests: Improve messages when fd leaks are diagnosed
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-02 20:44:33 +01:00
Simon McVittie
491a2da305 dbus-message-util: Fix Doxygen annotations
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-02 20:44:33 +01:00
Simon McVittie
0ba41e071c Move _dbus_check_fdleaks_* from dbus-message-util to tests
This is only called from test code.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-07-02 20:44:33 +01:00
Chris Morin
1995fb8bb4 doc: replace dbus-send's --address with --peer and --bus
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=48816
2019-06-13 20:51:10 -07:00
Simon McVittie
0b8878133f Start spec 0.36 development
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-06-11 16:28:34 +01:00
Simon McVittie
942bb14708 Start 1.13.14 development
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-06-11 16:28:25 +01:00
Simon McVittie
df9dabe521 Prepare version 1.13.12
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-06-09 13:09:15 +01:00
Simon McVittie
6231e7d75f test: Add basic test coverage for DBUS_COOKIE_SHA1
We don't actually complete successful authentication, because that
would require us to generate a cookie and compute the correct SHA1,
which is difficult to do in a deterministic authentication script.
However, we do assert that dbus#269 (CVE-2019-12749) has been fixed.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-06-09 13:08:53 +01:00
Simon McVittie
2a11ab9bbd auth: Reject DBUS_COOKIE_SHA1 for users other than the server owner
The DBUS_COOKIE_SHA1 authentication mechanism aims to prove ownership
of a shared home directory by having the server write a secret "cookie"
into a .dbus-keyrings subdirectory of the desired identity's home
directory with 0700 permissions, and having the client prove that it can
read the cookie. This never actually worked for non-malicious clients in
the case where server uid != client uid (unless the server and client
both have privileges, such as Linux CAP_DAC_OVERRIDE or traditional
Unix uid 0) because an unprivileged server would fail to write out the
cookie, and an unprivileged client would be unable to read the resulting
file owned by the server.

Additionally, since dbus 1.7.10 we have checked that ~/.dbus-keyrings
is owned by the uid of the server (a side-effect of a check added to
harden our use of XDG_RUNTIME_DIR), further ruling out successful use
by a non-malicious client with a uid differing from the server's.

Joe Vennix of Apple Information Security discovered that the
implementation of DBUS_COOKIE_SHA1 was susceptible to a symbolic link
attack: a malicious client with write access to its own home directory
could manipulate a ~/.dbus-keyrings symlink to cause the DBusServer to
read and write in unintended locations. In the worst case this could
result in the DBusServer reusing a cookie that is known to the
malicious client, and treating that cookie as evidence that a subsequent
client connection came from an attacker-chosen uid, allowing
authentication bypass.

This is mitigated by the fact that by default, the well-known system
dbus-daemon (since 2003) and the well-known session dbus-daemon (in
stable releases since dbus 1.10.0 in 2015) only accept the EXTERNAL
authentication mechanism, and as a result will reject DBUS_COOKIE_SHA1
at an early stage, before manipulating cookies. As a result, this
vulnerability only applies to:

* system or session dbus-daemons with non-standard configuration
* third-party dbus-daemon invocations such as at-spi2-core (although
  in practice at-spi2-core also only accepts EXTERNAL by default)
* third-party uses of DBusServer such as the one in Upstart

Avoiding symlink attacks in a portable way is difficult, because APIs
like openat() and Linux /proc/self/fd are not universally available.
However, because DBUS_COOKIE_SHA1 already doesn't work in practice for
a non-matching uid, we can solve this vulnerability in an easier way
without regressions, by rejecting it early (before looking at
~/.dbus-keyrings) whenever the requested identity doesn't match the
identity of the process hosting the DBusServer.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Closes: https://gitlab.freedesktop.org/dbus/dbus/issues/269
Closes: CVE-2019-12749
2019-06-09 13:08:22 +01:00
Simon McVittie
00099d5dca Revert "Start spec 0.36 development"
This reverts commit edece0274b.
No spec changes have happened since 0.35.
2019-06-09 12:09:04 +01:00
Simon McVittie
fc28ea9959 Merge branch 'issue270' into 'master'
bus: Clarify names of methods that query owned names

Closes #270

See merge request dbus/dbus!114

Reviewed-by: @pwithnall
2019-05-31 10:55:56 +00:00
Simon McVittie
3b2217821b bus: Clarify names of methods that query owned names
It wasn't immediately clear from the names of these method whether they
should return TRUE or FALSE for queued owners other than the primary
owner. Renaming them makes it obvious that the answer should be TRUE.

While I'm there, make the corresponding _dbus_verbose() messages more
precise.

Signed-off-by: Simon McVittie <smcv@collabora.com>
Resolves: https://gitlab.freedesktop.org/dbus/dbus/issues/270
2019-05-30 15:59:10 +01:00
Simon McVittie
463ecfb4fd Merge branch 'send_destination_prefix' into 'master'
Send destination prefix

See merge request dbus/dbus!85
2019-05-30 14:49:09 +00:00
Simon McVittie
edece0274b Start spec 0.36 development
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-05-17 15:47:38 +01:00
Simon McVittie
f79aa63045 Start dbus 1.13.12 development
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-05-17 15:47:29 +01:00
Adrian Szyndela
dcbab02613 doc: described send_destination_prefix in manual
This adds a description of send_destination_prefix to the dbus-daemon manual.

Signed-off-by: Adrian Szyndela <adrian.s@samsung.com>
Change-Id: I46e6fa54ee34095c3ac83ec2c06cb91cf5669c7f
2019-05-14 10:31:13 +02:00
Adrian Szyndela
8fcc1f9a8a test: activation tests for send_destination_prefix
This adds a few tests for checking if activation is allowed
for names specified within send_destination_prefix namespaces.

Signed-off-by: Adrian Szyndela <adrian.s@samsung.com>
Change-Id: I7a5a66f82fc08ce6cb46e37de2c3dfae24d9ea67
2019-05-14 10:31:13 +02:00
Adrian Szyndela
7b7c572434 test: send_destination(_prefix) tests
This adds tests for mostly "send_destination_prefix" cases
and some "send_destination" cases.

The general test case is:
- addressed recipient is running and owns a name;
- a message is sent to the name owner;
- the response is checked for allow/deny (method return/error).
Each test case is executed both for primary and queued ownership.

The tests include:
- checking send allow/deny for names and namespaces, including nesting;
- checking send allow/deny for neighbour names;
- checking send allow/deny for names/namespaces+interface+member.

Signed-off-by: Adrian Szyndela <adrian.s@samsung.com>
Change-Id: If5fcada01601355e7aadefadad79c0b24f8c397f
2019-05-14 10:31:12 +02:00
Simon McVittie
99f0821bfb Prepare release v1.13.10 and Specification v0.35
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-05-13 14:24:06 +01:00
Simon McVittie
e6b69092f4 Update NEWS
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-05-13 12:41:53 +01:00
Simon McVittie
6884f63e0e Merge branch 'unix-gids' into 'master'
Add UnixGroupIDs to connection credentials

See merge request dbus/dbus!105

Fixes: dbus/dbus#196
2019-05-13 11:32:24 +00:00
Simon McVittie
5619f03984 Update NEWS
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-05-13 11:49:41 +01:00
Ralf Habacker
f72adabbd9 Merge branch 'cmake-mkdir' into 'master'
cmake: Create all output directories for Doxygen

Closes #266

See merge request dbus/dbus!113
2019-04-26 21:48:54 +00:00
Adrian Szyndela
055ff9e64a dbus-daemon: add send_destination_prefix support
This extends dbus-daemon with support for send_destination_prefix
attribute in XML policies.

It allows having policy rules for sending to bus names generated
within namespaces defined by a prefix. The similar behaviour can be
emulated by owning an additional name, not used for addressing messages,
as described in
https://lists.freedesktop.org/archives/dbus/2017-May/017188.html
However, introducing send_destination_prefix creates possibility
of communicating intentions in a more direct way, which is easier
to understand.

Signed-off-by: Adrian Szyndela <adrian.s@samsung.com>
Change-Id: I0016ad93f1c16b7742fef5f45ebaf01b55694d3c
2019-04-26 13:29:42 +02:00
Adrian Szyndela
3486e0f48d DBusString: extend with checking for starting with words
This extracts a few lines of code and adds it as a DBusString function
that checks if a DBusString starts with words given with a C string
and a word separator. In other words, it checks if:
- a DBusString is a given C string, or
- a DBusString starts with a given C string and the next character is
  a given word separator.

It is used for matching names to prefixes when checking the policy.

Signed-off-by: Adrian Szyndela <adrian.s@samsung.com>
Change-Id: Ie39d33916863d950dde38d3b8b20c8a539217302
2019-04-26 13:29:42 +02:00
Simon McVittie
339b94da6b cmake: Create all output directories for Doxygen
CI builds intermittently fail with

    error: Could not create output directory /.../doc/api/xml

or

    error: Could not create output directory /.../doc/api/man

Fixes: https://gitlab.freedesktop.org/dbus/dbus/issues/266
Signed-off-by: Simon McVittie <smcv@collabora.com>
2019-04-25 12:22:25 +01:00