🔍 CVE-2026-103479

7.6
CVSS Score
HIGH
2026-11-06
2026-11-06 18:17
✅ 완료

🇰🇷 한글 설명

Pubjet WordPress 플러그인 5.4.8 이하 버전에서 checkToken() AJAX 핸들러가 권한 검사와 nonce 검증 없이 GET 파라미터 token을 pubjet_settings 옵션에 기록합니다. 이로 인해 Subscriber 이상 권한의 인증된 공격자가 REST API 자격 증명을 조작하여 Pubjet API 클라이언트 권한을 획득할 수 있습니다.

💡 쉬운 설명

구독자 권한만 있는 사용자가 플러그인의 내부 인증 토큰을 임의의 값으로 바꿀 수 있습니다. 이렇게 되면 기사 생성·수정·삭제 같은 관리자급 기능을 악용할 수 있습니다.

🇺🇸 원문 (English)

The Pubjet | پاب‌جت plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 5.4.8. This is due to the `checkToken()` AJAX handler — registered under `wp_ajax_pubjet-check-token` — performing no capability check and no nonce verification before unconditionally writing the attacker-supplied `token` GET parameter directly into the site-wide `pubjet_settings` option via `pubjet_update_setting()`, prior to any remote validation. This makes it possible for authenticated attackers, with Subscriber-level access and above, to overwrite the plugin's stored REST API credential with an attacker-chosen value, immediately elevating their effective privileges to those of an authorized Pubjet API client and enabling them to invoke otherwise-restricted endpoints — `createReportage`, `updateReportage`, `deleteReportage`, `toggleCopyright`, and `createBacklink` — to create, modify, and delete arbitrary reportage posts and manipulate plugin state that Subscribers cannot normally access. The privilege escalation is self-reinforcing: because `RestApi::isTokenValid()` authenticates solely by comparing the incoming `Authorization` header against the value returned by `pubjet_token()`, which reads from the same option the unprotected handler writes to, the attacker-planted token is trusted as legitimate on all subsequent requests.

📍 영향받는 시스템

Pubjet WordPress 플러그인 5.4.8 이하 전체 버전

⚔️ 공격 벡터

구독자 이상 권한의 계정으로 로그인한 뒤 wp_ajax_pubjet-check-token 액션에 임의의 token 파라미터를 보내 REST API 토큰을 덮어쓴 후 제한된 엔드포인트를 호출

🛡️ 대응 방법

Pubjet 플러그인을 5.4.8 초과 최신 버전으로 업데이트하고, 업데이트 전까지는 플러그인을 비활성화하거나 해당 AJAX 액션을 차단

🔧 검증 코드

출력된 버전 번호가 5.4.8 이하이면 취약하며, 명령이 아무 결과도 내지 않으면 플러그인이 설치되지 않은 것입니다.

Shell / Script
wp plugin get pubjet --field=version 2>/dev/null || grep -rh "Version:" $(find /var/www -path '*pubjet*' -name 'pubjet.php' 2>/dev/null | head -1) 2>/dev/null

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L

💻 영향받는 소프트웨어

WordPress