워드프레스 분석 플러그인 Slimstat의 저장형 XSS 취약점
워드프레스 웹사이트 분석 플러그인 Slimstat에서 4.8 이하 버전을 대상으로 하는 저장형 XSS(교차 사이트 스크립팅) 취약점이 발견되었습니다. 이 글을 작성하는 시점 기준으로 해당 플러그인은 10만 개가 넘는 웹사이트에 설치되어 있습니다. Slimstat는 접속 로그, 재방문 고객 및 등록 사용자 통계, JavaScript 이벤트 등을 실시간으로 모니터링하고 보고하는 웹사이트 분석 추적 플러그인으로 잘 알려져 있으며, 이 분야에서 가장 인기 있는 워드프레스 플러그인 중 하나입니다. 그렇기 때문에 Slimstat의 XSS 취약점은 업계에 큰 파장을 일으킬 수밖에 없었습니다.
Slimstat 워드프레스 플러그인의 현재 위험 상태
이번 취약점은 4.8 이하 버전에서 인증되지 않은 사용자가 접속 로그에 JavaScript 코드를 삽입할 수 있도록 허용하는 문제입니다. 다행히도 플러그인 개발진은 신속하게 대응하여 업데이트된 버전 4.8.1을 곧바로 플러그인 디렉토리에 배포했습니다. 다만 아직 패치된 버전으로 업데이트하지 않았다면 여전히 위험에 노출되어 있으므로 즉시 조치가 필요합니다.

아래에서 Slimstat에서 발견된 XSS 취약점의 기술적인 세부 내용을 살펴보겠습니다.
Slimstat 워드프레스 플러그인 취약점 세부 정보
이 취약점으로 인해 인증되지 않은 방문자라면 누구나 Slimstat의 핵심 기능인 접속 로그(access log) 기능에 임의의 JavaScript 코드를 삽입할 수 있습니다. 삽입된 코드는 접속 로그 페이지와 관리자 대시보드 모두에서 실행될 수 있습니다.
접속 로그는 웹사이트에 대한 접속 요청의 상세 정보를 제공하는 기능으로, 일반적으로 IP 주소, 서버 정보, 호스팅 정보 등이 포함됩니다.

Slimstat에서는 악의적인 사용자가 접속 로그에 임의의 코드를 삽입할 수 있으며, 삽입된 코드는 관리자가 로그인하는 순간 실행됩니다.
특히 주목할 점은 이 플러그인의 유일한 입력값 정제(sanitization) 방법이 strip_tags 함수, 즉 삽입된 값에서 태그만 제거하는 방식이라는 것입니다. 이러한 정제 방식은 작은따옴표(single quote)를 사용한 뒤 이벤트 핸들러를 추가하는 것만으로도 손쉽게 우회될 수 있습니다.

아래 이미지는 플러그인 관련 마크업이 생성되는 과정을 보여주며, 여기서 $a_plugin은 해당 플러그인 값을 의미합니다.

그 결과, 이미지에서 볼 수 있듯이 'plugin'onerror' 형태의 오류가 발생합니다. 요청이 정상적으로 실행되지 못한 상태로 데이터베이스에 저장되면서 잠재적인 XSS 취약점으로 남게 되는 것입니다.

Slimstat 취약점 위험 완화를 위한 업데이트 안내
플러그인에 취약점이 존재하는 경우, 사용자가 할 수 있는 가장 확실한 대응책은 최신 버전으로 업데이트하는 것이며, 이와 함께 각종 예방 보안 조치를 미리 준비해 두는 것입니다. 업데이트 외에도 XSS, SQLi(SQL 인젝션), CSRF 등 일반적인 사이버 공격을 차단하는 지속적이고 포괄적인 웹 방화벽(Web Application Firewall)을 운영하는 것이 좋습니다. Astra는 이러한 방화벽 솔루션을 제공하며, 웹사이트에 시도되는 모든 공격을 감시하고 차단하며 보고합니다. 지금 Astra 데모를 신청하여 웹사이트 보안을 강화해 보세요.