mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-29 00:55:22 +00:00
84cbd3a98a
This patch resolves the problem reported in: https://bugzilla.redhat.com/show_bug.cgi?id=886663 The source of the problem was the fix for CVE 2011-3411: https://bugzilla.redhat.com/show_bug.cgi?id=833033 which was originally committed upstream in commit753ff83a50
. That commit improperly removed the "--except-interface lo" from dnsmasq commandlines when --bind-dynamic was used (based on comments in the latter bug). It turns out that the problem reported in the CVE could be eliminated without removing "--except-interface lo", and removing it actually caused each instance of dnsmasq to listen on localhost on port 53, which created a new problem: If another instance of dnsmasq using "bind-interfaces" (instead of "bind-dynamic") had already been started (or if another instance started later used "bind-dynamic"), this wouldn't have any immediately visible ill effects, but if you tried to start another dnsmasq instance using "bind-interfaces" *after* starting any libvirt networks, the new dnsmasq would fail to start, because there was already another process listening on port 53. This patch changes the network driver to *always* add "except-interface=lo" to dnsmasq conf files, regardless of whether we use bind-dynamic or bind-interfaces. This way no libvirt dnsmasq instances are listening on localhost (and the CVE is still fixed). The actual code change is miniscule, but must be propogated through all of the test files as well. (This is *not* a cherry-pick of the upstream commit that fixes the bug (commitd66eb78667
), because subsequent to the CVE fix, another patch changed the network driver to put dnsmasq options in a conf file rather than directly on the dnsmasq commandline preserving the same options), so a cherry-pick is just one very large conflict.)
10 lines
431 B
Plaintext
10 lines
431 B
Plaintext
@DNSMASQ@ --strict-order \
|
|
--local=// --domain-needed --conf-file= \
|
|
--except-interface lo --bind-dynamic --interface virbr0 \
|
|
'--txt-record=example,example value' \
|
|
--dhcp-range 192.168.122.2,192.168.122.254 \
|
|
--dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases \
|
|
--dhcp-lease-max=253 --dhcp-no-override \
|
|
--dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile \
|
|
--addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts\
|