{"id":"CVE-2020-26214","aliases":["EUVD-2020-0001","GHSA-5hmm-x8q8-w5jh","PYSEC-2020-159"],"status":"published","title":"LDAP authentication bypass in Alerta","description":"In Alerta before version 8.1.0, users may be able to bypass LDAP authentication if they provide an empty password when Alerta server is configure to use LDAP as the authorization provider. Only deployments where LDAP servers are configured to allow unauthenticated authentication mechanism for anonymous authorization are affected. A fix has been implemented in version 8.1.0 that returns HTTP 401 Unauthorized response for any authentication attempts where the password field is empty. As a workaround LDAP administrators can disallow unauthenticated bind requests by clients.","severity":{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.65933,"percentile":0.99283,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-287"],"published":"2020-11-06T17:35:49Z","modified":"2026-10-20T10:52:56Z","exploits":[{"source":"nuclei","id":"CVE-2020-26214","title":"Alerta \u003c 8.1.0 - Authentication Bypass","type":"detection template","url":"https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2020/CVE-2020-26214.yaml"}],"fixes":[{"ecosystem":"PyPI","package":"alerta-server","fixed_in":["8.1.0","7.5.7"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"alerta-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.0.0"},{"fixed":"8.1.0"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"alerta-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.5.7"}]}]},{"source":"osv","ecosystem":"PyPI","package":"alerta-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.0.0"},{"fixed":"8.1.0"}]}],"versions":["8.0.0","8.0.1","8.0.2","8.0.3"]},{"source":"osv","ecosystem":"PyPI","package":"alerta-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.5.7"}]}],"versions":["3.1.2","3.2.0","3.2.3","3.2.4","3.2.6","3.2.7","3.2.8","3.2.9","3.3.0","3.3.1","3.3.2","3.3.3","3.3.4","3.3.5","3.3.6","3.3.7","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.0.5","4.0.6","4.0.7","4.0.8","4.0.9","4.1.0","4.1.1","4.1.2","4.1.4","4.1.5","4.1.6","4.1.7","4.1.8","4.10.0","4.10.1","4.10.2","4.10.3","4.10.4","4.10.5","4.2.1","4.2.2","4.2.3","4.2.4","4.2.5","4.2.6","4.3.0","4.3.1","4.3.2","4.4.0","4.4.1","4.4.10","4.4.11","4.4.12","4.4.13","4.4.2","4.4.5","4.4.6","4.4.7","4.4.8","4.4.9","4.5.0","4.5.1","4.5.2","4.5.3","4.5.4","4.5.5","4.6.0","4.6.1","4.6.2","4.6.3","4.6.4","4.6.5","4.6.6","4.6.7","4.6.8","4.6.9","4.7.0","4.7.1","4.7.10","4.7.11","4.7.12","4.7.13","4.7.14","4.7.15","4.7.16","4.7.17","4.7.18","4.7.19","4.7.2","4.7.20","4.7.21","4.7.22","4.7.23","4.7.24","4.7.25","4.7.26","4.7.27","4.7.28","4.7.29","4.7.3","4.7.30","4.7.31","4.7.32","4.7.33","4.7.4","4.7.5","4.7.6","4.7.7","4.7.8","4.7.9","4.8.0","4.8.1","4.8.10","4.8.11","4.8.12","4.8.13","4.8.14","4.8.15","4.8.16","4.8.17","4.8.18","4.8.19","4.8.2","4.8.20","4.8.21","4.8.22","4.8.23","4.8.24","4.8.25","4.8.26","4.8.3","4.8.4","4.8.5","4.8.6","4.8.7","4.8.8","4.8.9","4.9.0","4.9.1","4.9.2","4.9.3","4.9.4","4.9.5","4.9.6","5.0.0","5.0.0rc1","5.0.0rc2","5.0.0rc3","5.0.1","5.0.2","5.0.3","5.0.4","5.0.5","5.0.6","5.0.7","5.0.8","5.0.9","5.1.0","5.1.1","5.2.0","5.2.1","5.2.2","5.2.3","5.2.4","5.2.5","5.2.6","5.2.7","5.2.8","5.2.9","6.0.0","6.0.1","6.1.0","6.2.0","6.2.1","6.3.0","6.3.1","6.3.2","6.4.0","6.5.0","6.6.0","6.6.1","6.7.0","6.7.1","6.7.2","6.7.3","6.7.4","6.7.5","6.8.0","6.8.1","6.8.2","6.8.3","6.8.4","6.8.5","7.0.0","7.0.1","7.1.0","7.1.1","7.1.2","7.2.0","7.2.1","7.2.10","7.2.11","7.2.2","7.2.3","7.2.4","7.2.5","7.2.6","7.2.7","7.2.8","7.2.9","7.3.0","7.3.1","7.3.2","7.4.0","7.4.1","7.4.4","7.4.5","7.4.6","7.5.0","7.5.1","7.5.2","7.5.3","7.5.4","7.5.5","7.5.6"]},{"source":"osv","ecosystem":"PyPI","package":"alerta-server","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"2bfa31779a4c9df2fa68fa4d0c5c909698c5ef65"}]},{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"7.5.7"},{"introduced":"8.0.0"},{"fixed":"8.1.0"}]}],"versions":["3.1.2","3.2.0","3.2.3","3.2.4","3.2.6","3.2.7","3.2.8","3.2.9","3.3.0","3.3.1","3.3.2","3.3.3","3.3.4","3.3.5","3.3.6","3.3.7","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.0.5","4.0.6","4.0.7","4.0.8","4.0.9","4.1.0","4.1.1","4.1.2","4.1.4","4.1.5","4.1.6","4.1.7","4.1.8","4.2.1","4.2.2","4.2.3","4.2.4","4.2.5","4.2.6","4.3.0","4.3.1","4.3.2","4.4.0","4.4.1","4.4.2","4.4.5","4.4.6","4.4.7","4.4.8","4.4.9","4.4.10","4.4.11","4.4.12","4.4.13","4.5.0","4.5.1","4.5.2","4.5.3","4.5.4","4.5.5","4.6.0","4.6.1","4.6.2","4.6.3","4.6.4","4.6.5","4.6.6","4.6.7","4.6.8","4.6.9","4.7.0","4.7.1","4.7.2","4.7.3","4.7.4","4.7.5","4.7.6","4.7.7","4.7.8","4.7.9","4.7.10","4.7.11","4.7.12","4.7.13","4.7.14","4.7.15","4.7.16","4.7.17","4.7.18","4.7.19","4.7.20","4.7.21","4.7.22","4.7.23","4.7.24","4.7.25","4.7.26","4.7.27","4.7.28","4.7.29","4.7.30","4.7.31","4.7.32","4.7.33","4.8.0","4.8.1","4.8.2","4.8.3","4.8.4","4.8.5","4.8.6","4.8.7","4.8.8","4.8.9","4.8.10","4.8.11","4.8.12","4.8.13","4.8.14","4.8.15","4.8.16","4.8.17","4.8.18","4.8.19","4.8.20","4.8.21","4.8.22","4.8.23","4.8.24","4.8.25","4.8.26","4.9.0","4.9.1","4.9.2","4.9.3","4.9.4","4.9.5","4.9.6","4.10.0","4.10.1","4.10.2","4.10.3","4.10.4","4.10.5","5.0.0rc1","5.0.0rc2","5.0.0rc3","5.0.0","5.0.1","5.0.2","5.0.3","5.0.4","5.0.5","5.0.6","5.0.7","5.0.8","5.0.9","5.1.0","5.1.1","5.2.0","5.2.1","5.2.2","5.2.3","5.2.4","5.2.5","5.2.6","5.2.7","5.2.8","5.2.9","6.0.0","6.0.1","6.1.0","6.2.0","6.2.1","6.3.0","6.3.1","6.3.2","6.4.0","6.5.0","6.6.0","6.6.1","6.7.0","6.7.1","6.7.2","6.7.3","6.7.4","6.7.5","6.8.0","6.8.1","6.8.2","6.8.3","6.8.4","6.8.5","7.0.0","7.0.1","7.1.0","7.1.1","7.1.2","7.2.0","7.2.1","7.2.2","7.2.3","7.2.4","7.2.5","7.2.6","7.2.7","7.2.8","7.2.9","7.2.10","7.2.11","7.3.0","7.3.1","7.3.2","7.4.0","7.4.1","7.4.4","7.4.5","7.4.6","7.5.0","7.5.1","7.5.2","7.5.3","7.5.4","7.5.5","7.5.6","8.0.0","8.0.1","8.0.2","8.0.3"]}],"products":[{"vendor":"alerta","product":"alerta"},{"vendor":"alerta_project","product":"alerta"}],"references":[{"url":"https://github.com/alerta/alerta/security/advisories/GHSA-5hmm-x8q8-w5jh","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://github.com/alerta/alerta/issues/1277","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","web","report"]},{"url":"https://github.com/alerta/alerta/pull/1345","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://github.com/alerta/alerta/commit/2bfa31779a4c9df2fa68fa4d0c5c909698c5ef65","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web"]},{"url":"https://pypi.org/project/alerta-server/8.1.0/","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","package"]},{"url":"https://tools.ietf.org/html/rfc4513#section-5.1.2","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-26214","tags":["advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/alerta-server/PYSEC-2020-159.yaml","tags":["web"]},{"url":"https://pypi.org/project/alerta-server/8.1.0","tags":["web"]},{"url":"https://github.com/advisories/GHSA-5hmm-x8q8-w5jh"},{"url":"https://github.com/alerta/alerta","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2020-26214","title":"LDAP authentication bypass in Alerta","description":"In Alerta before version 8.1.0, users may be able to bypass LDAP authentication if they provide an empty password when Alerta server is configure to use LDAP as the authorization provider. Only deployments where LDAP servers are configured to allow unauthenticated authentication mechanism for anonymous authorization are affected. A fix has been implemented in version 8.1.0 that returns HTTP 401 Unauthorized response for any authentication attempts where the password field is empty. As a workaround LDAP administrators can disallow unauthenticated bind requests by clients.","status":"published","published":"2020-11-06T17:50:17Z","modified":"2024-08-04T15:49:07.233Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical","assessor":"cna"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T14:35:46.129376Z"}],"euvd":[{"id":"EUVD-2020-0001","description":"In Alerta before version 8.1.0, users may be able to bypass LDAP authentication if they provide an empty password when Alerta server is configure to use LDAP as the authorization provider. Only deployments where LDAP servers are configured to allow unauthenticated authentication mechanism for anonymous authorization are affected. A fix has been implemented in version 8.1.0 that returns HTTP 401 Unauthorized response for any authentication attempts where the password field is empty. As a workaround LDAP administrators can disallow unauthenticated bind requests by clients.","status":"published","published":"2020-11-06T17:50:17Z","modified":"2024-08-04T15:49:07Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"updated_at":"2026-11-03T03:07:16.308974Z"}],"ghsa":[{"id":"GHSA-5hmm-x8q8-w5jh","title":"LDAP authentication bypass with empty password","description":"### Impact\nUsers may be able to bypass LDAP authentication if they provide an empty password when Alerta server is configure to use LDAP as the authorization provider.\n\nOnly deployments where LDAP servers are configured to allow unauthenticated binds (eg. default on Active Directory) are affected.\n\n### Patches\nA fix has been implemented that returns HTTP 401 Unauthorized response for any authentication attempts where the password field is empty. See https://github.com/alerta/alerta/pull/1345\n\n### Workarounds\nLDAP administrators can disallow unauthenticated bind requests by clients.\n\n### References\nhttps://tools.ietf.org/html/rfc4513#section-5.1.2\nhttps://pypi.org/project/alerta-server/8.1.0/\n\n### For more information\nIf you have any questions or comments about this advisory:\n* Add a comment to the issue [#1277](https://github.com/alerta/alerta/issues/1277)\n* Email us at [admin@alerta.dev](mailto:admin@alerta.dev)","status":"published","published":"2020-11-06T17:35:49Z","modified":"2024-09-04T19:53:06Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"},{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","level":"critical"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T14:38:01.080229Z"}],"nvd":[{"id":"CVE-2020-26214","description":"In Alerta before version 8.1.0, users may be able to bypass LDAP authentication if they provide an empty password when Alerta server is configure to use LDAP as the authorization provider. Only deployments where LDAP servers are configured to allow unauthenticated authentication mechanism for anonymous authorization are affected. A fix has been implemented in version 8.1.0 that returns HTTP 401 Unauthorized response for any authentication attempts where the password field is empty. As a workaround LDAP administrators can disallow unauthenticated bind requests by clients.","status":"published","published":"2020-11-06T18:15:12.437Z","modified":"2026-06-17T03:07:50.25Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T14:06:21.80969Z"}],"osv":[{"id":"CVE-2020-26214","description":"In Alerta before version 8.1.0, users may be able to bypass LDAP authentication if they provide an empty password when Alerta server is configure to use LDAP as the authorization provider. Only deployments where LDAP servers are configured to allow unauthenticated authentication mechanism for anonymous authorization are affected. A fix has been implemented in version 8.1.0 that returns HTTP 401 Unauthorized response for any authentication attempts where the password field is empty. As a workaround LDAP administrators can disallow unauthenticated bind requests by clients.","status":"published","published":"2020-11-06T18:15:12.437Z","modified":"2026-10-20T10:52:56.160218544Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:44:15.879068Z"},{"id":"GHSA-5hmm-x8q8-w5jh","title":"LDAP authentication bypass with empty password","description":"### Impact\nUsers may be able to bypass LDAP authentication if they provide an empty password when Alerta server is configure to use LDAP as the authorization provider.\n\nOnly deployments where LDAP servers are configured to allow unauthenticated binds (eg. default on Active Directory) are affected.\n\n### Patches\nA fix has been implemented that returns HTTP 401 Unauthorized response for any authentication attempts where the password field is empty. See https://github.com/alerta/alerta/pull/1345\n\n### Workarounds\nLDAP administrators can disallow unauthenticated bind requests by clients.\n\n### References\nhttps://tools.ietf.org/html/rfc4513#section-5.1.2\nhttps://pypi.org/project/alerta-server/8.1.0/\n\n### For more information\nIf you have any questions or comments about this advisory:\n* Add a comment to the issue [#1277](https://github.com/alerta/alerta/issues/1277)\n* Email us at [admin@alerta.dev](mailto:admin@alerta.dev)","status":"published","published":"2020-11-06T17:35:49Z","modified":"2026-07-08T06:00:09.101662806Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"},{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","level":"critical"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T15:46:38.553953Z"},{"id":"PYSEC-2020-159","description":"In Alerta before version 8.1.0, users may be able to bypass LDAP authentication if they provide an empty password when Alerta server is configure to use LDAP as the authorization provider. Only deployments where LDAP servers are configured to allow unauthenticated authentication mechanism for anonymous authorization are affected. A fix has been implemented in version 8.1.0 that returns HTTP 401 Unauthorized response for any authentication attempts where the password field is empty. As a workaround LDAP administrators can disallow unauthenticated bind requests by clients.","status":"published","published":"2020-11-06T18:15:00Z","modified":"2023-11-08T04:03:14.621217Z","updated_at":"2026-11-02T15:52:52.192131Z"}]}}
