CVE-2026-103479
Pubjet | پابجت <= 5.4.8 - Authenticated (Subscriber+) Privilege Escalation to 'check-token' AJAX Action
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- High
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
7.6
Pubjet | پابجت <= 5.4.8 - Authenticated (Subscriber+) Privilege Escalation to 'check-token' AJAX Action
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.
- Record
CVE-2026-103479- CVSS 3.1
- 7.6 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L - Weakness
- CWE-269
- Updated
- 2026-11-06
EUVDEUVD-2026-118187
7.6
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.
- Record
EUVD-2026-118187- CVSS 3.1
- 7.6 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L - Updated
- 2026-11-06
GitHub AdvisoriesGHSA-m2wp-4mqg-4392
7.6
The Pubjet | پابجت plugin for WordPress is vulnerable to Privilege Escalation in all versions up...
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.
- Record
GHSA-m2wp-4mqg-4392- CVSS 3.1
- 7.6 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L - Weakness
- CWE-269
- Updated
- 2026-11-06
NVD
7.6
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.
- Record
CVE-2026-103479- CVSS 3.1
- 7.6 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L - Weakness
- CWE-269
- Updated
- 2026-11-06
Affected products
History
| Recorded | Changed | Sources |
|---|---|---|
| published | EUVD | |
| published | EUVD, NVD | |
| aliases, references | GitHub Advisories | |
| cwes, severity, title | CVE List | |
| first indexed | EUVD |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-103479 is a high vulnerability (CVSS 7.6) in Pubjet | پابجت, published November 6, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.38%, the 31st percentile. No source names a fixed version.
References
wordfence.com/threat-intel/vulnerabilities/id/0391145a-2707-4639-80d0-a8a98512ef66?source=cve
plugins.trac.wordpress.org/browser/pubjet/tags/5.4.8/includes/Ajax.php
plugins.trac.wordpress.org/browser/pubjet/tags/5.4.8/includes/RestApi.php
nvd.nist.gov/vuln/detail/CVE-2026-103479
github.com/advisories/GHSA-m2wp-4mqg-4392