☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-61602

CVE-2025-61602 Denial of Service in Bigbluebutton
📅 PUBLISHED: 2025-10-09 20:40 UTC 🔄 UPDATED: 2026-09-23 20:20 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.39%
👁️
0.39% probability
9.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-61602 is a denial-of-service (DoS) vulnerability in BigBlueButton, an open-source virtual classroom platform. The flaw resides in the GraphQL mutation chatSendMessageReaction, where a malformed reactionEmojiId can be sent by any authenticated user to crash the chat functionality for all participants in a meeting. This effectively halts real-time communication, disrupting the entire session. The vulnerability affects versions prior to 3.0.13. The CVSS score is 7.5 (High), and the attack vector is network-based with low complexity, requiring only low privileges (authenticated user). No public exploit code or proof-of-concept is currently available, but the technical details are sufficient for a skilled attacker to craft an exploit.

⚡ 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 is not related to a specific package manager (NPM, PyPI, Go, Ruby) but is a core application-level issue in the BigBlueButton server software. The patch is available in version 3.0.13, and administrators should prioritize upgrading.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.5 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
  • Attack Vector (AV): Network (N) – The attack is performed over the network.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): Low (L) – An authenticated user account is needed.
  • User Interaction (UI): None (N) – No victim interaction is required.
  • Scope (S): Unchanged (U) – The vulnerability does not affect other components.
  • Confidentiality (C): None (N) – No data is exposed.
  • Integrity (I): None (N) – No data is modified.
  • Availability (A): High (H) – The chat service is completely disrupted.

Threat Level: High. The low complexity and low privilege requirement make this a significant threat to any BigBlueButton deployment. An attacker can repeatedly crash the chat, effectively denying service to all meeting participants.

Deep Dive & Mechanics

The vulnerability is located in the GraphQL mutation chatSendMessageReaction. This mutation is used by authenticated users to react to chat messages with emojis. The reactionEmojiId parameter is expected to be a valid emoji identifier (e.g., a Unicode emoji or a custom emoji ID). However, the input validation is insufficient.

When a malformed reactionEmojiId is provided (e.g., a very long string, a string with special characters, or a non-emoji value), the server-side processing logic enters an unexpected state. This can cause a null pointer dereference, an infinite loop, or an unhandled exception in the chat service thread. The result is that the chat functionality becomes unresponsive for all participants in the meeting. The rest of the meeting (audio, video, screensharing) may continue to function, but the chat is completely dead.

The root cause is a lack of proper input sanitization and validation on the reactionEmojiId field. The server does not check for:

  • Maximum length
  • Allowed character set
  • Valid emoji format
  • Boundary conditions

Vulnerable vs. Patched Code

The vulnerable code is in the GraphQL resolver for chatSendMessageReaction. The patched version (3.0.13) introduces input validation.

Vulnerable Code (Conceptual):

// Vulnerable resolver
const resolvers = {
  Mutation: {
    chatSendMessageReaction: async (_, { chatMessageId, reactionEmojiId }, context) => {
      // No validation on reactionEmojiId
      const reaction = await ChatReaction.create({
        chatMessageId,
        reactionEmojiId, // Directly used
        userId: context.user.id,
      });
      return reaction;
    },
  },
};

Patched Code (Conceptual):

// Patched resolver
const resolvers = {
  Mutation: {
    chatSendMessageReaction: async (_, { chatMessageId, reactionEmojiId }, context) => {
      // Input validation
      if (typeof reactionEmojiId !== 'string' || reactionEmojiId.length > 50) {
        throw new Error('Invalid reactionEmojiId');
      }
      // Additional validation: ensure it's a valid emoji
      if (!isValidEmoji(reactionEmojiId)) {
        throw new Error('Invalid emoji');
      }
      const reaction = await ChatReaction.create({
        chatMessageId,
        reactionEmojiId,
        userId: context.user.id,
      });
      return reaction;
    },
  },
};

The patch adds a length check and a function isValidEmoji to verify the input is a legitimate emoji. This prevents malformed data from reaching the core processing logic.

Exploitation & Lab Setup

Red Team (Attacker)

Objective: Crash the chat functionality for all participants in a BigBlueButton meeting.

Prerequisites:

  • A valid user account on the BigBlueButton server.
  • The meeting ID and an active meeting.
  • The ability to send GraphQL requests (e.g., using curl, graphql-request, or a custom script).

Exploit Steps:

  1. Authenticate: Obtain a valid session token or API key for the BigBlueButton server.
  2. Identify Meeting: Join a meeting or obtain the meeting ID.
  3. Craft Malicious Payload: Create a GraphQL mutation with a malformed reactionEmojiId. Examples:
    • Extremely long string: "A".repeat(10000)
    • Special characters: "<script>alert(1)</script>"
    • Null byte: "\x00"
    • Non-emoji Unicode: "\u0000"
  4. Send Request: Send the mutation to the GraphQL endpoint (typically /bigbluebutton/api/graphql).

