
Apache OpenMeetings 9.1.0 - Alta - Remota - Resto de escritura de archivos - La importación de ADMIN_BACKUP omite Path.of en Type.PATH
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-backup-config-path
Clase: Residuo de escritura de archivos Alcance: Remoto
Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation
CVE-2023-29246 cerró la inyección de NUL en Admin Config Type.PATH mediante Path.of. BackupImport.importConfigs todavía escribe esas filas sin Path.of. Una restauración de ADMIN_BACKUP almacena una ruta de convertidor sin procesar. En Java 21, ProcessBuilder también rechaza NUL, por lo que esto es el residuo del sink de 29246, no un nuevo RCE por argv.
| ID | aún sin CVE |
| Clase | Residuo de escritura de archivos (residuo de CVE-2023-29246) |
| Alcance | Remoto (restauración de ADMIN_BACKUP autenticada) |
| CWE | CWE-20, CWE-22 |
| CVSS | Alto: 6.5 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H |
| Producto | Apache OpenMeetings |
| Afectado | 9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f) importación de backup |
| Autenticación | ADMIN_BACKUP (el admin del instalador lo tiene) |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1:18160. apache/openmeetings:min-9.1.0 más Temurin 21. |
Fijé la etiqueta 9.1.0. Sin payload NUL. Sin ejecución de ffmpeg.
Poseer ADMIN_BACKUP (el admin del instalador, o un admin de backup implantado). Restaurar un zip de backup cuyas configuraciones establezcan imagemagick_path / ffmpeg a una cadena arbitraria.
| Método | Sink | Privilegio |
|---|---|---|
admin.sh -r / restauración de backup de Wicket | BackupImport.importConfigs cfgDao.update Type.PATH, sin Path.of | Integridad (probado en laboratorio): configuration.path.imagemagick y path.ffmpeg almacenados como PATH /tmp/OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS. |
| Trabajos de conversión posteriores (inferido) | argv de imagemagick/ffmpeg/sox/office a partir de esas filas | Integridad / disponibilidad (inferido): convertidor apuntado a una ruta del atacante. ProcessBuilder de Java 21 sigue rechazando NUL. No ejercitado. |
Probado en laboratorio vs inferido: la cadena testigo Type.PATH almacenada está probada en laboratorio. La ejecución del convertidor es inferida. El RCE por argv con NUL está cerrado en este JDK (InvalidPathException Nul character not allowed en Path.of; ProcessBuilder también rechaza NUL).
Control: Path.of acepta esta ruta testigo de Unix. El residuo es la comprobación faltante en la importación, no un bypass de Path.of de una ruta Unix normal. El ConfigForm de la UI sigue usando Path.of.
Requiere: ADMIN_BACKUP. Una restauración. Wicket /admin/backup/upload con un SID de REST devolvió acceso denegado (necesita el Client SID del websocket). El laboratorio usó admin.sh -r, el mismo BackupImport.performImport.
| Superficie | Motivo |
|---|---|
| Claves PATH de Admin Config UI | Path.of (ConfigForm). NUL lanza excepción. |
| NUL en ProcessBuilder en Java 21 | rechazado. El RCE de CVE-2023-29246 no se reproduce en este JDK. |
| Restauración de ROOM / LOGIN | sin ADMIN_BACKUP. |
29246 parcheó la UI. Busqué con grep Path.of en importConfigs. El remapeo imagemagick_path → path.imagemagick fuerza Type.PATH y actualiza el DAO. La misma clase que usa la UI tras una restauración.
cd lab
./run.sh
Loopback https://127.0.0.1:18160/openmeetings. Testigo de la última línea:
SUCCESS OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS
Ejecutar el mismo validador Path.of / Type.PATH en BackupImport.importConfigs que usa ConfigForm. Rechazar rutas de conversor con NUL y no canónicas antes de cfgDao.update.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Proveedor: [email protected]