
Apache OpenMeetings 9.1.0 - Alta - Remoto - KMS sem autenticação - o docs docker publica o Kurento JSON-RPC na porta 8888
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-kms-unauth
Classe: KMS sem autenticação Alcance: Remoto
Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation
O Java do OpenMeetings define kurento.ws.url como loopback por padrão. O InstallMediaServer.md oficial publica o Kurento com docker -p 8888:8888. Esse JSON-RPC não tem autenticação. Um connect WebSocket não autenticado mais invoke manager_ServerManager.getInfo retorna Kurento 7.3.0.
| ID | ainda sem CVE |
| Classe | KMS sem autenticação |
| Alcance | Remoto (JSON-RPC não autenticado na porta 8888 publicada) |
| CWE | CWE-306 |
| CVSS | Alto: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:L |
| Produto | Apache OpenMeetings + Kurento 7.3.0 |
| Afetado | publicação de KMS 8888 em docs/docker da versão 9.1.0 |
| Autenticação | nenhuma no JSON-RPC do Kurento |
| Licença | GNU Affero GPL v3.0 |
| Lab | apenas 127.0.0.1:18164. kurento/kurento-media-server:7.3.0 conforme o caminho de publicação dos docs. |
Fixe a tag 9.1.0. O KMS 7.3.0+ é exigido por essa versão.
Alcançar a porta Kurento publicada. Sem cabeçalho Authorization. HTTP POST é apenas WebSocket (426). ws://host:8888/kurento faz upgrade 101.
| Método | Destino | Privilégio |
|---|---|---|
ping sem autenticação | JSON-RPC do Kurento | Recon (comprovado em lab): pong. |
connect sem autenticação | criação de sessão | Integridade (comprovado em lab): sessionId sem nenhum segredo. |
invoke manager_ServerManager.getInfo sem autenticação | ServerInfo | Recon (comprovado em lab): versão 7.3.0, lista de módulos (chroma/core/...). |
PlayerEndpoint / RecorderEndpoint sem autenticação (mesmo socket) | elementos de mídia do KMS | Recon / integridade (inferido): busca HTTP/arquivo como o UID do KMS; criação/destruição de pipeline. Não exercitado. O lab ficou no getInfo. |
Comprovado em lab vs inferido: ping, connect, getInfo são de lab. SSRF via PlayerEndpoint / DoS de pipeline são inferidos a partir do JSON-RPC sem autenticação.
Requer: KMS publicado na rede da forma que InstallMediaServer.md mostra (-p 8888:8888). O padrão loopback do Java do OM é seguro até essa publicação.
| Superfície | Motivo |
|---|---|
Padrão kurento.ws.url do Java do OM | loopback. Esse resquício é a publicação dos docs, não o padrão do Java. |
/openmeetings do OM sem um SID | Wicket/CXF ainda exigem uma sessão para salas. |
HTTP POST /kurento sem Upgrade | 426. O JSON-RPC é o WebSocket. |
A imagem completa apache/openmeetings:9.1.0 inicia o kurento-media-server em 0.0.0.0:8888 sem autenticação JSON-RPC, e então esse contêiner pode falhar o catalina como nobody sem JAVA_HOME. O resquício que os docs ensinam é a publicação do KMS standalone. Eu montei o lab com kurento/kurento-media-server:7.3.0 usando 127.0.0.1:18164:8888.
cd lab
./run.sh
Loopback ws://127.0.0.1:18164/kurento. Última linha do witness:
SUCCESS OPENMEETINGS-KMS-UNAUTH-WITNESS
Não publique a 8888 em uma interface pública. Vincule o KMS ao loopback ou a uma rede compose privada. Coloque um token de autenticação no JSON-RPC (secureKms do Kurento / proxy reverso). Altere o exemplo do documento de instalação para não usar -p 8888:8888.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Vendor: [email protected]