tests: Add a test for signal filtering by well-known name

The vulnerability reported as GNOME/glib#3268 can be characterized
as: these signals from an attacker should not be delivered to either
the GDBusConnection or the GDBusProxy, but in fact they are (in at
least some scenarios).

Reproduces: https://gitlab.gnome.org/GNOME/glib/-/issues/3268
Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
Simon McVittie 2024-03-08 19:53:22 +00:00
parent fc0ee92072
commit f6d1b5471a

View File

@ -440,6 +440,33 @@ static const TestPlan plan_limit_by_well_known_name =
.iface = EXAMPLE_INTERFACE,
},
},
{
/* Attacker wants to trick subscriber into thinking that service
* sent a signal */
.action = TEST_ACTION_EMIT_SIGNAL,
.u.signal = {
.sender = TEST_CONN_ATTACKER,
.path = EXAMPLE_PATH,
.iface = EXAMPLE_INTERFACE,
.member = FOO_SIGNAL,
.received_by_conn = 0,
.received_by_proxy = 0
},
},
{
/* Attacker tries harder, by sending a signal unicast directly to
* the subscriber */
.action = TEST_ACTION_EMIT_SIGNAL,
.u.signal = {
.sender = TEST_CONN_ATTACKER,
.unicast_to = TEST_CONN_SUBSCRIBER,
.path = EXAMPLE_PATH,
.iface = EXAMPLE_INTERFACE,
.member = FOO_SIGNAL,
.received_by_conn = 0,
.received_by_proxy = 0
},
},
{
/* When the service sends a signal with the name it already owns,
* it should get through */