
Apache OpenMeetings 9.1.0 — высокий уровень — удалённо — остаточная запись файлов — импорт ADMIN_BACKUP пропускает Path.of для Type.PATH
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openmeetings-backup-config-path
Класс: Остаточная запись в файл Доступ: Удалённый
Apache OpenMeetings 9.1.0 (9773c59e) - Apache Software Foundation
CVE-2023-29246 закрыл NUL-инъекцию в Admin Config Type.PATH через Path.of. BackupImport.importConfigs по-прежнему записывает эти строки без Path.of. Восстановление ADMIN_BACKUP сохраняет необработанный путь конвертера. В Java 21 ProcessBuilder также отклоняет NUL, поэтому это остаток от sink 29246, а не новый argv RCE.
| ID | CVE пока нет |
| Класс | Остаточная запись в файл (остаток от CVE-2023-29246) |
| Доступ | Удалённый (аутентифицированное восстановление ADMIN_BACKUP) |
| CWE | CWE-20, CWE-22 |
| CVSS | Высокий: 6.5 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H |
| Продукт | Apache OpenMeetings |
| Затронуто | 9.1.0 (9773c59e1af327bf988018e661f456ae9997c29f) импорт резервной копии |
| Аутентификация | ADMIN_BACKUP (есть у администратора установки) |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1:18160. apache/openmeetings:min-9.1.0 плюс Temurin 21. |
Я зафиксировал тег 9.1.0. Без NUL-полезной нагрузки. Без выполнения ffmpeg.
Обладать ADMIN_BACKUP (администратор установки или внедрённый администратор резервных копий). Восстановить zip-архив резервной копии, в конфигурациях которого imagemagick_path / ffmpeg заданы произвольной строкой.
| Метод | Sink | Привилегия |
|---|---|---|
admin.sh -r / восстановление резервной копии через Wicket | BackupImport.importConfigs cfgDao.update Type.PATH, без Path.of | Целостность (доказано в лаборатории): configuration.path.imagemagick и path.ffmpeg сохранены как PATH /tmp/OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS. |
| Последующие задачи конвертации (предположительно) | argv imagemagick/ffmpeg/sox/office из этих строк | Целостность / доступность (предположительно): конвертер указывает на путь атакующего. ProcessBuilder в Java 21 по-прежнему отклоняет NUL. Не проверялось. |
Доказано в лаборатории vs предположительно: сохранённая строка-свидетель Type.PATH — это лаборатория. Выполнение конвертера — предположительно. NUL argv RCE закрыт на этой JDK (InvalidPathException Nul character not allowed в Path.of; ProcessBuilder также отклоняет NUL).
Контроль: Path.of принимает этот Unix-путь-свидетель. Остаток — это отсутствующая проверка при импорте, а не обход Path.of для обычного Unix-пути. UI ConfigForm по-прежнему использует Path.of.
Требуется: ADMIN_BACKUP. Восстановление. Wicket /admin/backup/upload с REST SID вернул отказ в доступе (нужен websocket Client SID). В лаборатории использовался admin.sh -r, тот же BackupImport.performImport.
| Поверхность | Почему |
|---|---|
| PATH-ключи в Admin Config UI | Path.of (ConfigForm). NUL вызывает исключение. |
| NUL в ProcessBuilder на Java 21 | отклоняется. RCE из CVE-2023-29246 не воспроизводится на этой JDK. |
| Восстановление ROOM / LOGIN | нет ADMIN_BACKUP. |
29246 исправил UI. Я выполнил grep по importConfigs на предмет Path.of. Переотображение imagemagick_path → path.imagemagick принудительно задаёт Type.PATH и обновляет DAO. Тот же класс, который использует UI после восстановления.
cd lab
./run.sh
Loopback https://127.0.0.1:18160/openmeetings. Свидетельство последней строки:
SUCCESS OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS
Запустите тот же валидатор Path.of / Type.PATH в BackupImport.importConfigs, который использует ConfigForm. Отклоняйте NUL и неканонические пути конвертера до cfgDao.update.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
Поставщик: [email protected]