🇰🇷 한글 설명
WWBN AVideo 오픈소스 비디오 플랫폼 26.0 이하 버전의 objects/like.php에 있는 getLike() 메서드에서, users_id에는 prepared statement 플레이스홀더를 사용하지만 videos_id 값은 쿼리 문자열에 직접 연결되어 파라미터화되지 않습니다. 이로 인해 공격자가 조작된 요청으로 videos_id를 제어하면 임의의 SQL 구문을 주입할 수 있습니다. 패치는 커밋 0215d3c4f1ee748b8880254967b51784b8ac4080에 포함되어 있습니다.
💡 쉬운 설명
동영상 좋아요 기능을 처리하는 부분에서 입력값을 안전하게 검사하지 않아, 해커가 데이터베이스를 임의로 조작할 수 있는 취약점입니다. 패치된 최신 버전으로 업데이트하면 해결됩니다.
🇺🇸 원문 (English)
WWBN AVideo is an open source video platform. In versions up to and including 26.0, in `objects/like.php`, the `getLike()` method constructs a SQL query using a prepared statement placeholder (`?`) for `users_id` but directly concatenates `$this->videos_id` into the query string without parameterization. An attacker who can control the `videos_id` value (via a crafted request) can inject arbitrary SQL, bypassing the partial prepared-statement protection. Commit 0215d3c4f1ee748b8880254967b51784b8ac4080 contains a patch.
📍 영향받는 시스템
WWBN AVideo 26.0 이하 버전 (objects/like.php 사용 환경)
⚔️ 공격 벡터
좋아요 요청 시 videos_id 파라미터에 악성 SQL 구문을 삽입하여 데이터베이스 정보 탈취 또는 변조
🛡️ 대응 방법
커밋 0215d3c4f1ee748b8880254967b51784b8ac4080이 반영된 AVideo 최신 버전으로 업데이트하고, videos_id 값을 prepared statement로 바인딩하도록 수정
🔧 검증 코드
출력 결과에 videos_id가 쿼리 문자열에 직접 연결(예: '. $this->videos_id .')되어 나타나면 취약한 상태이고, 출력이 없거나 플레이스홀더 바인딩이 적용되어 있으면 패치된 상태로 볼 수 있습니다.
grep -n 'videos_id' $(find / -path '*AVideo*' -name 'like.php' 2>/dev/null | head -1) 2>/dev/null | grep -v '?'