Example curl command:

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"query":"mutation { chatSendMessageReaction(chatMessageId: \"MESSAGE_ID\", reactionEmojiId: \"'$(python3 -c 'print("A"*10000)')\") { success } }"}' \
  https://your-bbb-server.com/bigbluebutton/api/graphql

Expected Outcome: The chat becomes unresponsive for all users in the meeting. The attacker can repeat this to maintain the DoS.

Blue Team (Defender)

Detection:

  • Monitor GraphQL API logs for requests to chatSendMessageReaction with unusually long or malformed reactionEmojiId values.
  • Set up alerts for high error rates from the chat service.
  • Use the detection rules provided in the Detection Engineering section.

Mitigation:

  • Immediately upgrade to BigBlueButton 3.0.13 or later.
  • If immediate patching is not possible, implement a Web Application Firewall (WAF) rule to block requests with reactionEmojiId values exceeding a certain length (e.g., 50 characters) or containing non-emoji characters.
  • Restrict GraphQL API access to trusted networks or users if possible.

Lab Setup:

  1. Deploy a vulnerable BigBlueButton instance (version < 3.0.13) in an isolated environment.
  2. Create a test user and a test meeting.
  3. Use the Red Team steps to verify the vulnerability.
  4. Apply the patch (upgrade to 3.0.13) and confirm the fix.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • GraphQL requests to /bigbluebutton/api/graphql with the mutation chatSendMessageReaction.
    • reactionEmojiId values that are excessively long (>50 characters) or contain non-emoji characters (e.g., <, >, \x00, %00).
  • Log IOCs:
    • Application logs showing errors like TypeError: Cannot read properties of null, RangeError: Invalid string length, or unhandled exceptions in the chat service.
    • GraphQL error responses indicating Invalid reactionEmojiId (if patched) or internal server errors (if vulnerable).
  • System IOCs:
    • High CPU or memory usage on the BigBlueButton server during the attack.
    • Chat service process crashes or restarts.

Detection Engineering

YARA Rule

rule CVE_2025_61602_BigBlueButton_Chat_DoS {
    meta:
        description = "Detects malformed reactionEmojiId in GraphQL requests targeting BigBlueButton chat"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-61602"
    strings:
        $graphql_mutation = "chatSendMessageReaction" nocase
        $reaction_param = "reactionEmojiId" nocase
        $long_string = /reactionEmojiId.{0,100}[A-Za-z0-9]{100,}/ nocase
        $special_chars = /reactionEmojiId.{0,100}[<>\"'&%\\x00\\n\\r]/ nocase
    condition:
        $graphql_mutation and $reaction_param and ($long_string or $special_chars)
}

Sigma Rule

title: CVE-2025-61602 BigBlueButton Chat DoS via Malformed Reaction
id: 8a7b3c2d-1e5f-4a6b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects attempts to exploit CVE-2025-61602 by sending malformed reactionEmojiId in GraphQL requests.
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: bigbluebutton
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: '/bigbluebutton/api/graphql'
        cs-uri-query|contains: 'chatSendMessageReaction'
        cs-uri-query|contains: 'reactionEmojiId'
    condition: selection
    filter:
        cs-uri-query|re: 'reactionEmojiId.{0,100}[A-Za-z0-9]{1,50}'  # Normal length
    condition: selection and not filter
falsepositives:
    - Legitimate use of long custom emoji IDs (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-61602 BigBlueButton Chat DoS Attempt"; flow:to_server; content:"POST"; http_method; content:"/bigbluebutton/api/graphql"; http_uri; content:"chatSendMessageReaction"; http_client_body; content:"reactionEmojiId"; http_client_body; pcre:"/reactionEmojiId.{0,100}[A-Za-z0-9]{100,}/Ri"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Remediation:

  • Upgrade: The only complete fix is to upgrade to BigBlueButton version 3.0.13 or later. This is the official patch provided by the vendor.

Mitigation (if patching is delayed):

  • WAF Rule: Implement a Web Application Firewall rule to block GraphQL requests where the reactionEmojiId parameter exceeds 50 characters or contains non-emoji characters.
  • Input Validation: If you have access to the source code, apply the patch manually by adding input validation to the chatSendMessageReaction resolver.
  • Network Segmentation: Restrict access to the GraphQL endpoint to only trusted IP addresses or VPN users.
  • Monitoring: Enable detailed logging for GraphQL requests and set up alerts for anomalies.

Long-Term Prevention:

  • Secure Coding Practices: Implement strict input validation for all user-supplied data, especially in GraphQL mutations.
  • Regular Updates: Keep BigBlueButton and all dependencies up to date.
  • Security Audits: Conduct regular security audits and penetration testing.

Valters IT
DevSecOps & Cyber Threat Intelligence Expert

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-61602/ · 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.