WordPress용 TranslatePress 플러그인의 댓글 경로에서 저장형 크로스사이트 스크립팅(Stored XSS)이 확인됐다. 인증 없이 스크립트를 넣을 수 있다는 문장만 남기면 위험이 실제보다 넓게 읽힌다. 공개된 레코드는 악용에 필요한 조건을 함께 적고 있고, 그 조건이 이 취약점의 점검 순서를 정한다.
개요

CVE-2026-119167는 WordPress용 TranslatePress – Translate Multilingual sites with AI Translation 플러그인에서 확인된 저장형 XSS 취약점이다. CVE Program 레코드에 따르면 3.3.8 이하 모든 버전에서 comment 매개변수의 입력값 정제(input sanitization)와 출력 이스케이프(output escaping)가 충분하지 않아, 인증되지 않은 공격자가 임의의 웹 스크립트를 페이지에 주입할 수 있다. 주입된 스크립트는 사용자가 그 페이지에 접근할 때 실행된다.
취약점 설명에는 조건이 하나 더 붙는다. 같은 레코드는 악용에 필요한 전제를 함께 명시하기 때문에, 이 취약점을 다룰 때의 첫 질문은 단순한 주입 가능성보다 우리 사이트에 그 전제가 있는가가 된다.
영향 범위
- 제품과 버전:
TranslatePress – Translate Multilingual sites with AI Translation3.3.8 이하 모든 버전. - 인증 수준: 취약점 설명은 인증되지 않은 공격자를 전제로 한다.
- 악용 조건: 공격에 사용하는 이름과 이메일 조합의 이전 댓글 승인 이력, 그리고 TranslatePress의 보조 언어 구성.
세 항목의 성격은 서로 다르다. 버전과 플러그인 구성은 설치 현황으로 바로 확인되지만, 댓글 승인 이력은 사이트의 운영 방식에 따라 달라진다. 같은 영향 버전을 쓰더라도 악용 조건까지 함께 갖추어진 사이트와 그렇지 않은 사이트의 점검 우선순위는 같을 수 없다. 두 조건이 갖는 의미는 아래 기술적 분석에서 한 번으로 정리한다.
기술적 분석
주입 지점과 실행 흐름
문제가 되는 지점은 댓글 입력이다. 제공된 레코드는 comment 매개변수에 대한 정제와 출력 이스케이프가 충분하지 않아 인증되지 않은 공격자가 임의의 웹 스크립트를 페이지에 주입할 수 있다고 밝힌다. NVD 레코드도 같은 흐름을 인증되지 않은 공격자가 임의의 웹 스크립트를 주입해, 사용자가 주입된 페이지에 접근할 때 실행되게 할 수 있다고 표현한다.
그래서 저장형 XSS는 주입된 페이지에 사용자가 접근할 때 스크립트가 실행될 수 있다는 전제로 다뤄야 한다. 다만 이 글은 스크립트가 어떤 화면에서 어떻게 조립돼 출력되는지까지 확인하지 못했다. 제공된 근거는 정제와 이스케이프가 부족하다는 원인과 접근 시점의 실행 가능성만 밝힐 뿐, 코드 경로와 렌더링 세부, 피해 확인 방법이나 시점 기준은 다루지 않는다.
악용 성립을 가르는 전제 조건
근거가 요구하는 첫 조건은 승인 이력이다. 공격자가 사용하는 이름과 이메일 조합으로 작성된 이전 댓글이 최소 하나 승인된 상태여야 한다는 것이 확인된 내용이다. WordPress 기본 댓글 승인 설정인 comment_previously_approved가 어떤 기준으로 동작하는지, 예외나 사이트별 설정 변경 이력은 어떻게 되는지는 제공된 근거에 없다. 따라서 설정값 하나로 성부를 결론내지 않는 편이 안전하다.
둘째 조건은 TranslatePress의 보조 언어 구성이다. 확인된 내용은 보조 언어가 구성돼 있어야 악용이 가능하다는 것까지이고, 구성 내부의 동작이나 경로는 제공된 근거에 없다. 그래서 점검에서 다룰 범위는 보조 언어가 설정돼 있는지 확인하는 것으로 한정한다.
해석은 여기서 한 번에 정리한다. 두 조건은 악용에 필요한 필요 조건으로 확인된다. 두 조건이 한 사이트에서 함께 확인돼도 실제 악용이 일어났다는 증거는 아니고, 반대로 조건이 눈에 띄지 않는다고 이 취약점 자체가 사라지는 것도 아니다. 근거가 밝히는 범위는 해당 공격에 사용되는 이름과 이메일 조합의 승인된 이전 댓글이 필요하다는 점까지이며, 조건을 확인하기 전에 위험을 축소 해석할 근거는 제공되지 않았다. 조건 확인은 위험 판단의 출발점이지 결론이 아니다.
확인되지 않은 부분
- 실제 공격 관측 여부와 공개 개념증명(PoC)의 존재는 제공된 근거로 확정할 수 없다. 잠재적 악용 가능성과 관찰된 공격은 구분해서 봐야 한다.
- WordPress.org 플러그인 정보에는 3.3.9가 버전 값으로 확인되지만, 이 버전이 취약점 수정본인지까지는 확인되지 않았다. 버전 번호가 높다는 사실만으로 안전한 수정본으로 단정할 수 없다.
- 구체적인 탐지 규칙과 침해지표, 공급자가 권고한 임시 완화책도 제공된 근거에 포함되지 않았다.
대응 방안
지금 확인할 것
- 설치된 TranslatePress 버전이 3.3.8 이하인지 확인한다.
- TranslatePress에 보조 언어가 구성돼 있는지 확인한다.
- 댓글 승인 운영 방식이, 공격에 사용하는 이름과 이메일 조합 기준의 이전 승인 이력이 쌓이는 구조인지 확인한다.
점검 순서
버전 확인은 설치 현황에서 바로 드러나므로 앞에서 처리한다. 3.3.8 이하가 확인되는 사이트에서는 위 두 악용 조건의 확인을 먼저 하고, 조건이 부분적으로만 확인되는 사이트는 남은 조건을 확인한 뒤 판단하는 편이 정확하다. 3.3.8을 넘는 버전의 상태는 확인된 버전 정보만으로는 확정할 수 없고, 조건이 확인되지 않는 구성에 대해 위험이 없다고 판단할 근거도 제공되지 않았다.
수정 버전 확인과 업데이트
대응의 종점은 공급자의 수정을 확인하고 반영하는 것이다. 먼저 공급자의 수정 공고와 배포 이력을 확인해 3.3.9를 포함한 어느 버전에서 이 취약점이 해결됐는지 확정한다. 확인된 뒤에는 영향 버전을 쓰는 사이트부터 취약점이 해결된 버전으로 업데이트하고, 다국어 페이지와 댓글 기능이 정상 동작하는지 검증한다. 수정 여부가 확인되기 전에는 버전 번호만을 근거로 업데이트 대상을 정하지 않는다. 실제 악용 정황과 탐지 방법, 임시 완화책도 확인되지 않은 상태이므로, 완화조치를 검토할 때는 자체 판단과 별도 검증이 필요하다.
참고자료
함께 읽으면 좋은 글
- LXD 제한 프로젝트 우회: 스냅샷 복원이 여는 호스트 root 명령 실행 경로
- CVE-2026-124424: AVideo AI 플러그인의 자막 경로 순회 취약점 점검
- CVE-2026-123498: Vikunja veans 코딩 에이전트 지시문으로 들어가는 프로젝트 메타데이터
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!