워드프레스 다국어 번역 플러그인 TranslatePress의 저장형 크로스사이트 스크립팅(XSS) 취약점이 CVE-2026-120537로 등록됐다. 지금 단계에서 근거가 확정하는 것은 3.3.8 이하라는 버전 조건과, 인증되지 않은 공격자가 페이지에 스크립트를 주입해 이용자가 접근하는 시점에 실행시킬 수 있다는 CVE 레코드의 기재다. 제공된 근거와 검색한 범위에서 실제 악용 여부와 이 취약점 전용의 탐지 방법은 확인되지 않았다.
개요

CVE 레코드는 TranslatePress – Translate Multilingual sites with AI Translation 워드프레스 플러그인의 3.3.8 이하 모든 버전에서 입력값 정제(input sanitization)와 출력 이스케이프(output escaping)가 불충분하다고 기재한다. 이 결함이 있으면 인증되지 않은 공격자도 임의의 웹 스크립트를 페이지에 주입할 수 있고, 그 스크립트는 이용자가 주입된 페이지에 접근할 때마다 실행된다(CVE-2026-120537).
- CVE 레코드는 공격 성립에 인증이 필요 없다고 기재한다. 로그인 여부를 전제로 하지 않는 주입 경로로 서술돼 있다.
- 스크립트가 페이지에 접근하는 시점에 실행된다는 기재는, 공격 코드가 페이지에 남아 접근하는 이용자에게 전달되는 저장형 XSS의 형태와 맞닿는다.
- 공급업체는 3.3.9 readme 변경 기록에 XSS 관련 수정 항목을 올렸다.
영향 범위
영향 범위는 TranslatePress 3.3.8 이하를 설치한 워드프레스 사이트다. CVE 레코드가 3.3.8 이하 모든 버전을 영향 버전으로 명시하고 있다. 그래서 첫 점검은 공격 흔적을 찾기보다 설치된 플러그인 버전을 확인하는 일이 된다.
근거의 한계도 함께 봐야 한다. CVE 레코드는 인증 없는 주입 가능성을 기재하지만, 특정 사이트가 표적이 됐다는 정황은 제공된 근거에 없다. 제공된 근거와 확인한 범위에서 실제 악용, 공개 공격 코드, 독립적인 기술 검증 여부는 확인되지 않았다. 미확인이 곧 악용이 없었다는 뜻은 아니다.
레코드는 스크립트 실행이라는 결과까지만 적을 뿐, 실행 시점에 어떤 이용자의 어떤 세션이 개입하는지는 구분하지 않는다. 그래서 로그인 상태의 이용자에게서 어떤 영향으로 이어지는지는 확인된 범위 밖에 남는다. 이 부분은 확인된 피해 사례가 아니라 열어 두어야 할 질문으로 다뤄야 한다.
기술적 분석
레코드가 원인으로 함께 적시한 입력 정제와 출력 이스케이프는 서로 다른 통제를 가리킨다. 정제는 들어오는 값 자체를 다루는 표현이고, 이스케이프는 그 값을 페이지로 내보낼 때 브라우저의 해석을 다루는 표현이다. 레코드는 이 두 통제가 모두 불충분하다고 기재하고, comment (storage); originals / language / original_language (exfiltration from endpoint)라는 파라미터 표기도 함께 올린다. 다만 구체적인 요청 구조와 코드 경로는 제공된 근거만으로 확인되지 않는다.
주입 지점으로 적힌 표기 안에는 저장과 관련된 항목, 그리고 엔드포인트에서 읽히는 항목이 한 줄에 묶여 있다. 실제 요청 구조나 파라미터 동작을 확인할 샘플은 제공된 근거에 없어서, 특정 파일이나 API 경로를 이 취약점의 주입 지점으로 단정할 수 없다.
공급업체 변경 기록이 가리키는 것
TranslatePress 3.3.9 readme(TranslatePress 3.3.9 readme and changelog)에는 보안 수정 항목이 두 줄 올라 있다. 하나는 trp-ajax.php 응답을 비활성(inert) JSON으로 제공해 XSS를 막는 수정이고, 다른 하나는 URL 스킴 무력화 로직의 PCRE 역추적(backtrack) 우회를 통한 저장형 XSS를 고친다는 내용이다.
자료가 말하지 않는 부분이 더 중요하다. 변경 기록은 각 수정 항목이 CVE-2026-120537을 가리키는지, 별도의 보안 이슈를 다룬 것인지 명시하지 않는다. 저장형 XSS라는 표현이 겹친다는 사실만으로는 인과를 확정할 수 없다. 따라서 3.3.9로의 버전 상향이 이 취약점을 해결한다는 결론은 공급업체 문서에서 한 단계 나아간 추정이다. 레코드가 직접 뒷받침하는 사실은 3.3.8 이하가 버전 조건에 해당한다는 점까지이고, 버전 상향이 이미 저장된 값까지 정리하는지 여부도 기록에 없다.
대응 방안
첫 단계는 버전 확인이다. TranslatePress를 운영하는 사이트를 목록으로 정리해 3.3.8 이하가 남아 있으면 그 목록이 곧 점검 대상이 된다. 자동 업데이트에 의존해 온 환경이라면 실제 설치 버전이 의도한 버전과 일치하는지 직접 확인하는 편이 안전하다.
우선순위는 레코드가 기재한 조건을 기준으로 놓고 판단한다. 인증이 필요 없는 주입 가능성, 그리고 스크립트가 페이지 접근 시점에 실행된다는 점이 그 조건이다. 제공된 근거와 확인한 범위에서 실제 악용 여부는 확인되지 않았다는 점도 함께 남아 있다. 두 항목 모두 확인된 결과가 아니라 조건이므로, 버전이 낮은 상태를 그대로 두는 판단을 이 글이 대신 정당화하지는 않는다. 근거 안에서 말할 수 있는 범위는, 3.3.8 이하가 확인된 사이트에 3.3.9 변경 기록의 XSS 수정 항목을 검토 대상으로 올려 두는 정도다.
3.3.8 이하가 확인되면 3.3.9로의 업데이트를 검토한다. 같은 릴리스에 번역 품질 개선도 포함돼 있으므로, 적용 전 워드프레스 및 다른 플러그인과의 호환성과 배포 절차를 확인한다.
탐지와 조사는 이 글의 범위 밖에 남는다. 제공된 근거에는 이 취약점 전용의 탐지 지표나 로그 조사 방법이 없다. 그래서 특정한 IOC나 공격 흔적 탐색 절차는 권고하지 않는다. 버전 점검으로 끝나지 않는 조사가 필요해지면 공급업체의 상세 안내나 후속 보안 연구를 확인해야 한다.
참고자료
함께 읽으면 좋은 글
- CVE-2026-118534: Directorist 결제 재시도 기능의 주문 소유권 누락과 IDOR
- CVE-2026-104768: AutomatorWP AI 플러그인의 익명 자동화 권한 상승 점검
- CVE-2026-123022: AgentScope MCP Workspace API의 명령 인자 주입 점검
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!