CVE-2020-8554
Kubernetes man in the middle using LoadBalancer or ExternalIPs
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
6.3
Kubernetes man in the middle using LoadBalancer or ExternalIPs
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
CVE-2020-8554- CVSS 3.1
- 6.3 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L - Weakness
- CWE-283
- Updated
- 2026-11-02
EUVDEUVD-2022-1072
6.3
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
EUVD-2022-1072- CVSS 3.1
- 6.3 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-j9wf-vvm6-4r9w
5.0
Unverified Ownership in Kubernetes
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
GHSA-j9wf-vvm6-4r9w- CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - Weakness
- CWE-283
- Updated
- 2026-11-02
NVD
6.3
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
CVE-2020-8554- CVSS 3.1
- 6.3 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L - CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - CVSS 2.0
- 6.0 Medium
AV:N/AC:M/Au:S/C:P/I:P/A:P - Weakness
- CWE-283
- Updated
- 2026-11-02
OSVAZL-31696
5.0
CVE-2020-8554 affecting package python-kubernetes for versions less than 21.7.0-1
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
AZL-31696- CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
OSVAZL-31731
5.0
CVE-2020-8554 affecting package kubernetes for versions less than 1.28.3-1
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
AZL-31731- CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
Show 7 moreShow less
OSVAZL-34893
5.0
CVE-2020-8554 affecting package kubernetes for versions less than 1.28.3-2
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
AZL-34893- CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-05
OSVAZL-35135
5.0
CVE-2020-8554 affecting package python-kubernetes for versions less than 21.7.0-1
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
AZL-35135- CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-05
OSV
5.0
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
CVE-2020-8554- CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
OSVDEBIAN-CVE-2020-8554
5.0
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
DEBIAN-CVE-2020-8554- CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
OSVGHSA-j9wf-vvm6-4r9w
5.0
Unverified Ownership in Kubernetes
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
GHSA-j9wf-vvm6-4r9w- CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - Weakness
- CWE-283
- Updated
- 2026-11-02
OSVRHSA-2021:0079
6.5
Red Hat Security Advisory: OpenShift Container Platform 3.11.374 bug fix and security update
- Record
RHSA-2021:0079- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2020-8554
6.3
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typically be granted to users) of a LoadBalancer service can set the status.loadBalancer.ingress.ip to similar effect.
- Record
UBUNTU-CVE-2020-8554- CVSS 3.1
- 6.3 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L - CVSS 3.1
- 5.0 Medium
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
k8s.io/kubernetesGo |
through 1.22.0 | None known |
python-kubernetesAzure Linux:2 |
before 21.7.0-1 | 21.7.0-1 |
kubernetesAzure Linux:2 |
before 1.28.3-1 | 1.28.3-1 |
kubernetesAzure Linux:3 |
before 1.28.3-2 | 1.28.3-2 |
python-kubernetesAzure Linux:3 |
before 21.7.0-1 | 21.7.0-1 |
kubernetesDebian:13 |
before 1.31.4+ds-1 | 1.31.4+ds-1 |
kubernetesDebian:14 |
before 1.31.4+ds-1 | 1.31.4+ds-1 |
atomic-enterprise-service-catalogRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 1:3.11.374-1.git.1675.738abcc.el7 | 1:3.11.374-1.git.1675.738abcc.el7 |
atomic-enterprise-service-catalog-svcatRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 1:3.11.374-1.git.1675.738abcc.el7 | 1:3.11.374-1.git.1675.738abcc.el7 |
atomic-openshiftRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
Show 30 moreShow less
| Package | Affected | Fixed |
|---|---|---|
atomic-openshift-clientsRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-clients-redistributableRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-cluster-autoscalerRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.2996f62.el7 | 0:3.11.374-1.git.0.2996f62.el7 |
atomic-openshift-deschedulerRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.299.f128e96.el7 | 0:3.11.374-1.git.299.f128e96.el7 |
atomic-openshift-docker-excluderRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-dockerregistryRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.481.e6a880c.el7 | 0:3.11.374-1.git.481.e6a880c.el7 |
atomic-openshift-excluderRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-hyperkubeRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-hypershiftRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-masterRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-metrics-serverRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.53.9df25a9.el7 | 0:3.11.374-1.git.53.9df25a9.el7 |
atomic-openshift-nodeRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-node-problem-detectorRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.263.28335fb.el7 | 0:3.11.374-1.git.263.28335fb.el7 |
atomic-openshift-podRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-sdn-ovsRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-service-idlerRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.15.523a1f7.el7 | 0:3.11.374-1.git.15.523a1f7.el7 |
atomic-openshift-template-service-brokerRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-testsRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.ebd3ee9.el7 | 0:3.11.374-1.git.0.ebd3ee9.el7 |
atomic-openshift-web-consoleRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.647.9e78d83.el7 | 0:3.11.374-1.git.647.9e78d83.el7 |
golang-github-openshift-oauth-proxyRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.439.966c536.el7 | 0:3.11.374-1.git.439.966c536.el7 |
golang-github-prometheus-alertmanagerRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.3abd2a5.el7 | 0:3.11.374-1.git.0.3abd2a5.el7 |
golang-github-prometheus-node_exporterRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.1062.490d6d5.el7 | 0:3.11.374-1.git.1062.490d6d5.el7 |
golang-github-prometheus-prometheusRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.5026.29379c4.el7 | 0:3.11.374-1.git.5026.29379c4.el7 |
openshift-enterprise-autohealRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.218.9cf7939.el7 | 0:3.11.374-1.git.218.9cf7939.el7 |
openshift-enterprise-cluster-capacityRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.379.80bd08f.el7 | 0:3.11.374-1.git.379.80bd08f.el7 |
prometheusRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.5026.29379c4.el7 | 0:3.11.374-1.git.5026.29379c4.el7 |
prometheus-alertmanagerRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.0.3abd2a5.el7 | 0:3.11.374-1.git.0.3abd2a5.el7 |
prometheus-node-exporterRed Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:3.11.374-1.git.1062.490d6d5.el7 | 0:3.11.374-1.git.1062.490d6d5.el7 |
python-urllib3Red Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:1.26.2-1.el7 | 0:1.26.2-1.el7 |
python2-urllib3Red Hat:openshift:3.11::el7 From an advisory covering 3 CVEs |
before 0:1.26.2-1.el7 | 0:1.26.2-1.el7 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | rancher/externalip-webhook | 2020-12-01 |
| PoC in GitHub | jrmurray000/CVE-2020-8554 | 2020-12-11 |
| PoC in GitHub | twistlock/k8s-cve-2020-8554-mitigations | 2020-12-20 |
| PoC in GitHub | Dviejopomata/CVE-2020-8554 | 2021-01-21 |
| PoC in GitHub | alebedev87/gatekeeper-cve-2020-8554 | 2021-02-09 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| exploits, facts | OSV | |
| affected | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-8554 is a medium vulnerability (CVSS 6.3) in Kubernetes, published January 21, 2021. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 8.72%, the 95th percentile. Fixed in python-kubernetes 21.7.0-1.
References
kubernetes.io/blog/2026/05/26/reconciling-unfixed-kubernetes-cves
groups.google.com/g/kubernetes-security-announce/c/iZWsF9nbKE8
github.com/kubernetes/kubernetes/issues/97076
lists.apache.org/thread.html/rcafa485d63550657f068775801aeb706b7a07140a8ebbdef822b3bb3%40%3Ccommits.druid.apache.org%3E
lists.apache.org/thread.html/r0c76b3d0be348f788cd947054141de0229af00c540564711e828fd40%40%3Ccommits.druid.apache.org%3E
lists.apache.org/thread.html/rdb223e1b82e3d7d8e4eaddce8dd1ab87252e3935cc41c859f49767b6%40%3Ccommits.druid.apache.org%3E
Show 34 moreShow less
lists.apache.org/thread.html/r1975078e44d96f2a199aa90aa874b57a202eaf7f25f2fde6d1c44942%40%3Ccommits.druid.apache.org%3E
oracle.com//security-alerts/cpujul2021.html
oracle.com/security-alerts/cpujan2022.html
oracle.com/security-alerts/cpuapr2022.html
nvd.nist.gov/vuln/detail/CVE-2020-8554
github.com/kubernetes/kubernetes/issues/97110
lists.apache.org/thread.html/r0c76b3d0be348f788cd947054141de0229af00c540564711e828fd40@%3Ccommits.druid.apache.org%3E
lists.apache.org/thread.html/r1975078e44d96f2a199aa90aa874b57a202eaf7f25f2fde6d1c44942@%3Ccommits.druid.apache.org%3E
lists.apache.org/thread.html/rcafa485d63550657f068775801aeb706b7a07140a8ebbdef822b3bb3@%3Ccommits.druid.apache.org%3E
lists.apache.org/thread.html/rdb223e1b82e3d7d8e4eaddce8dd1ab87252e3935cc41c859f49767b6@%3Ccommits.druid.apache.org%3E
github.com/advisories/GHSA-j9wf-vvm6-4r9w
security-tracker.debian.org/tracker/CVE-2020-8554
github.com/kubernetes/kubernetes
access.redhat.com/errata/RHSA-2021:0079
access.redhat.com/security/updates/classification
bugzilla.redhat.com/show_bug.cgi?id=1691529
bugzilla.redhat.com/show_bug.cgi?id=1866789
bugzilla.redhat.com/show_bug.cgi?id=1870050
bugzilla.redhat.com/show_bug.cgi?id=1881319
bugzilla.redhat.com/show_bug.cgi?id=1883632
bugzilla.redhat.com/show_bug.cgi?id=1891051
security.access.redhat.com/data/csaf/v2/advisories/2021/rhsa-2021_0079.json
access.redhat.com/security/cve/CVE-2019-11840
cve.org/CVERecord?id=CVE-2019-11840
nvd.nist.gov/vuln/detail/CVE-2019-11840
groups.google.com/forum
access.redhat.com/security/cve/CVE-2020-8554
cve.org/CVERecord?id=CVE-2020-8554
blog.champtar.fr/K8S_MITM_LoadBalancer_ExternalIPs
access.redhat.com/security/cve/CVE-2020-26137
cve.org/CVERecord?id=CVE-2020-26137
nvd.nist.gov/vuln/detail/CVE-2020-26137
ubuntu.com/security/CVE-2020-8554
openwall.com/lists/oss-security/2020/12/07/5