CVE-2019-17134
Description
Amphora Images in OpenStack Octavia >=0.10.0 <2.1.2, >=3.0.0 <3.2.0, >=4.0.0 <4.1.0 allows anyone with access to the management network to bypass client-certificate based authentication and retrieve information or issue configuration commands via simple HTTP requests to the Agent on port https/9443, because the cmd/agent.py gunicorn cert_reqs option is True but is supposed to be ssl.CERT_REQUIRED.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
OpenStack Octavia's amphora agent HTTPS endpoint accepts any client connection due to misconfigured SSL certificate verification, allowing unauthenticated access.
Vulnerability
CVE-2019-17134 is a client-certificate authentication bypass in OpenStack Octavia's amphora agent. The agent's HTTPS endpoint on port 9443 is intended to require mutual TLS (mTLS) authentication, but a programming error in cmd/agent.py sets the gunicorn cert_reqs option to the Python boolean True instead of the constant ssl.CERT_REQUIRED. Because True evaluates to a value that does not enforce certificate validation, the server accepts connections without requiring a valid client certificate [1][2].
Exploitation
An attacker who has network access to the Octavia management network (i.e., can reach the amphora agent on port 9443) can send arbitrary HTTP requests to the agent. No client certificate is needed, and no authentication credentials are required. The vulnerability affects Octavia versions 0.10.0 through 2.1.1, 3.0.0 through 3.1.0, and 4.0.0 through 4.0.0 [1].
Impact
Successful exploitation allows an unauthenticated attacker to retrieve sensitive information from the amphora agent or issue configuration commands that the agent would normally reject. This could lead to unauthorized control of load balancer amphorae, potentially compromising the entire Octavia load-balancing service and the workloads it handles.
Mitigation
The fix, committed in OpenStack Octavia [2][3][4], replaces 'cert_reqs': True with 'cert_reqs': ssl.CERT_REQUIRED and adds the necessary import ssl statement. Users should upgrade to Octavia 2.1.2, 3.2.0, or 4.1.0, or apply the patch directly. No workaround is available beyond restricting network access to the management network.
AI Insight generated on May 22, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
octaviaPyPI | >= 0.10.0, < 2.1.2 | 2.1.2 |
octaviaPyPI | >= 3.0.0, < 3.2.0 | 3.2.0 |
octaviaPyPI | >= 4.0.0, < 4.1.0 | 4.1.0 |
Affected products
43- OpenStack/Octaviadescription
- ghsa-coords42 versionspkg:pypi/octaviapkg:rpm/suse/ardana-db&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-keystone&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-neutron&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/ardana-nova&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/crowbar-core&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/crowbar-openstack&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/crowbar-ui&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-barbican&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-barbican&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-heat-templates&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-heat-templates&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-keystone&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-keystone&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-neutron&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-neutron&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-neutron-gbp&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-neutron-gbp&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-neutron-lbaas&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-neutron-lbaas&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-nova&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-nova&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-octavia&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-octavia&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/openstack-sahara&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/openstack-sahara&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/python-psutil&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/python-psutil&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/release-notes-suse-openstack-cloud&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/release-notes-suse-openstack-cloud&distro=SUSE%20OpenStack%20Cloud%20Crowbar%209pkg:rpm/suse/venv-openstack-barbican&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-cinder&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-designate&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-heat&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-keystone&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-magnum&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-manila&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-monasca-ceilometer&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-neutron&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-nova&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-octavia&distro=SUSE%20OpenStack%20Cloud%209pkg:rpm/suse/venv-openstack-sahara&distro=SUSE%20OpenStack%20Cloud%209
>= 0.10.0, < 2.1.2+ 41 more
- (no CPE)range: >= 0.10.0, < 2.1.2
- (no CPE)range: < 9.0+git.1572311426.a6dc2fd-3.13.1
- (no CPE)range: < 9.0+git.1573069087.15ffd1c-3.13.1
- (no CPE)range: < 9.0+git.1572019823.6650494-3.16.1
- (no CPE)range: < 9.0+git.1572618171.4460843-3.13.1
- (no CPE)range: < 6.0+git.1573825081.b1caf60f1-3.16.1
- (no CPE)range: < 6.0+git.1573754820.dd036ef77-3.16.1
- (no CPE)range: < 1.3.0+git.1572871359.50fc6087-14.1
- (no CPE)range: < 7.0.1~dev21-3.3.1
- (no CPE)range: < 7.0.1~dev21-3.3.1
- (no CPE)range: < 0.0.0+git.1553459627.948e8cc-3.3.1
- (no CPE)range: < 0.0.0+git.1553459627.948e8cc-3.3.1
- (no CPE)range: < 14.1.1~dev28-3.16.1
- (no CPE)range: < 14.1.1~dev28-3.16.1
- (no CPE)range: < 13.0.6~dev8-3.16.2
- (no CPE)range: < 13.0.6~dev8-3.16.2
- (no CPE)range: < 5.0.1~dev476-3.13.1
- (no CPE)range: < 5.0.1~dev476-3.13.1
- (no CPE)range: < 13.0.1~dev16-3.13.1
- (no CPE)range: < 13.0.1~dev16-3.13.1
- (no CPE)range: < 18.2.4~dev22-3.16.2
- (no CPE)range: < 18.2.4~dev22-3.16.2
- (no CPE)range: < 3.2.1~dev3-3.16.1
- (no CPE)range: < 3.2.1~dev3-3.16.1
- (no CPE)range: < 9.0.2~dev14-3.6.1
- (no CPE)range: < 9.0.2~dev14-3.6.1
- (no CPE)range: < 5.4.6-3.3.1
- (no CPE)range: < 5.4.6-3.3.1
- (no CPE)range: < 9.20191025-3.15.1
- (no CPE)range: < 9.20191025-3.15.1
- (no CPE)range: < 7.0.1~dev21-3.13.1
- (no CPE)range: < 13.0.8~dev8-3.13.1
- (no CPE)range: < 7.0.1~dev22-3.13.1
- (no CPE)range: < 11.0.3~dev23-3.13.1
- (no CPE)range: < 14.1.1~dev28-3.13.1
- (no CPE)range: < 7.1.1~dev28-4.13.1
- (no CPE)range: < 7.3.1~dev15-3.13.1
- (no CPE)range: < 1.8.2~dev3-3.13.1
- (no CPE)range: < 13.0.6~dev8-6.13.1
- (no CPE)range: < 18.2.4~dev22-3.13.1
- (no CPE)range: < 3.2.1~dev3-4.13.1
- (no CPE)range: < 9.0.2~dev14-3.13.1
Patches
61725517d1d20Fix urgent amphora two-way auth security bug
3 files changed · +14 −1
octavia/cmd/agent.py+2 −1 modified@@ -15,6 +15,7 @@ # make sure PYTHONPATH includes the home directory if you didn't install import multiprocessing as multiproc +import ssl import sys import gunicorn.app.base @@ -74,7 +75,7 @@ def main(): 'timeout': CONF.amphora_agent.agent_request_read_timeout, 'certfile': CONF.amphora_agent.agent_server_cert, 'ca_certs': CONF.amphora_agent.agent_server_ca, - 'cert_reqs': True, + 'cert_reqs': ssl.CERT_REQUIRED, 'preload_app': True, 'accesslog': '/var/log/amphora-agent.log', 'errorlog': '/var/log/amphora-agent.log',
octavia/tests/unit/cmd/test_agent.py+7 −0 modified@@ -9,6 +9,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import ssl import mock @@ -36,5 +37,11 @@ def test_main(self, mock_service, mock_process, mock_server, mock_amp): agent.main() + # Ensure gunicorn is initialized with the correct cert_reqs option. + # This option is what enforces use of a valid client certificate. + self.assertEqual( + ssl.CERT_REQUIRED, + mock_amp.call_args[0][1]['cert_reqs']) + mock_health_proc.start.assert_called_once_with() mock_amp_instance.run.assert_called_once()
releasenotes/notes/correct-amp-client-auth-vulnerability-6803f4bac2508e4c.yaml+5 −0 added@@ -0,0 +1,5 @@ +--- +security: + - | + Correctly require two-way certificate authentication to connect to the + amphora agent API (CVE-2019-17134).
89a2f6e0136aFix urgent amphora two-way auth security bug
3 files changed · +14 −1
octavia/cmd/agent.py+2 −1 modified@@ -15,6 +15,7 @@ # make sure PYTHONPATH includes the home directory if you didn't install import multiprocessing as multiproc +import ssl import sys import gunicorn.app.base @@ -74,7 +75,7 @@ def main(): 'timeout': CONF.amphora_agent.agent_request_read_timeout, 'certfile': CONF.amphora_agent.agent_server_cert, 'ca_certs': CONF.amphora_agent.agent_server_ca, - 'cert_reqs': True, + 'cert_reqs': ssl.CERT_REQUIRED, 'preload_app': True, 'accesslog': '/var/log/amphora-agent.log', 'errorlog': '/var/log/amphora-agent.log',
octavia/tests/unit/cmd/test_agent.py+7 −0 modified@@ -9,6 +9,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import ssl import mock @@ -36,5 +37,11 @@ def test_main(self, mock_service, mock_process, mock_server, mock_amp): agent.main() + # Ensure gunicorn is initialized with the correct cert_reqs option. + # This option is what enforces use of a valid client certificate. + self.assertEqual( + ssl.CERT_REQUIRED, + mock_amp.call_args[0][1]['cert_reqs']) + mock_health_proc.start.assert_called_once_with() mock_amp_instance.run.assert_called_once()
releasenotes/notes/correct-amp-client-auth-vulnerability-6803f4bac2508e4c.yaml+5 −0 added@@ -0,0 +1,5 @@ +--- +security: + - | + Correctly require two-way certificate authentication to connect to the + amphora agent API (CVE-2019-17134).
624ff08f27bcFix urgent amphora two-way auth security bug
3 files changed · +14 −1
octavia/cmd/agent.py+2 −1 modified@@ -15,6 +15,7 @@ # make sure PYTHONPATH includes the home directory if you didn't install import multiprocessing as multiproc +import ssl import sys import gunicorn.app.base @@ -74,7 +75,7 @@ def main(): 'timeout': CONF.amphora_agent.agent_request_read_timeout, 'certfile': CONF.amphora_agent.agent_server_cert, 'ca_certs': CONF.amphora_agent.agent_server_ca, - 'cert_reqs': True, + 'cert_reqs': ssl.CERT_REQUIRED, 'preload_app': True, 'accesslog': '/var/log/amphora-agent.log', 'errorlog': '/var/log/amphora-agent.log',
octavia/tests/unit/cmd/test_agent.py+7 −0 modified@@ -9,6 +9,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import ssl import mock @@ -36,5 +37,11 @@ def test_main(self, mock_service, mock_process, mock_server, mock_amp): agent.main() + # Ensure gunicorn is initialized with the correct cert_reqs option. + # This option is what enforces use of a valid client certificate. + self.assertEqual( + ssl.CERT_REQUIRED, + mock_amp.call_args[0][1]['cert_reqs']) + mock_health_proc.start.assert_called_once_with() mock_amp_instance.run.assert_called_once()
releasenotes/notes/correct-amp-client-auth-vulnerability-6803f4bac2508e4c.yaml+5 −0 added@@ -0,0 +1,5 @@ +--- +security: + - | + Correctly require two-way certificate authentication to connect to the + amphora agent API (CVE-2019-17134).
2976a7f0f109Fix urgent amphora two-way auth security bug
3 files changed · +14 −1
octavia/cmd/agent.py+2 −1 modified@@ -15,6 +15,7 @@ # make sure PYTHONPATH includes the home directory if you didn't install import multiprocessing as multiproc +import ssl import sys import gunicorn.app.base @@ -74,7 +75,7 @@ def main(): 'timeout': CONF.amphora_agent.agent_request_read_timeout, 'certfile': CONF.amphora_agent.agent_server_cert, 'ca_certs': CONF.amphora_agent.agent_server_ca, - 'cert_reqs': True, + 'cert_reqs': ssl.CERT_REQUIRED, 'preload_app': True, 'accesslog': '/var/log/amphora-agent.log', 'errorlog': '/var/log/amphora-agent.log',
octavia/tests/unit/cmd/test_agent.py+7 −0 modified@@ -9,6 +9,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import ssl import mock @@ -36,5 +37,11 @@ def test_main(self, mock_service, mock_process, mock_server, mock_amp): agent.main() + # Ensure gunicorn is initialized with the correct cert_reqs option. + # This option is what enforces use of a valid client certificate. + self.assertEqual( + ssl.CERT_REQUIRED, + mock_amp.call_args[0][1]['cert_reqs']) + mock_health_proc.start.assert_called_once_with() mock_amp_instance.run.assert_called_once()
releasenotes/notes/correct-amp-client-auth-vulnerability-6803f4bac2508e4c.yaml+5 −0 added@@ -0,0 +1,5 @@ +--- +security: + - | + Correctly require two-way certificate authentication to connect to the + amphora agent API (CVE-2019-17134).
c2fdffc3b748Fix urgent amphora two-way auth security bug
3 files changed · +14 −1
octavia/cmd/agent.py+2 −1 modified@@ -15,6 +15,7 @@ # make sure PYTHONPATH includes the home directory if you didn't install import multiprocessing as multiproc +import ssl import sys import gunicorn.app.base @@ -75,7 +76,7 @@ def main(): 'timeout': CONF.amphora_agent.agent_request_read_timeout, 'certfile': CONF.amphora_agent.agent_server_cert, 'ca_certs': CONF.amphora_agent.agent_server_ca, - 'cert_reqs': True, + 'cert_reqs': ssl.CERT_REQUIRED, 'preload_app': True, 'accesslog': '/var/log/amphora-agent.log', 'errorlog': '/var/log/amphora-agent.log',
octavia/tests/unit/cmd/test_agent.py+7 −0 modified@@ -9,6 +9,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import ssl import mock @@ -36,5 +37,11 @@ def test_main(self, mock_service, mock_process, mock_server, mock_amp): agent.main() + # Ensure gunicorn is initialized with the correct cert_reqs option. + # This option is what enforces use of a valid client certificate. + self.assertEqual( + ssl.CERT_REQUIRED, + mock_amp.call_args[0][1]['cert_reqs']) + mock_health_proc.start.assert_called_once_with() mock_amp_instance.run.assert_called_once()
releasenotes/notes/correct-amp-client-auth-vulnerability-6803f4bac2508e4c.yaml+5 −0 added@@ -0,0 +1,5 @@ +--- +security: + - | + Correctly require two-way certificate authentication to connect to the + amphora agent API (CVE-2019-17134).
b0c2cd7b4c83Fix urgent amphora two-way auth security bug
3 files changed · +13 −1
octavia/cmd/agent.py+1 −1 modified@@ -74,7 +74,7 @@ def main(): 'timeout': CONF.amphora_agent.agent_request_read_timeout, 'certfile': CONF.amphora_agent.agent_server_cert, 'ca_certs': CONF.amphora_agent.agent_server_ca, - 'cert_reqs': True, + 'cert_reqs': ssl.CERT_REQUIRED, 'ssl_version': getattr(ssl, "PROTOCOL_%s" % proto), 'preload_app': True, 'accesslog': '/var/log/amphora-agent.log',
octavia/tests/unit/cmd/test_agent.py+7 −0 modified@@ -9,6 +9,7 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +import ssl import mock @@ -36,5 +37,11 @@ def test_main(self, mock_service, mock_process, mock_server, mock_amp): agent.main() + # Ensure gunicorn is initialized with the correct cert_reqs option. + # This option is what enforces use of a valid client certificate. + self.assertEqual( + ssl.CERT_REQUIRED, + mock_amp.call_args[0][1]['cert_reqs']) + mock_health_proc.start.assert_called_once_with() mock_amp_instance.run.assert_called_once()
releasenotes/notes/correct-amp-client-auth-vulnerability-6803f4bac2508e4c.yaml+5 −0 added@@ -0,0 +1,5 @@ +--- +security: + - | + Correctly require two-way certificate authentication to connect to the + amphora agent API (CVE-2019-17134).
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
21- access.redhat.com/errata/RHSA-2019:3743mitrevendor-advisoryx_refsource_REDHAT
- access.redhat.com/errata/RHSA-2019:3788mitrevendor-advisoryx_refsource_REDHAT
- access.redhat.com/errata/RHSA-2020:0721mitrevendor-advisoryx_refsource_REDHAT
- github.com/advisories/GHSA-r4v4-3jj7-jc29ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2019-17134ghsaADVISORY
- usn.ubuntu.com/4153-1/mitrevendor-advisoryx_refsource_UBUNTU
- github.com/openstack/octavia/commit/1725517d1d209f26b2275306d83e49c099dcbe1aghsaWEB
- github.com/openstack/octavia/commit/2976a7f0f109e17930db8a61136526ead44ea7e5ghsaWEB
- github.com/openstack/octavia/commit/624ff08f27bcb73788663cbe6d35cbe29c537844ghsaWEB
- github.com/openstack/octavia/commit/89a2f6e0136ad49d928eb65b4cf555af2a2b8ab1ghsaWEB
- github.com/openstack/octavia/commit/b0c2cd7b4c835c391cfedf12cf9f9ff8a0aabd17ghsaWEB
- github.com/openstack/octavia/commit/c2fdffc3b748f8007c72e52df257e38756923b40ghsaWEB
- review.opendev.org/686541ghsax_refsource_MISCWEB
- review.opendev.org/686543ghsax_refsource_MISCWEB
- review.opendev.org/686544ghsax_refsource_MISCWEB
- review.opendev.org/686545ghsax_refsource_MISCWEB
- review.opendev.org/686546ghsax_refsource_MISCWEB
- review.opendev.org/686547ghsax_refsource_MISCWEB
- security.openstack.org/ossa/OSSA-2019-005.htmlghsax_refsource_CONFIRMWEB
- storyboard.openstack.orgghsaWEB
- storyboard.openstack.orgmitrex_refsource_MISC
News mentions
0No linked articles in our index yet.