CVE-2023-49805
Uptime Kuma Missing Origin Validation in WebSockets
Severity Score
Exploit Likelihood
Affected Versions
Public Exploits
1Exploited in Wild
-Decision
Descriptions
Uptime Kuma is an easy-to-use self-hosted monitoring tool. Prior to version 1.23.9, the application uses WebSocket (with Socket.io), but it does not verify that the source of communication is valid. This allows third-party website to access the application on behalf of their client. When connecting to the server using Socket.IO, the server does not validate the `Origin` header leading to other site being able to open connections to the server and communicate with it. Other websites still need to authenticate to access most features, however this can be used to circumvent firewall protections made in place by people deploying the application.
Without origin validation, Javascript executed from another origin would be allowed to connect to the application without any user interaction. Without login credentials, such a connection is unable to access protected endpoints containing sensitive data of the application. However, such a connection may allow attacker to further exploit unseen vulnerabilities of the application. Users with "No-auth" mode configured who are relying on a reverse proxy or firewall to provide protection to the application would be especially vulnerable as it would grant the attacker full access to the application.
In version 1.23.9, additional verification of the HTTP Origin header has been added to the socket.io connection handler. By default, if the `Origin` header is present, it would be checked against the Host header. Connection would be denied if the hostnames do not match, which would indicate that the request is cross-origin. Connection would be allowed if the `Origin` header is not present. Users can override this behavior by setting environment variable `UPTIME_KUMA_WS_ORIGIN_CHECK=bypass`.
Uptime Kuma es una herramienta de monitorización autohospedada y fácil de usar. Antes de la versión 1.23.9, la aplicación utiliza WebSocket (con Socket.io), pero no verifica que la fuente de comunicación sea válida. Esto permite que el sitio web de terceros acceda a la aplicación en nombre de su cliente. Al conectarse al servidor usando Socket.IO, el servidor no valida el encabezado "Origin", lo que hace que otro sitio pueda abrir conexiones al servidor y comunicarse con él. Otros sitios web aún necesitan autenticarse para acceder a la mayoría de las funciones; sin embargo, esto se puede usar para eludir las protecciones de firewall implementadas por las personas que implementan la aplicación. Sin la validación del origen, el Javascript ejecutado desde otro origen podría conectarse a la aplicación sin ninguna interacción del usuario. Sin credenciales de inicio de sesión, dicha conexión no puede acceder a endpoints protegidos que contengan datos confidenciales de la aplicación. Sin embargo, dicha conexión puede permitir al atacante explotar aún más vulnerabilidades invisibles de la aplicación. Los usuarios con el modo "Sin autenticación" configurado que dependen de un proxy inverso o un firewall para brindar protección a la aplicación serían especialmente vulnerables ya que otorgarían al atacante acceso completo a la aplicación. En la versión 1.23.9, se agregó verificación adicional del encabezado de origen HTTP al controlador de conexión socket.io. De forma predeterminada, si el encabezado "Origin" está presente, se comparará con el encabezado Host. Se denegaría la conexión si los nombres de host no coinciden, lo que indicaría que la solicitud es de origen cruzado. Se permitirá la conexión si el encabezado "Origin" no está presente. Los usuarios pueden anular este comportamiento configurando la variable de entorno `UPTIME_KUMA_WS_ORIGIN_CHECK=bypass`.
CVSS Scores
SSVC
- Decision:-
Timeline
- 2023-11-30 CVE Reserved
- 2023-12-11 CVE Published
- 2024-08-02 CVE Updated
- 2024-08-02 First Exploit
- 2024-11-10 EPSS Updated
- ---------- Exploited in Wild
- ---------- KEV Due Date
CWE
- CWE-346: Origin Validation Error
- CWE-1385: Missing Origin Validation in WebSockets
CAPEC
References (2)
URL | Tag | Source |
---|
URL | Date | SRC |
---|---|---|
https://github.com/louislam/uptime-kuma/security/advisories/GHSA-mj22-23ff-2hrr | 2024-08-02 |
URL | Date | SRC |
---|---|---|
https://github.com/louislam/uptime-kuma/commit/2815cc73cfd9d8ced889e00e72899708220d184f | 2023-12-14 |
URL | Date | SRC |
---|
Affected Vendors, Products, and Versions
Vendor | Product | Version | Other | Status | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Vendor | Product | Version | Other | Status | <-- --> | Vendor | Product | Version | Other | Status |
Dockge.kuma Search vendor "Dockge.kuma" | Dockge Search vendor "Dockge.kuma" for product "Dockge" | < 1.3.3 Search vendor "Dockge.kuma" for product "Dockge" and version " < 1.3.3" | - |
Affected
| ||||||
Uptime.kuma Search vendor "Uptime.kuma" | Uptime Kuma Search vendor "Uptime.kuma" for product "Uptime Kuma" | < 1.23.9 Search vendor "Uptime.kuma" for product "Uptime Kuma" and version " < 1.23.9" | - |
Affected
|