Published : August 11, 2026

CVE-2026-65527: LIQUID SPEECH BALLOON <= 1.2.5 Authenticated (Contributor+) Stored Cross-Site Scripting PoC, Patch Analysis & Rule

Severity Medium (CVSS 6.4)
CWE 79
Vulnerable Version 1.2.5
Patched Version 1.2.6
Disclosed July 22, 2026

Analysis Overview

Atomic Edge analysis of CVE-2026-65527: The LIQUID SPEECH BALLOON WordPress plugin, version 1.2.5 and earlier, contains a stored cross-site scripting (XSS) vulnerability. This vulnerability allows authenticated users with contributor-level access or higher to inject arbitrary web scripts. The scripts execute whenever a user accesses an affected page. The vulnerability carries a CVSS score of 6.4 and is categorized under CWE-79 (Cross-Site Scripting).

Root Cause: The root cause lies in insufficient input sanitization and output escaping. The vulnerable code path is within the plugin’s block rendering logic. Although the specific diff does not show the vulnerable sanitization code, the issue stems from the block attributes not being properly sanitized on output. The `liquid_speech_balloon_editor_assets` function enqueues the block script (`lib/block.js`), which is responsible for frontend rendering and is vulnerable to script injection via unsanitized block attributes.

Exploitation: An attacker with contributor-level access exploits this by crafting a post or page containing the Liquid Speech Balloon block. The attacker injects a malicious XSS payload into a block attribute, such as the balloon text or name field. When an administrator or other user views the published content, the injected JavaScript executes in their browser session. This attack vector uses the standard WordPress block editor interface and does not require special endpoints.

Patch Analysis: The provided patch primarily updates the script dependencies for the block editor and adjusts admin notice dismissal transients, but it does not directly address the XSS vulnerability within the block’s rendering. The actual fix for this XSS is in a separate part of the codebase, likely involving the application of `esc_html()` or `wp_kses()` to the block attributes during rendering, which is not visible in this diff. The version bump from 1.2.5 to 1.2.6 indicates the fix was released, but the diff provided does not show the core sanitization changes.

Impact: Successful exploitation allows an attacker to execute arbitrary JavaScript in the context of a logged-in user’s session. This can lead to session hijacking, forced administrator actions (e.g., creating new admin accounts), defacement of the website, or the distribution of malware. Because the script is stored in the database, the attack persists and impacts any user who views the compromised page.

Differential between vulnerable and patched code

Below is a differential between the unpatched vulnerable code and the patched update, for reference.

Code Diff
--- a/liquid-speech-balloon/liquid-speech-balloon.php
+++ b/liquid-speech-balloon/liquid-speech-balloon.php
@@ -8,7 +8,7 @@
 License: GPLv2
 License URI: https://www.gnu.org/licenses/gpl-2.0.html
 Text Domain: liquid-speech-balloon
-Version: 1.2.5
+Version: 1.2.6
 */
 /*  Copyright 2019 LIQUID DESIGN Ltd. (email : info@lqd.jp)

@@ -64,13 +64,11 @@

 function liquid_speech_balloon_editor_assets() {
     global $liquid_speech_balloon_name, $liquid_speech_balloon_note;
-    // enqueue
-    wp_enqueue_script( 'liquid-block-speech', plugins_url( 'lib/block.js', __FILE__ ), array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor' ));
+    // enqueue(wp-editor 依存は新ウィジェットエディターで Notice が出るため wp-block-editor を使う)
+    wp_enqueue_script( 'liquid-block-speech', plugins_url( 'lib/block.js', __FILE__ ), array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-block-editor' ));
     wp_enqueue_style( 'liquid-block-speech', plugins_url( 'css/block.css', __FILE__ ), array() );
     // inline
     wp_add_inline_style( 'liquid-block-speech', liquid_speech_balloon_style_data() );
-    // register
-    wp_register_script( 'liquid-block-speech', plugins_url( 'lib/block.js', __FILE__ ), array( 'wp-i18n' ) );
     // translations
     if ( function_exists( 'wp_set_script_translations' ) ) {
         wp_set_script_translations( 'liquid-block-speech', 'liquid-speech-balloon', plugin_dir_path( __FILE__ ) . 'languages' );
@@ -322,10 +320,10 @@
     global $liquid_speech_balloon_json;
     if( !empty($liquid_speech_balloon_json) ) {
         if ( isset( $_GET['liquid_admin_notices_dismissed'] ) ) {
-            set_transient( 'liquid_admin_notices', 'dismissed', 60*60*24*30 );
+            set_transient( 'liquid_admin_notices', 'dismissed', 60*60*24*180 );
         }
         if ( isset( $_GET['liquid_admin_offer_dismissed'] ) ) {
-            set_transient( 'liquid_admin_offer', 'dismissed', 60*60*24*30 );
+            set_transient( 'liquid_admin_offer', 'dismissed', 60*60*24*180 );
         }
         if( !empty($liquid_speech_balloon_json['news']) && get_transient( 'liquid_admin_notices' ) != 'dismissed' ){
             echo '<div class="notice notice-info" style="position: relative;"><p>'.$liquid_speech_balloon_json['news'].'</p><a href="?liquid_admin_notices_dismissed" style="position: absolute; right: 10px; top: 10px;">×</a></div>';

Frequently Asked Questions

Atomic Edge WAF security layer inspecting website traffic.

How Atomic Edge Works

Simple Setup. Powerful Security.

Atomic Edge acts as a security layer between your website & the internet. Our AI inspection and analysis engine auto blocks threats before traditional firewall services can inspect, research and build archaic regex filters.

Get Started

Trusted by Developers & Organizations

Trusted by Developers
Black & McDonald logo representing Enterprise tier security and support for Atomic Edge WAF.Covenant House Toronto logo featuring a dove and text for Atomic Edge Enterprise planAlzheimer Society Canada logo representing trusted organizations and security partners.University of Toronto logo representing trusted organizations using Atomic Edge WAFSpecsavvers logo, trusted developers and organizations using Atomic Edge securityHarvard Medical School logo representing trusted organizations using Atomic Edge WAF.