[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fWu6JXyo4bTDl5bvZjxm80r4XOBQLY34AF6E4vbaF5xI":3},{"id":4,"url_slug":5,"title":6,"description":7,"plugin_slug":8,"theme_slug":9,"affected_versions":10,"patched_in_version":9,"severity":11,"cvss_score":12,"cvss_vector":13,"vuln_type":14,"published_date":15,"updated_date":16,"references":17,"days_to_patch":9,"patch_diff_files":19,"patch_trac_url":9,"research_status":20,"research_verified":21,"research_rounds_completed":22,"research_plan":23,"research_summary":24,"research_vulnerable_code":9,"research_fix_diff":9,"research_exploit_outline":25,"research_model_used":26,"research_started_at":27,"research_completed_at":28,"research_error":9,"poc_status":9,"poc_video_id":9,"poc_summary":9,"poc_steps":9,"poc_tested_at":9,"poc_wp_version":9,"poc_php_version":9,"poc_playwright_script":9,"poc_exploit_code":9,"poc_has_trace":21,"poc_model_used":9,"poc_verification_depth":9,"poc_exploit_code_gated":21,"source_links":29},"CVE-2026-39699","ai-workflow-automation-missing-authorization","AI Workflow Automation \u003C= 1.4.2 - Missing Authorization","The AI Workflow Automation plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on a function in versions up to, and including, 1.4.2. This makes it possible for unauthenticated attackers to perform an unauthorized action.","ai-workflow-automation-lite",null,"\u003C=1.4.2","medium",5.3,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:N\u002FUI:N\u002FS:U\u002FC:N\u002FI:L\u002FA:N","Missing Authorization","2026-02-27 00:00:00","2026-04-15 21:31:59",[18],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002Fcb2763ae-6c40-4492-b285-0021ab4305f7?source=api-prod",[],"researched",false,3,"Since source files for **AI Workflow Automation (lite) \u003C= 1.4.2** were not provided in the prompt, this plan is designed to guide the agent through **Discovery** followed by **Exploitation**. The plan uses the description \"Missing Authorization\" and the plugin's purpose (AI automation) to target likely vulnerable endpoints.\n\n---\n\n### 1. Vulnerability Summary\nThe **AI Workflow Automation** plugin fails to implement proper capability checks (authorization) on one or more AJAX or REST API endpoints. This allows an unauthenticated user to trigger actions that should be restricted to administrators, such as executing AI workflows, modifying automation settings, or interacting with external AI APIs using the site's configured credentials.\n\n### 2. Attack Vector Analysis\n*   **Endpoint:** Likely `wp-admin\u002Fadmin-ajax.php` (via `wp_ajax_nopriv_*` hooks) or a REST API route registered via `register_rest_route`.\n*   **Authentication:** Unauthenticated (No privileges required).\n*   **Action:** The \"unauthorized action\" typically involves triggering a workflow, testing an API connection, or saving a configuration.\n*   **Preconditions:** The plugin must be active. Some actions may require an API key (e.g., OpenAI) to be already configured in the settings for the exploit to produce a visible side effect.\n\n### 3. Code Flow (Inferred Discovery Path)\nThe agent must first identify the specific vulnerable entry point:\n1.  **Entry Point Discovery:** The agent will search for `wp_ajax_nopriv` hooks in the plugin directory.\n    *   `grep -rn \"wp_ajax_nopriv\" wp-content\u002Fplugins\u002Fai-workflow-automation-lite\u002F`\n2.  **Capability Check Audit:** For every identified handler, the agent will check if `current_user_can()` is called.\n3.  **Vulnerable Path:**\n    *   **Request:** `POST \u002Fwp-admin\u002Fadmin-ajax.php` with `action=[vulnerable_action]`.\n    *   **Sink:** A function that performs a sensitive operation (e.g., `update_option`, `wp_remote_post` to an AI service, or database modification) without verifying the user's identity.\n\n### 4. Nonce Acquisition Strategy\nIf the identified endpoint uses `check_ajax_referer` or `wp_verify_nonce`, the agent must find where that nonce is leaked.\n\n1.  **Identify Nonce Action:** Look for the string used in `wp_create_nonce` or `check_ajax_referer` within the plugin code.\n2.  **Locate Localization:** Search for `wp_localize_script` to see where the nonce is passed to the frontend.\n    *   *Grep:* `grep -rn \"wp_localize_script\" wp-content\u002Fplugins\u002Fai-workflow-automation-lite\u002F`\n3.  **Create Trigger Page:** If the script (and nonce) only loads on specific pages (e.g., where a workflow is displayed), create a post with the plugin's shortcode.\n    *   *Shortcode Discovery:* `grep -rn \"add_shortcode\" wp-content\u002Fplugins\u002Fai-workflow-automation-lite\u002F`\n    *   *Action:* `wp post create --post_type=page --post_status=publish --post_content='[ai_workflow_shortcode]'` (inferred shortcode).\n4.  **Extract via Browser:**\n    *   Navigate to the new page.\n    *   `browser_eval(\"window.ai_workflow_obj?.nonce\")` (inferred JS variable).\n\n### 5. Exploitation Strategy\nBased on common vulnerabilities in \"Workflow\" plugins, we will target two likely scenarios: **Unauthorized Workflow Triggering** or **Settings Modification**.\n\n#### Scenario A: Unauthorized Workflow Execution (Inferred)\n1.  **Identify Action:** Assume the action is `ai_workflow_execute_step` (inferred).\n2.  **Construct Payload:**\n    *   **URL:** `http:\u002F\u002Flocalhost:8080\u002Fwp-admin\u002Fadmin-ajax.php`\n    *   **Method:** `POST`\n    *   **Body (URL Encoded):**\n        ```\n        action=ai_workflow_execute_step&\n        workflow_id=1&\n        prompt=Say+this+is+a+test&\n        nonce=[EXTRACTED_NONCE]\n        ```\n3.  **Execute:** Use `http_request`.\n\n#### Scenario B: Unauthorized Settings Update (Inferred)\n1.  **Identify Action:** Assume the action is `ai_workflow_save_settings` (inferred).\n2.  **Construct Payload:**\n    *   **URL:** `http:\u002F\u002Flocalhost:8080\u002Fwp-admin\u002Fadmin-ajax.php`\n    *   **Body (URL Encoded):**\n        ```\n        action=ai_workflow_save_settings&\n        openai_api_key=MALICIOUS_KEY&\n        nonce=[EXTRACTED_NONCE]\n        ```\n\n### 6. Test Data Setup\n1.  **Install Plugin:** Ensure `ai-workflow-automation-lite` version 1.4.2 is installed.\n2.  **Configure Admin Setting:** (Optional) Use WP-CLI to set a dummy API key so the \"Missing Authorization\" can be tested against a real functional path.\n    *   `wp option update ai_workflow_openai_key \"sk-valid-format-dummy-key\"`\n3.  **Create a Workflow:** If the plugin requires an existing workflow to trigger, create one via the admin UI or database.\n\n### 7. Expected Results\n*   **Success Criteria:** The server returns a `200 OK` response with a JSON body indicating success (e.g., `{\"success\": true}`) despite the request being unauthenticated.\n*   **Side Effects:** \n    *   If Scenario A: The AI service is contacted (check logs) or a result is returned.\n    *   If Scenario B: The plugin settings in the `wp_options` table are updated.\n\n### 8. Verification Steps\n1.  **Check Options:** Use WP-CLI to verify if the unauthorized user successfully changed a setting.\n    *   `wp option get ai_workflow_openai_key`\n2.  **Check Logs:** Examine the plugin's own execution logs if they exist.\n    *   `wp db query \"SELECT * FROM wp_posts WHERE post_type='ai_workflow_log' ORDER BY ID DESC LIMIT 1;\"` (inferred table\u002Fpost type).\n\n### 9. Alternative Approaches\n*   **REST API Check:** If no `wp_ajax_nopriv` hooks are found, audit `register_rest_route` calls. Check if the `permission_callback` is missing, returns `true`, or uses a weak check like `is_user_logged_in()` (which would still be a vulnerability if it allows Contributor to do Admin tasks, but the CVE suggests unauthenticated).\n*   **Init\u002FAdmin_Init Hook:** Check if the plugin processes `$_POST` data directly inside a function hooked to `init`.\n    *   `grep -rn \"add_action.*init\" wp-content\u002Fplugins\u002Fai-workflow-automation-lite\u002F` followed by a search for `$_POST` or `$_REQUEST`.","The AI Workflow Automation plugin for WordPress is vulnerable to unauthorized access in versions up to 1.4.2 due to missing capability checks on its backend handlers. This allows unauthenticated attackers to perform administrative actions, such as triggering AI workflows or modifying plugin configurations, by interacting with vulnerable AJAX or REST API endpoints.","The exploit targets unauthenticated AJAX actions or REST API routes that lack proper authorization (capability checks). An attacker first identifies the vulnerable action, typically registered via `wp_ajax_nopriv_*` hooks. If the endpoint is protected by a nonce, the attacker extracts it from the site's frontend where the plugin localizes script data. Finally, a POST request is sent to `\u002Fwp-admin\u002Fadmin-ajax.php` with the targeted `action` and malicious parameters, such as updated settings or workflow execution commands, allowing the attacker to perform administrative tasks without authentication.","gemini-3-flash-preview","2026-04-18 22:53:09","2026-04-18 22:53:27",{"type":30,"vulnerable_version":9,"fixed_version":9,"vulnerable_browse":9,"vulnerable_zip":9,"fixed_browse":9,"fixed_zip":9,"all_tags":31},"plugin","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fai-workflow-automation-lite\u002Ftags"]