[단독공격] 분석 — CVE-2023-49103
CVE-2023-49103 enables remote attackers to retrieve full PHP environment details—including sensitive credentials—via an unrestricted phpinfo endpoint in ownCloud graph_api, demanding immediate remediation.
📋 요약
- 심각도 critical · CVSS 10.0 · EPSS 0.78428 · 악용난이도 easy · KEV
🔍 공격 기법
-
공격 표면
GET /apps/graphapi/GetPhpInfo.php(또는 graphapi 앱이 제공하는 동일 경로)- 별도 파라미터 없이 URL만 호출하면 phpinfo 페이지가 반환됩니다.
-
트리거 조건 (AV:N/AC:L/PR:N/UI:N)
- 네트워크를 통해 외부에서 직접 접근 가능(NETWORK)
- 복잡도가 낮고 인증이 필요 없으며(User Interaction: None) 요청만 보내면 동작합니다.
-
단계별 흐름
- 정찰 – 웹 어플리케이션 디렉터리 구조를 탐색하거나 ownCloud 앱 목록에서
graphapi가 설치돼 있음을 확인합니다. (/ocs/v2.php/apps/graphapi/...등). - 초기 접근 – 위 URL에 단순 GET 요청을 전송합니다. 응답으로 phpinfo HTML이 반환됩니다.
- 실행·정보 획득 – 페이지 안에
$_SERVER,$_ENV변수와 PHP 설정이 모두 노출되어, 컨테이너 환경에서는OWNCLOUD_ADMIN_PASSWORD, 메일 서버 인증 정보, 라이선스 키 등이 포함될 수 있습니다. - 권한 상승·지속 – 획득한 관리자 비밀번호 등으로 ownCloud 관리 콘솔에 로그인하거나 API 토큰을 발급받아 영구적인 접근 권한을 확보합니다.
- 영향 – 시스템 전체 제어, 데이터 탈취, 추가 악성 코드 배포 등이 가능해집니다.
- 정찰 – 웹 어플리케이션 디렉터리 구조를 탐색하거나 ownCloud 앱 목록에서
-
관측 지표
- HTTP 200 응답에
phpinfo()문자열이 포함된 경우 - 로그에
/GetPhpInfo.php접근 시도 기록
- HTTP 200 응답에
악용 가능성: CVSS 벡터 AV:N/AC:L/PR:N/UI:N는 공격자가 네트워크를 통해 직접 접근 가능한 엔드포인트에 요청만 보내면 별다른 사전 작업이나 사용자 개입 없이 취약점이 발동한다는 의미이며, 이는 실제로 ownCloud graphapi 앱의 GetPhpInfo.php URL을 외부에서 바로 호출할 수 있음을 나타냅니다.
EPSS 0.78428이라는 높은 실측 확률과 KEV(Known Exploited Vulnerabilities) 목록에 등재된 점은 이 취약점이 이미 악용되고 있으며, 이론적 심각도와 무관하게 실제 위협으로 입증되었음을 강력히 뒷받침합니다.
공격 표면은 HTTP GET 요청만 가능한 https://<host>/apps/graphapi/GetPhpInfo.php 경로이며, 파라미터는 없고 프로토콜은 일반 웹(HTTP/HTTPS)입니다.
트리거 조건은 해당 URL에 단순히 접근하는 것뿐이므로, 공격자는 별도의 인증 절차 없이도 phpinfo 페이지를 획득할 수 있습니다.
phpinfo 출력에는 컨테이너 환경 변수까지 포함되어 있어, ownCloud 관리자 비밀번호, 메일 서버 자격 증명, 라이선스 키 등 민감 정보가 그대로 노출됩니다.
노출된 정보를 기반으로 추가적인 인증 우회나 서비스 탈취 시도가 가능하므로, 실제 공격 난이도는 “easy” 수준이며 악용 가능성은 매우 높다고 평가할 수 있습니다.
💥 영향 분석
- 관리자 비밀번호, 메일 서버 인증 정보, 라이선스 키 등 민감한 환경 변수가 외부에 노출됩니다.
- 해당 자격 증명을 이용해 ownCloud 관리 인터페이스에 무단 로그인하거나 API를 통해 데이터를 탈취·조작할 수 있습니다.
🔗 관련 취약점·체이닝
- Info‑Disclosure (CWE‑200) → Credential Exposure → Unauthorized Access (CWE‑284)
- phpinfo 로 노출된 환경 변수는 직접적인 인증 우회 수단이 됩니다.
- 추정: 동일 컨테이너 내 다른 서비스(예: 데이터베이스)에서 동일 env 변수를 재사용한다면, 추가적인 권한 상승(CWE‑269)이나 원격 코드 실행(CWE‑94)으로 연결될 가능성이 있습니다.
🔎 탐지
- 웹 서버 접근 로그에
/GetPhpInfo.php혹은phpinfo()문자열이 포함된 응답이 기록되는 경우 알림을 발생시킵니다. - WAF/IPS에서
GET */GetPhpInfo.php*요청 패턴을 차단 및 로깅합니다.
🛡️ 완화 방안
- 즉시 조치 – graphapi 앱을 비활성화한 뒤,
/apps/graphapi/GetPhpInfo.php파일을 웹 서버 레벨에서 접근 차단(.htaccess, Nginxdeny)하거나 삭제합니다. - 패치 적용 – ownCloud graph_api를 0.2.1 이상 또는 0.3.1 이상 버전으로 업데이트합니다.
- 자격 증명 교체 – 노출 가능성이 있는 관리자 비밀번호·메일 서버 계정·라이선스 키를 모두 재설정합니다.
- 환경 변수 보호 – 컨테이너 실행 시 민감 정보는 파일 기반 시크릿이나 K8s Secret으로 전달하고,
phpinfo에 노출되지 않도록expose_php=Off설정을 적용합니다.
본 보고서는 다중 소스에서 일관성이 확인된([교차검증] 신뢰도 1.0) 정보를 기반으로 하며, EPSS 0.78428(실측 악용 예측 상위 99.5%)과 KEV 등재를 고려한 즉시 대응(
우선순위: immediate)이 권고됩니다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=10.0 · KEV · EPSS=0.78428 · exploit=easy · in_scope=None