journald: set a limit on the number of fields (1k)
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 5 Dec 2018 21:45:02 +0000 (22:45 +0100)
committerMartin Pitt <mpitt@debian.org>
Sun, 27 Jan 2019 21:33:07 +0000 (21:33 +0000)
commit8c8faecf7522fcfc1d6516d32a344f1289c71f00
tree1cbd2d4e0eeeeaddf5dd7849b47f15356c1d3a31
parent22a6c3c35b7dfd1646228faadc2bd748a92ff939
journald: set a limit on the number of fields (1k)

We allocate a iovec entry for each field, so with many short entries,
our memory usage and processing time can be large, even with a relatively
small message size. Let's refuse overly long entries.

CVE-2018-16865
https://bugzilla.redhat.com/show_bug.cgi?id=1653861

What from I can see, the problem is not from an alloca, despite what the CVE
description says, but from the attack multiplication that comes from creating
many very small iovecs: (void* + size_t) for each three bytes of input message.

(cherry picked from commit 052c57f132f04a3cf4148f87561618da1a6908b4)
(cherry picked from commit eaf1d6e1e6ec5023ffdc2801e2b671226e862774)

Gbp-Pq: Name journald-set-a-limit-on-the-number-of-fields-1k.patch
src/journal/journald-native.c
src/shared/journal-importer.h