CVE-2026-120537: TranslatePress AI Translation 저장형 XSS란 무엇인가?

워드프레스 다국어 번역 플러그인 TranslatePress(Translate Multilingual sites with AI Translation) 3.3.8 이하를 사용하는 사이트는 인증되지 않은 공격자가 주입한 임의의 웹 스크립트가 페이지에 남아 이용자가 해당 페이지에 접근할 때마다 실행되는 저장형 XSS 취약점(CVE-2026-120537)의 영향권에 놓여 있습니다. 이 글은 2026년 11월 8일 기준 확인 가능한 자료를 바탕으로 취약점의 원인과 영향 범위, 공급업체의 수정 사항과 그 한계, 사이트 운영자가 우선적으로 점검할 절차를 정리했습니다.

CVE-2026-120537 개요와 영향 범위: TranslatePress 3.3.8 이하

TranslatePress의 저장형 크로스사이트 스크립팅(XSS) 취약점이 CVE-2026-120537로 등록되었습니다. 영향 범위는 TranslatePress 3.3.8 이하 모든 버전을 설치한 워드프레스 사이트입니다. CVE 레코드는 기술적 원인으로 입력값 정제(input sanitization)와 출력 이스케이프(output escaping) 불충분을 기재합니다.

주입된 스크립트가 사이트에 남아 있고 이용자가 주입된 페이지에 접근할 때마다 실행된다는 특성이 이 취약점을 ‘저장형’ XSS로 분류하는 근거입니다. 주요 내용은 표와 같습니다.

항목 내용
CVE 식별자 CVE-2026-120537
대상 소프트웨어 워드프레스 다국어 번역 플러그인 TranslatePress – Translate Multilingual sites with AI Translation
영향 버전 3.3.8 이하 전체
취약점 유형 저장형 크로스사이트 스크립팅(XSS)
기술적 원인 입력값 정제와 출력 이스케이프 불충분
공격 조건 공격자 인증 불필요
참고 수정 버전 3.3.9 변경 기록에 보안 수정 2건 존재(단, 본 CVE와의 명시적 대응 관계는 없음)

공격 원리: 인증 없는 주입과 페이지 접근 시점의 스크립트 실행

이 취약점이 있으면 인증되지 않은 공격자도 임의의 웹 스크립트를 페이지에 주입할 수 있고, 그 스크립트는 이용자가 주입된 페이지에 접근할 때마다 실행됩니다. 공격 성립에 별도의 인증 절차가 필요하지 않습니다. 진입 장벽이 낮다는 뜻입니다. 여기에 주입된 스크립트가 접근 시점마다 반복 실행된다는 점이 더해지면, 한 번의 주입 성공 이후 해당 페이지를 방문하는 이용자 전체가 잠재적 실행 대상이 되는 구조적 위험이 만들어집니다.

CVE 레코드에는 comment(저장), originals / language / original_language(엔드포인트에서의 반출)라는 파라미터 표기가 함께 적혀 있습니다. 다만 구체적인 요청 구조와 코드 경로는 확인된 자료 범위에서 검증되지 않았으므로, 이 표기만으로 공격 트래픽의 정확한 형태를 특정하는 것은 이 단계에서 과한 해석입니다.

사이트 운영 관점에서 주목할 지점은 두 가지입니다. 첫째, 다국어 사이트 특성상 번역된 페이지를 방문하는 불특정 이용자가 많을수록 저장형 스크립트의 실행 기회도 함께 늘어납니다. 둘째, 로그인 상태 이용자에게 이어지는 구체적인 영향 범위는 레코드가 스크립트 실행까지만 기재하고 있어서 확인된 자료만으로 단정할 수 없습니다. 이 부분을 영향을 과소 평가하는 근거로 써서는 안 됩니다.

TranslatePress 3.3.9 변경 기록의 보안 수정 두 가지와 그 한계

변경 기록에 기재된 두 가지 보안 수정

TranslatePress 3.3.9의 readme 변경 기록에는 보안 수정 항목이 두 건 올라와 있습니다. 하나는 trp-ajax.php 응답을 비활성(inert) JSON으로 제공해 XSS를 막는 수정이고, 다른 하나는 URL 스킴 무력화 로직의 PCRE 역추적(backtrack) 우회를 통한 저장형 XSS를 고치는 내용입니다.

