
Apache OpenMeetings 9.1.0 - Alta - Remoto - Gravação de arquivo residual - A importação ADMIN_BACKUP ignora Path.of em Type.PATH
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-backup-config-path
Classe: Resíduo de escrita em arquivo Alcance: Remoto
Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation
A CVE-2023-29246 fechou a injeção de NUL no Admin Config Type.PATH via Path.of. BackupImport.importConfigs ainda grava essas linhas sem Path.of. Uma restauração ADMIN_BACKUP armazena um caminho de conversor bruto. No Java 21, ProcessBuilder também rejeita NUL, então este é o resíduo do sink da 29246, não um novo RCE de argv.
| ID | ainda sem CVE |
| Classe | Resíduo de escrita em arquivo (resíduo da CVE-2023-29246) |
| Alcance | Remoto (restauração 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 |
| Produto | Apache OpenMeetings |
| Afetado | 9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f) importação de backup |
| Autenticação | ADMIN_BACKUP (o admin do instalador a possui) |
| Licença | GNU Affero GPL v3.0 |
| Lab | Apenas 127.0.0.1:18160. apache/openmeetings:min-9.1.0 mais Temurin 21. |
Fixe a tag 9.1.0. Sem payload NUL. Sem execução de ffmpeg.
Possuir ADMIN_BACKUP (admin do instalador, ou um admin de backup plantado). Restaurar um zip de backup cujas configs definem imagemagick_path / ffmpeg para uma string arbitrária.
| Método | Sink | Privilégio |
|---|---|---|
admin.sh -r / restauração de backup Wicket | BackupImport.importConfigs cfgDao.update Type.PATH, sem Path.of | Integridade (comprovada em lab): configuration.path.imagemagick e path.ffmpeg armazenados como PATH /tmp/OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS. |
| Jobs de conversão posteriores (inferido) | argv de imagemagick/ffmpeg/sox/office a partir dessas linhas | Integridade / disponibilidade (inferido): conversor apontado para um caminho do atacante. ProcessBuilder do Java 21 ainda rejeita NUL. Não exercitado. |
Comprovado em lab vs inferido: a string testemunha Type.PATH armazenada é de lab. A execução do conversor é inferida. O RCE de argv com NUL está fechado neste JDK (InvalidPathException Nul character not allowed em Path.of; ProcessBuilder também rejeita NUL).
Controle: Path.of aceita este caminho testemunha Unix. O resíduo é a verificação ausente na importação, não um bypass de Path.of de um caminho Unix normal. O ConfigForm da UI ainda usa Path.of.
Requer: ADMIN_BACKUP. Uma restauração. Wicket /admin/backup/upload com um SID REST retornou acesso negado (precisa do Client SID do websocket). O lab usou admin.sh -r, o mesmo BackupImport.performImport.
| Superfície | Motivo |
|---|---|
| Chaves PATH do Admin Config UI | Path.of (ConfigForm). NUL lança exceção. |
| NUL no ProcessBuilder no Java 21 | rejeitado. O RCE da CVE-2023-29246 não se reproduz neste JDK. |
| Restauração ROOM / LOGIN | sem ADMIN_BACKUP. |
A 29246 corrigiu a UI. Eu fiz grep de importConfigs por Path.of. O remapeamento imagemagick_path → path.imagemagick força Type.PATH e atualiza o DAO. A mesma classe que a UI usa após uma restauração.
cd lab
./run.sh
Loopback https://127.0.0.1:18160/openmeetings. Testemunha da última linha:
SUCCESS OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS
Execute o mesmo validador Path.of / Type.PATH em BackupImport.importConfigs que ConfigForm usa. Rejeite caminhos de conversor NUL e não canônicos antes de cfgDao.update.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Vendor: [email protected]