🇰🇷 한글 설명
Saurus CMS Community Edition 4.7.1의 DB::prepare() 함수에서 preg_replace()의 deprecated /e (eval) 수정자를 사용하여 SQL 파라미터를 보간할 때, 사용자 입력 값이 검증되지 않아 SQL 주입 및 임의 PHP 코드 실행이 가능합니다.
💡 쉬운 설명
CMS에서 데이터베이스 쿼리를 만들 때 사용자가 입력한 내용을 검사하지 않고 직접 실행되어, 해커가 프로그램을 제어할 수 있게 됩니다. 웹사이트를 완전히 장악당할 수 있는 매우 위험한 결함입니다.
🇺🇸 원문 (English)
Saurus CMS Community Edition 4.7.1 contains a vulnerability in the custom DB::prepare() function, which uses preg_replace() with the deprecated /e (eval) modifier to interpolate SQL query parameters. This leads to injection of user-controlled SQL statements, potentially leading to arbitrary PHP code execution.
📍 영향받는 시스템
Saurus CMS Community Edition 4.7.1 이하
⚔️ 공격 벡터
HTTP POST/GET 요청을 통해 SQL 쿼리 파라미터에 악의적 PHP 코드를 주입하여 실행
🛡️ 대응 방법
Saurus CMS를 최신 버전으로 업데이트하거나, preg_replace() /e 수정자를 제거하고 해당 기능을 preg_replace_callback()으로 대체
🔧 검증 코드
출력이 있으면 vulnerable한 preg_replace /e 패턴이 존재하며, 아무 출력도 없으면 패치되었거나 설치되지 않은 것
find / -name 'Saurus' -type d 2>/dev/null | head -1 | xargs grep -r 'preg_replace.*\/e' 2>/dev/null | head -3