🇰🇷 한글 설명
egroupware 26.0 및 이전 버전에서 인증된 관리자가 악성 eTemplate XML 파일(.xet)을 업로드하여 OS 수준의 원격 코드 실행(RCE)을 수행할 수 있습니다. Widget::expand_name() 메서드가 템플릿 위젯 속성 값을 PHP eval() 함수로 전달할 때 백틱(backtick) 문자를 이스케이프 처리하지 않아 발생합니다. 이를 통해 공격자는 웹 애플리케이션 권한을 넘어 서버에서 임의의 OS 명령을 실행할 수 있습니다.
💡 쉬운 설명
관리자 권한을 가진 사용자가 특수하게 조작된 파일을 업로드하면 서버의 운영체제를 직접 조종할 수 있는 보안 취약점입니다. 파일 내부의 특정 기호가 제대로 걸러지지 않아 서버가 이를 명령어로 오해하면서 발생합니다.
🇺🇸 원문 (English)
In egroupware version 26.0 and earlier, an authenticated administrator can achieve OS-level Remote Code Execution (RCE) by uploading a malicious eTemplate XML file (`.xet`) to the VFS `/etemplates` mount. The `Widget::expand_name()` method passes template widget attribute values directly into a PHP `eval()` call with only double-quote escaping applied - **backtick characters are not escaped**. In PHP, backticks inside a double-quoted `eval()` string execute shell commands. This allows an admin-level user to escalate from web application access to arbitrary OS command execution on the server.
📍 영향받는 시스템
egroupware version 26.0 and earlier
⚔️ 공격 벡터
인증된 관리자가 악성 .xet 파일을 VFS /etemplates 경로에 업로드하여 PHP eval() 내 백틱을 통한 명령 실행
🛡️ 대응 방법
egroupware를 최신 보안 패치가 적용된 버전으로 업데이트하거나, Widget::expand_name() 메서드에서 백틱 문자에 대한 이스케이프 처리를 적용해야 합니다.
🔧 검증 코드
설치된 egroupware의 버전을 확인하여 26.0 이하인지 검토하십시오.
php -r 'echo "Widget::expand_name() check";' 2>/dev/null | grep -q 'egroupware' || echo 'Version check required'