WordPress 채용 사이트용 플러그인 WP Job Portal에서 저장형 XSS 취약점이 보고되었습니다. 인증을 요구하는 취약점이라 저위험으로 보일 수 있지만, 이 플러그인의 셀프 등록 구조 때문에 '저권한이라 안전하다'는 전제는 성립하기 어렵습니다.
개요

CVE Project / Wordfence CNA 등록 정보에 따르면 CVE-2026-116546은 WordPress용 WP Job Portal - AI-Powered Recruitment System for Company or Job Board website 플러그인의 저장형 Cross-Site Scripting 취약점입니다. 입력 살균과 출력 이스케이프가 충분히 적용되지 않아 'degreetitle' 파라미터를 통해 임의 웹 스크립트를 주입할 수 있다고 기재되어 있습니다.
- 취약점 유형: 저장형 XSS (Stored Cross-Site Scripting)
- 주입 지점: 'degreetitle' 파라미터
- 영향 버전: 2.7.0 이하 전 버전
- CVSS v3.1 기본 점수: 6.4 (MEDIUM)
- 인증 요건: Subscriber(구독자) 권한 이상
- 실행 시점: 주입된 페이지를 다른 사용자가 열었을 때
여기서 중요한 맥락은 권한 진입로입니다. 등록 정보는 이 플러그인의 셀프 등록 흐름이 방문자 누구나 Subscriber 권한의 Employer(고용주) 계정을 만들 수 있도록 허용한다고 명시합니다. 따라서 사이트에서 등록이 열려 있는 한 '인증된 공격자'라는 조건은 방어선이 되지 못하고, 등록할 수 있는 사람이라면 사실상 누구나 주입 가능한 상태로 해석하는 것이 정확합니다.
영향 범위
영향 대상은 WP Job Portal - AI-Powered Recruitment System for Company or Job Board website 플러그인의 2.7.0 이하 전 버전입니다. 여기에 사용자 셀프 등록이 열려 있어 Subscriber 권한의 고용주 계정을 생성할 수 있는 WordPress 사이트가 조건부 영향 범위로 추가됩니다.
- 주입된 페이지를 열면, 그 페이지를 방문한 사용자의 브라우저에서 임의 스크립트가 실행됩니다.
- 개발사 수정 기록은 공고 페이지 방문자에게 스크립트가 실행될 수 있었다고 안내하므로, 외부 방문자가 열어보는 페이지가 주입 대상이 되면 방문자 전체가 영향 범위에 들어갑니다.
- 셀프 등록이 활성화된 사이트는 잠재 공격자 집단이 일반 방문자 수준까지 확장됩니다.
- 악성 콘텐츠가 게재된 채용 사이트는 신뢰성과 평판에 운영상 피해를 입을 가능성이 있습니다.
정리하면, 위험도는 플러그인 버전 자체보다 '등록이 열려 있는가'와 '공고 페이지가 외부에 공개되어 있는가'라는 운영 조건에 따라 크게 달라집니다. 같은 버전이라도 등록을 닫은 사이트와 개방된 사이트의 실질 노출은 동일하지 않습니다.
기술적 분석
기술적 근거는 입력 살균(input sanitization)과 출력 이스케이프(output escaping)의 부족입니다. CVE 레코드가 서술하는 경로는 'degreetitle' 파라미터로, 인증된 사용자가 이 필드에 악의적인 스크립트를 넣으면 그 값이 포함된 페이지를 방문자가 여는 순간 브라우저에서 스크립트가 실행되는 저장형 XSS 구조입니다.
플러그인 개발사의 수정 내역은 별개의 관점으로 문제를 설명합니다. 로그인한 고용주가 채용 공고의 구조화 데이터(structured data)에 스크립트를 넣으면 공고 페이지 방문자에게 실행됐다는 것이며, 수정 버전에서는 공고의 JSON-LD를 인코딩해 마크업이 구조화 데이터 밖으로 탈출할 수 없도록 처리했다고 안내합니다. 모든 사이트에 업데이트를 권고한다는 문구도 함께 들어가 있습니다.
두 자료는 같은 플러그인의 저장형 XSS 문제와 그 수정을 다룬다는 점에서 일치하지만, CVE 레코드는 'degreetitle' 파라미터의 저장형 XSS를, 개발사 변경 기록은 채용 공고 JSON-LD 인코딩 수정을 각각 설명하는 범위에서 이해해야 합니다. 두 표현이 같은 코드 경로의 인과로 이어진다는 점은 이번 근거로 확인할 수 없으므로, 주입 지점과 출력 컨텍스트를 하나로 묶어 단정하지 않는 것이 정확합니다.
CVE 레코드가 제시하는 CVSS v3.1 기본 점수 6.4(MEDIUM)는 표준 척도상 중간 심각도입니다. 다만 이 점수는 인증 요건을 전제로 산정된 값으로 읽어야 하며, 셀프 등록으로 누구나 Subscriber 권한 계정을 얻을 수 있는 사이트에서는 운영상 체감 위험이 점수보다 높아질 수 있습니다. 이 해석은 점수 자체를 재평가하는 것이 아니라 등록 개방이라는 운영 조건을 함께 놓고 보는 조건부 판단입니다.
확인되지 않은 정보
- 공개된 개념 증명(PoC), 독립 기술 분석, 실제 야생 악용 증거는 이번 증거 범위에서 확인되지 않았습니다.
- CVE 레코드에는 CVSS v3.1 기본 점수 6.4(MEDIUM)가 명시되어 있지만, CISA KEV(알려진 악용 취약점) 등재 여부는 제공된 근거에 없어 이 글에서 판단을 제시하지 않습니다.
- 악용이 관측되지 않았다는 사실은 안전하다는 의미가 아닙니다. 셀프 등록이 열린 사이트에서는 인증 장벽이 사실상 무의미해지므로, 악용 관측 여부와 무관하게 등록 개방 상태를 우선순위의 주요 변수로 봐야 합니다. 이 판단은 실제 악용 정황이 확인되지 않은 상태에서의 조건부 운영 해석입니다.
대응 방안
즉시 조치
- WP Job Portal 2.7.0 이하 사용 여부를 전수 확인하고 최신 버전으로 업데이트합니다. 개발자는 모든 사이트에 업데이트를 권고했고, 저장형 XSS 수정은 구조화 데이터(JSON-LD)를 인코딩하는 형태로 반영되었습니다.
- 당장 업데이트가 어렵다면, 신규 방문자가 셀프 등록으로 Subscriber 권한의 Employer(고용주) 계정을 만드는 경로를 일시적으로 제한하는 방안을 조건부로 검토할 수 있습니다. 이는 근거에 명시된 신규 계정 생성 경로를 좁히는 완화책이며, 이미 만들어진 계정의 주입 가능성까지 차단한다고 보기는 어렵습니다.
지속 대응
- 개발사 수정 기록에 안내된 저장형 XSS 보안 수정, 즉 채용 공고의 JSON-LD를 인코딩해 마크업 탈출을 차단한 내용을 포함해 WP Job Portal을 최신 버전으로 유지합니다. 개발사는 모든 사이트에 업데이트를 권고했습니다.
- WP Job Portal을 포함한 외부 플러그인의 버전을 주기적으로 확인해, 위와 같은 저장형 XSS 수정이 반영된 최신 버전이 계속 적용되어 있는지 점검합니다. 제공된 근거는 업데이트 권고 그 자체를 넘어서는 별도의 모니터링이나 콘텐츠 점검 절차까지 뒷받침하지 않으므로, 이 글은 해당 범위까지 대응을 넓혀 권고하지 않습니다.
참고자료
- CVE-2026-116546 WP Job Portal <= 2.7.0 - Authenticated (Subscriber+) Stored Cross-Site Scripting via 'degreetitle' Parameter
- WP Job Portal plugin information (changelog 2.7.1 security fix)
함께 읽으면 좋은 글
- CVE-2026-119048: JeeSite AI CMS 채팅 모듈 IDOR로 타 사용자 대화 열람 점검
- MCP TypeScript SDK CVE-2026-104850: OAuth 자격증명의 권한 서버 바인딩을 점검해야 하는 이유
- CVE-2026-109997: Ninja Forms 3.15.5 이하, 'extra' 파라미터와 메타데이터 키 정규화가 지목된 인증 없는 저장형 XSS
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!