🇰🇷 한글 설명
WWBN AVideo 29.0 이하 버전에서 디렉토리 트래버설 보안 검사가 URL 경로 부분만 확인하여, 공격자가 쿼리 문자열에 트래버설 문자열을 숨겨서 임의 파일을 읽을 수 있습니다. `objects/aVideoEncoderReceiveImage.json.php`에서 path validation을 우회하고 `functionsFile.php`의 `try_get_contents_from_local()` 함수에서 전체 URL을 처리할 때 이용됩니다.
💡 쉬운 설명
비디오 플랫폼의 파일 접근 검사에 허점이 있어서 공격자가 숨겨진 경로를 통해 서버의 비공개 파일을 읽을 수 있습니다. 쿼리 문자열이라는 URL의 보이지 않는 부분에 공격 코드를 넣으면 검사를 통과합니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions 29.0 and below, the directory traversal fix introduced in commit 2375eb5e0 for `objects/aVideoEncoderReceiveImage.json.php` only checks the URL path component (via `parse_url($url, PHP_URL_PATH)`) for `..` sequences. However, the downstream function `try_get_contents_from_local()` in `objects/functionsFile.php` uses `explode('/videos/', $url)` on the **full URL string** including the query string. An attacker can place the `/videos/../../` traversal payload in the query string to bypass the security check and read arbitrary files from the server filesystem. Commit bd11c16ec894698e54e2cdae25026c61ad1ed441 contains an updated fix.
📍 영향받는 시스템
WWBN AVideo 29.0 이하 (bd11c16ec 이전 버전)
⚔️ 공격 벡터
GET /objects/aVideoEncoderReceiveImage.json.php?url=http://localhost/videos/../../etc/passwd?[query] 등으로 임의 파일 접근
🛡️ 대응 방법
bd11c16ec894698e54e2cdae25026c61ad1ed441 커밋 이후 버전으로 업그레이드
🔧 검증 코드
파일이 존재하고 parse_url의 PATH 검사만 수행하면 취약, 전체 URL에 대한 검증이 없으면 패치 필요
grep -r 'aVideoEncoderReceiveImage.json.php' /var/www/html/ 2>/dev/null && grep -A5 'parse_url.*PHP_URL_PATH' /var/www/html/objects/aVideoEncoderReceiveImage.json.php 2>/dev/null | head -10