Bug 1757258 (CVE-2019-14850) - CVE-2019-14850 nbdkit: denial of service due to premature opening of back-end connection
Summary: CVE-2019-14850 nbdkit: denial of service due to premature opening of back-end...
Alias: CVE-2019-14850
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
Depends On: 1757260 1757261 1757262 1757263 1757264 1757265 1757639
Blocks: 1751960 1940172
TreeView+ depends on / blocked
Reported: 2019-10-01 01:20 UTC by Doran Moppert
Modified: 2021-03-17 18:01 UTC (History)
10 users (show)

Fixed In Version: nbdkit 1.12.7, nbdkit 1.14.1, nbdkit 1.15.1
Doc Type: If docs needed, set a value
Doc Text:
A denial of service vulnerability was discovered in nbdkit. An attacker could connect to the nbdkit service and cause it to perform a large amount of work in initializing backend plugins, by simply opening a connection to the service. This vulnerability could cause resource consumption and degradation of service in nbdkit, depending on the plugins configured on the server-side.
Clone Of:
Last Closed: 2020-03-31 22:35:29 UTC

Attachments (Terms of Use)

System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2020:1167 0 None None None 2020-03-31 19:29:25 UTC

Description Doran Moppert 2019-10-01 01:20:33 UTC
An attacker, by connecting to nbdkit’s TCP port, is able to make the current plugin’s .open() callback run.  For some plugins this callback
does a considerable amount of work, for example connecting to a remote machine (nbdkit-ssh-plugin) or launching a small VM (nbdkit-guestfs-plugin).  Thus for a small amount of work done by the attacker (opening many TCP connections but not sending any data), a large amount of work is done by nbdkit (eg. making many full ssh connections to a remote machine or launching hundreds of VMs).

A related problem is that if nbdkit is configured to use TLS for client authentication, even clients which are not authorized are able to attack nbdkit in this way because all they have to do is open a TCP connection.

Mitigating this is that the current plugin is NOT selected by the attacker, but is part of the server configuration.  Therefore the effectiveness of the attack depends on the particular configuration.

Comment 1 Doran Moppert 2019-10-01 01:20:39 UTC

Name: Richard W. M. Jones (Red Hat)

Comment 2 Doran Moppert 2019-10-01 01:20:42 UTC
External References:


Comment 3 Doran Moppert 2019-10-01 01:20:46 UTC

This attack is only possible if nbdkit is configured with a plugin that does a lot of work in its initial .open() callback. Some examples that do a lot of work are nbdkit-ssh-plugin and nbdkit-guestfs-plugin. The nbdkit-memory-plugin is an example that does very little work, and thus is not subject to this vulnerability.

Only attackers that can connect to the nbdkit service can exploit this vulnerability. If nbdkit is not exposed over TCP (eg, nbdkit -U), or is bound only to a private network interface, or is protected by firewall rules, the attack surface is correspondingly limited.

Comment 5 Doran Moppert 2019-10-01 01:23:16 UTC
Created nbdkit tracking bugs for this issue:

Affects: epel-7 [bug 1757265]
Affects: fedora-all [bug 1757264]

Comment 9 Doran Moppert 2019-10-01 23:26:33 UTC

Red Hat Virtualization Host includes nbdkit as a dependency of libguestfs, and uses it in p2v/v2v migrations. libguestfs uses nbdkit with a Unix domain socket only, so this vulnerability is not exposed to untrusted users.

Red Hat Virtualization 4.2 EUS includes a vulnerable version of nbdkit, however it is used only on the Hypervisor with a Unix domain socket, so this vulnerability is not exposed to untrusted users.

Comment 12 errata-xmlrpc 2020-03-31 19:29:23 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7

Via RHSA-2020:1167 https://access.redhat.com/errata/RHSA-2020:1167

Comment 13 Product Security DevOps Team 2020-03-31 22:35:29 UTC
This bug is now closed. Further updates for individual products will be reflected on the CVE page(s):


Note You need to log in before you can comment on or make changes to this bug.