WP Manifestindependent plugin directory
manifest / updates / wc-plugin-update-server

WooCommerce and UpdatePulse Server integration WP Registry grade D+. High-severity findings · 2 findingsWP RegistryHigh-severity findings · 2 findingsOpen the reportD+

Integrates WooCommerce orders with UpdatePulse Server to automate software license key generation and renewals.

★ 5stars
2.0.1latest · 22d ago

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/tikhomirov/wc-plugin-update-server/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Simple and powerfully! Licenses are created automatically after payment for the order. The plugin provides the ability to renew the license.

UpdatePulse Server
https://github.com/rwsite/updatepulse-server

WooCommerce https://github.com/woocommerce/woocommerce

Screenshots

Plugin create additional settings for UpdatePulse plugin.

Settings

WC Product settings. admin part

Product page

All Orders. admin part

Orders

WC Order metabox: showing and adding licenses. admin part

Edit order. Manage licences. Edit order. Manage licences.

Showing licence data for customer. Renewal function. Front part.

Show licence data for customer. Renewal function.

Releases

7 releases.

Tag
Published
2.0.1 latest
Sep 30, 2026 22d ago
Jun 18, 2025 1 year ago
Jan 29, 2024 2 years ago
Jul 22, 2023 3 years ago
May 14, 2023 3 years ago
Jun 14, 2022 4 years ago
Sep 7, 2021 5 years ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.

D+ grade

Security

WooCommerce and UpdatePulse Server integration 2.0.1 · audited by WP Registry

High-severity findings.

2 high
Audited release
2.0.1
Findings
2
Worst severity
high
Content hash
c14cd846a34886fcf574fe75…

Findings

  • high License package download trusts GET package_slug and does not bind license to user

    file_access

    download_package() requires the logged-in user to match uid but then loads a license only by lic_id (no ownership/email check) and calls upserv_download_local_package() with the attacker-controlled GET package_slug rather than $lic->package_slug. Observable consequence: any logged-in customer with knowledge of any unexpired license id can download arbitrary UpdatePulse packages by swapping package_slug (or using another customer's lic_id).

    includes/LicOrder.php:476-511

    Recommendation

    Authorize against the license record: verify the license belongs to the current user (email/user id), require order_id match, and download only $lic->package_slug (ignore client-supplied slug). Prefer capability-checked/signed download tokens.

  • high License package download trusts GET package_slug and does not bind license to user

    file_access

    download_package() requires the logged-in user to match uid but then loads a license only by lic_id (no ownership/email/order binding) and calls upserv_download_local_package() with attacker-controlled GET package_slug rather than $lic->package_slug. order_id is read and never checked. Observable consequence: any logged-in customer who knows (or guesses) any unexpired license id can download arbitrary UpdatePulse packages by swapping package_slug, or use another customer's lic_id.

    includes/LicOrder.php:476-511

    Recommendation

    Authorize against the license record: verify the license belongs to the current user (email/user id), require order_id match, and download only $lic->package_slug (ignore client-supplied slug). Prefer capability-checked or signed download tokens.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.