해석상 한계: 3.3.9가 이 취약점의 해결책이라고 단정할 수 없는 이유

다만 3.3.9 변경 기록은 각 수정 항목이 CVE-2026-120537을 가리키는지, 아니면 별도의 보안 이슈를 다룬 것인지 명시하지 않습니다. ‘저장형 XSS’라는 표현이 서로 겹친다는 사실만으로 인과 관계를 확정할 수는 없고, 3.3.9로의 버전 상향이 이 취약점을 해결한다는 결론은 공급업체 문서에서 한 단계 나아간 추정에 해당합니다. 버전 상향이 이미 저장된 주입 값까지 정리하는지 여부도 기록에 남아 있지 않습니다. 그래서 업데이트를 적용한 사이트라면 ‘패치 적용 = 잔존 주입 값 제거’로 자동 해석하지 않고, 별도 확인이 필요하다는 전제로 접근해야 합니다.

대응 절차: 버전 확인과 3.3.9 업데이트 검토

확인된 자료 기준 1차 대응은 다음 순서입니다.

  1. 운영 중인 사이트의 TranslatePress 설치 버전을 확인합니다. 3.3.8 이하가 확인되면 해당 사이트 목록이 곧 점검 대상이 됩니다.
  2. 자동 업데이트에 맡겨 둔 환경이라면 실제 설치 버전이 의도한 버전과 일치하는지 직접 확인하는 편이 안전합니다.
  3. 3.3.8 이하로 확인되면 3.3.9로의 업데이트를 검토합니다.
  4. 적용 전에 워드프레스 코어 및 다른 플러그인과의 호환성, 배포 절차를 함께 확인합니다.
  5. 업데이트 후에는 이미 저장된 주입 값의 정리 여부가 기록에 없다는 점을 염두에 두고, 3.3.9 변경 기록과 본 CVE의 대응 관계가 공식적으로 명시되는지 이후 자료를 계속 추적합니다.

확인되지 않은 사항: 악용 여부와 탐지 방법의 한계

본 글이 참조한 자료 범위에서는 다음 사항이 확인되지 않았습니다. 미확인이 곧 안전하다는 뜻은 아니므로 아래 항목들은 리스크 판단의 공백으로 봐야 합니다.

  • 원본 CVE 레코드(cvelistV5 JSON)를 직접 수집하지 못해 CVSS 점수, 등록일, CNA 등 세부 메타데이터는 확인할 수 없습니다.
  • TranslatePress 3.3.9 readme 원본을 확보하지 못해 변경 기록 내용은 2차 인용에 의존합니다.
  • 실제 악용 여부, 공개 공격 코드(POC), 독립적 기술 검증 여부가 확인되지 않았으며, 미확인은 악용 부재를 의미하지 않습니다.
  • 3.3.9 업데이트 적용 시 이미 저장된 주입 값의 정리 여부가 확인되지 않았습니다.
  • 로그인 상태 이용자에게 이어지는 구체적 영향은 레코드가 스크립트 실행까지만 기재하고 있어 확인할 수 없습니다.
  • 이 취약점 전용 탐지 지표(IOC)나 로그 조사 방법은 확인된 범위에 없어 이 글에서 권하지 않습니다.

결론: 지금 해야 할 일은 버전 확인이다

CVE-2026-120537은 TranslatePress 3.3.8 이하에서 인증 없는 주입이 가능하고 주입된 스크립트가 이용자 접근 시마다 실행되는 저장형 XSS입니다. 3.3.9 변경 기록에 보안 수정이 존재하지만, 이것이 본 취약점의 공식 해결책이라는 명시는 없다는 점까지 포함해 정확히 이해하는 것이 운영자의 출발점입니다. 지금 즉시 취할 행동은 명확합니다. 운영 사이트의 TranslatePress 버전을 직접 확인하고, 3.3.8 이하라면 호환성과 배포 절차를 점검한 뒤 3.3.9 업데이트를 검토하는 것입니다. 이후 공급업체의 추가 문서와 CVE 레코드 업데이트를 계속 추적하면서 확인되지 않은 사항이 메워지는지 함께 관리하면 됩니다.

댓글 남기기