
Apache OpenMeetings 9.1.0 - 높음 - 원격 - 파일 쓰기 잔여 - ADMIN_BACKUP 가져오기가 Type.PATH에서 Path.of를 건너뜀
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은 Path.of를 통해 Admin Config Type.PATH에 대한 NUL 주입을 차단했습니다. 그러나 BackupImport.importConfigs는 여전히 Path.of 없이 해당 행들을 기록합니다. ADMIN_BACKUP 복원은 원시 변환기 경로를 저장합니다. Java 21에서는 ProcessBuilder도 NUL을 거부하므로, 이는 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 (설치 관리자 admin이 보유) |
| 라이선스 | 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 권한을 보유한 경우(설치 관리자 admin, 또는 심어둔 백업 admin). configs에서 imagemagick_path / ffmpeg를 임의의 문자열로 설정한 백업 zip을 복원합니다.
| 방법 | 싱크 | 권한 |
|---|---|---|
admin.sh -r / Wicket 백업 복원 | BackupImport.importConfigs cfgDao.update Type.PATH, Path.of 없음 | 무결성 (랩 입증): configuration.path.imagemagick 및 path.ffmpeg가 PATH /tmp/OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS로 저장됨. |
| 이후 변환 작업 (추론) | 해당 행들로부터의 imagemagick/ffmpeg/sox/office argv | 무결성 / 가용성 (추론): 변환기가 공격자 경로를 가리킴. Java 21 ProcessBuilder는 여전히 NUL을 거부함. 실행 검증 안 함. |
랩 입증 vs 추론: 저장된 Type.PATH 증인 문자열은 랩에서 입증됨. 변환기 실행은 추론임. NUL argv RCE는 이 JDK에서 차단됨(Path.of에서 InvalidPathException Nul character not allowed; ProcessBuilder도 NUL 거부).
대조: Path.of는 이 Unix 증인 경로를 허용합니다. 잔여물은 가져오기 시 누락된 검사이며, 정상적인 Unix 경로에 대한 Path.of 우회가 아닙니다. UI ConfigForm은 여전히 Path.of를 사용합니다.
요구 사항: ADMIN_BACKUP. 복원. REST SID를 사용한 Wicket /admin/backup/upload는 접근 거부를 반환함(websocket Client SID 필요). 랩에서는 동일한 BackupImport.performImport인 admin.sh -r을 사용함.
| 표면 | 이유 |
|---|---|
| Admin Config UI PATH 키 | Path.of (ConfigForm). NUL은 예외 발생. |
| Java 21의 ProcessBuilder 내 NUL | 거부됨. CVE-2023-29246 RCE는 이 JDK에서 재현되지 않음. |
| ROOM / LOGIN 복원 | ADMIN_BACKUP 없음. |
29246은 UI를 패치했습니다. importConfigs에서 Path.of를 grep했습니다. imagemagick_path → path.imagemagick 재매핑은 Type.PATH를 강제하고 DAO를 업데이트합니다. 복원 후 UI가 사용하는 것과 동일한 클래스입니다.
cd lab
./run.sh
루프백 https://127.0.0.1:18160/openmeetings. 마지막 줄 확인:
SUCCESS OPENMEETINGS-BACKUP-CONFIG-PATH-WITNESS
ConfigForm이 사용하는 것과 동일한 Path.of / Type.PATH 검증기를 BackupImport.importConfigs에서 실행하세요. cfgDao.update 전에 NUL 및 비정규 변환기 경로를 거부하세요.
Abraxas Labs - https://abraxaslabs.tech - https://github.com/abraxas - https://x.com/abraxas_null - [email protected]
공급업체: [email protected]