
Apache OpenMeetings 9.1.0 - Élevée - Distante - Écriture de fichier résiduelle - L'import ADMIN_BACKUP ignore Path.of sur Type.PATH
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-backup-config-path
Classe : Reliquat d'écriture de fichier Portée : Distante
Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation
CVE-2023-29246 a fermé l'injection de NUL sur Type.PATH de la configuration d'administration via Path.of. BackupImport.importConfigs écrit toujours ces lignes sans Path.of. Une restauration ADMIN_BACKUP stocke un chemin de convertisseur brut. Sur Java 21, ProcessBuilder rejette également le NUL, il s'agit donc du reliquat du sink de 29246, et non d'une nouvelle RCE par argv.
| ID | pas encore de CVE |
| Classe | Reliquat d'écriture de fichier (reliquat de CVE-2023-29246) |
| Portée | Distante (restauration ADMIN_BACKUP authentifiée) |
| CWE | CWE-20, CWE-22 |
| CVSS | Élevé : 6.5 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H |
| Produit | Apache OpenMeetings |
| Affecté | 9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f) import de sauvegarde |
| Auth | ADMIN_BACKUP (l'administrateur de l'installateur la possède) |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1:18160 uniquement. apache/openmeetings:min-9.1.0 plus Temurin 21. |
J'ai épinglé le tag 9.1.0. Aucune charge utile NUL. Aucune exécution ffmpeg.
Détenir ADMIN_BACKUP (administrateur de l'installateur, ou un administrateur de sauvegarde implanté). Restaurer un zip de sauvegarde dont les configurations définissent imagemagick_path / ffmpeg sur une chaîne arbitraire.
| Méthode | Sink | Privilège |
|---|---|---|
admin.sh -r / restauration de sauvegarde Wicket | BackupImport.importConfigs cfgDao.update Type.PATH, sans Path.of | Intégrité (prouvée en labo) : configuration.path.imagemagick et path.ffmpeg stockés en tant que PATH /tmp/OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS. |
| Tâches de conversion ultérieures (déduites) | argv imagemagick/ffmpeg/sox/office issus de ces lignes | Intégrité / disponibilité (déduites) : convertisseur pointé vers un chemin contrôlé par l'attaquant. ProcessBuilder de Java 21 rejette toujours le NUL. Non exercé. |
Prouvé en labo vs déduit : la chaîne témoin Type.PATH stockée est prouvée en labo. L'exécution du convertisseur est déduite. La RCE par argv NUL est fermée sur ce JDK (InvalidPathException Nul character not allowed sur Path.of ; ProcessBuilder rejette aussi le NUL).
Contrôle : Path.of accepte ce chemin témoin Unix. Le reliquat est l'absence de vérification à l'import, et non un contournement de Path.of pour un chemin Unix normal. L'interface ConfigForm utilise toujours Path.of.
Nécessite : ADMIN_BACKUP. Une restauration. Wicket /admin/backup/upload avec un SID REST a renvoyé un accès refusé (nécessite le SID Client du websocket). Le labo a utilisé admin.sh -r, même BackupImport.performImport.
| Surface | Raison |
|---|---|
| Clés PATH de l'interface de configuration d'administration | Path.of (ConfigForm). Le NUL lève une exception. |
| NUL dans ProcessBuilder sur Java 21 | rejeté. La RCE de CVE-2023-29246 ne se rejoue pas sur ce JDK. |
| Restauration ROOM / LOGIN | pas d'ADMIN_BACKUP. |
29246 a corrigé l'interface. J'ai fait un grep sur importConfigs pour Path.of. Le remappage imagemagick_path → path.imagemagick force Type.PATH et met à jour le DAO. Même classe que celle utilisée par l'interface après une restauration.
cd lab
./run.sh
Boucle de retour https://127.0.0.1:18160/openmeetings. Témoin de la dernière ligne :
SUCCESS OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS
Exécuter le même validateur Path.of / Type.PATH dans BackupImport.importConfigs que celui utilisé par ConfigForm. Rejeter les chemins de convertisseur contenant NUL et non canoniques avant cfgDao.update.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Fournisseur : [email protected]