Skip to main content

Steeltoe Consul Discovery CVE-2026-81516

| EUVDEUVD-2026-81900 HIGH
Improper Handling of Exceptional Conditions (CWE-755)
2026-09-17 GitHub_M GHSA-67c9-f6v2-qv86
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain Consul service-registration access
  2. Delivery
    Register service with non-boolean 'secure' metadata
  3. Exploit
    bool.Parse throws during instance construction
  4. Execution
    GetAllInstancesAsync aborts enumeration
  5. Impact
    Service discovery outage across all services

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling procedures
Exploitation Conditions

Requires the attacker to be able to register a service in the Consul catalog used by the target - i.e. Consul catalog write access via a valid ACL token, or a Consul deployment running without ACLs. The application must use Steeltoe ConsulDiscoveryClient in an affected version (4.0.0 through 4.2.x). The attacker registers a service whose 'secure' metadata contains any string other than 'true'/'false' (e.g. 'yes', '1', ''); the malformed value throws during ConsulServiceInstance construction and aborts GetAllInstancesAsync. Limiting factors: exploitation is gated on Consul registration privilege (no anonymous internet path unless Consul is exposed and ACL-less), no user interaction is needed, and the outage persists only until the offending registration is removed - no permanent state corruption.

Impact

This is a genuine but bounded availability issue, not a high-CVSS paper tiger and not a top-tier emergency. The vendor CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H = 7.5) captures a pure denial-of-service: a malformed Consul 'secure' metadata value ('yes', '1', empty, etc.) triggers an unhandled exception in bool.Parse that aborts construction of the entire instance list, making one or all services undiscoverable. The commit diff (bool.Parse → bool.TryParse) independently confirms the root cause (CWE-755 unhandled exception), so the technical claim is solid. The key point of contention is PR:N: the description explicitly requires 'a principal that can register a Consul service,' meaning the attacker must already hold Consul catalog write access (an ACL token, or an ACL-less/open Consul). That is a real privilege prerequisite, so I assess PR:L rather than PR:N, lowering my score to ~6.5. There is no EPSS score, no CISA KEV listing, and no public POC provided - no public exploit identified at time of analysis. Impact is confidentiality/integrity neutral (C:N/I:N); the worst case is a persistent service-discovery outage until the offending registration is removed. Net: a legitimate priority for teams running Steeltoe Consul discovery with shared/multi-tenant Consul, but low urgency where Consul registration is tightly controlled.

Exploit ScenarioDerived

An insider or compromised workload that can register services in the shared Consul catalog registers a service whose 'secure' metadata is a non-boolean string such as 'yes'. When a Steeltoe (4.0.0-4.2.x) application calls GetAllInstancesAsync, bool.Parse throws and aborts enumeration, knocking every service out of discovery until the bad registration is deleted. No public exploit code was provided, but the trigger is trivial and reliably reproducible.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 17, 2026

Consul service discovery in Steeltoe 4.0.0 through 4.2.x can be rendered persistently unusable by a single malformed service registration, because ConsulServiceInstance parses the registration's 'secure' metadata with a strict Boolean conversion that throws on any value other than 'true' or 'false'. A principal able to write to the Consul catalog - i.e. holding a valid ACL token with service-registration rights, or reaching a Consul deployment that runs without ACLs - can register a service whose 'secure' metadata is set to a value such as 'yes', '1' or an empty string; the resulting exception aborts construction of the instance list, and because GetAllInstancesAsync throws on the first bad entry, enumeration of every discovered service fails, taking the target (or the entire discovery surface) offline until the offending registration is removed. The assessed vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H (the advisory's vector differs only in reporting PR:N instead of PR:L), and while no public exploit code has been identified at time of analysis, no CISA KEV entry exists, and no EPSS score was supplied, the impact is low-complexity and requires no user interaction, so Consul catalog write access should be treated as a denial-of-service primitive.

RemediationAI

Upgrade to Steeltoe 4.3.0 or later - the vendor-released patch that replaces bool.Parse with bool.TryParse in ConsulServiceInstance and stops a single malformed registration from aborting the instance list - as documented in the GitHub security advisory GHSA-67c9-f6v2-qv86 (https://github.com/SteeltoeOSS/security-advisories/security/advisories/GHSA-67c9-f6v2-qv86) and shipped in https://github.com/SteeltoeOSS/Steeltoe/releases/tag/4.3.0. Because the bug has no clean configuration-level fix in affected versions, interim mitigations must reduce who can poison the catalog: enforce Consul ACLs and issue discovery clients and service registrants narrowly scoped tokens so that arbitrary parties cannot register services (trade-off: ACL bootstrap and token distribution across existing clusters, plus re-issuance on rotation), and restrict network access to the Consul HTTP API (default 8500) and RPC port (8300) with firewall or service-mesh policy so that ACL-less clusters are never reachable from untrusted networks (trade-off: may break legitimate cross-network agents and tooling). Operationally, add monitoring or a startup reconciliation job that scans registrations for a 'secure' metadata value other than 'true'/'false' and deregisters the offending service, since deleting the malformed registration is what restores discovery; also add per-registration error isolation or a circuit breaker around GetAllInstancesAsync in custom code where an immediate upgrade is not possible, accepting that this is a code change rather than a configuration toggle. Finally, treat Consul catalog write access as a privileged role in threat models and audit registrations after any suspected poisoning, because the outage persists for as long as the bad entry remains in the catalog.

Affected VersionsENISA

security-advisories 4.0.0, < 4.3.0

Affected Packages

nuget steeltoe.discovery.consul fix: 4.3.0
euvd security_advisories_4_0_0 fix: 4.3.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in nuget, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Steeltoe is an open-source .NET library suite for building cloud-native applications; its Consul discovery client consumes Consul's catalog/service-registration API and materializes ServiceEntry records into internal ConsulServiceInstance objects. In affected builds the constructor reads the optional 'secure' key from a registration's metadata dictionary and evaluates it with bool.Parse, which throws a FormatException for any token that is not exactly 'true' or 'false' (case-insensitive), rather than degrading gracefully. The upstream fix (commit 028569c4f4f0e9e393e3c22a4fa5d07987dd8673, in ConsulServiceInstance.cs) replaces that with bool.TryParse, so an unrecognized value simply yields IsSecure=false instead of an exception. The root cause class is CWE-755 (Improper Handling of Exceptional Conditions): a non-authoritative, attacker-influenced metadata field is parsed without a non-throwing path, and there is no per-registration error isolation, so one poisoned entry violates the invariant that discovery returns a complete list. The failure is amplified by GetAllInstancesAsync, which iterates the whole service set in one pass - an unhandled exception on a single instance terminates enumeration for every service, not just the targeted one. The supplied CPE (cpe:2.3:a:steeltoeoss:security-advisories:*:*:*:*:*:*:*:*) is the advisory repository rather than a versioned product identifier, so the authoritative affected range comes from the advisory text and release tags: 4.0.0 up to, but not including, 4.3.0. Note also that the attached tags ('Information Disclosure', 'Security Advisories') do not match the actual weakness, which is availability-only with no confidentiality or integrity impact per the assessed vector.

Know when Security Advisories gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 6.5 MEDIUM

Attacker must hold Consul service-registration rights, so PR:L; trigger is trivial (AC:L, network) and impact is availability-only (C:N/I:N/A:H) with no scope change.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Sep 17, 2026 - 17:19 EUVD
CVE Published
Sep 17, 2026 - 15:38 cve.org
HIGH 7.5

DescriptionCVE.org

Steeltoe is an open source project that provides a collection of libraries that helps users build cloud-native applications. From 4.0.0 until 4.3.0, ConsulDiscoveryClient constructs ConsulServiceInstance objects by parsing each registration's secure metadata with a strict Boolean conversion. A principal that can register a Consul service can supply a secure value other than true or false, causing the exception from one instance to abort construction of the entire instance list and make the targeted service undiscoverable. When GetAllInstancesAsync enumerates all services, one malformed instance can abort enumeration across every service. The outage persists until the offending registration is removed. This issue is fixed in version 4.3.0.

Technical POC Analysis

CWE-755 (Improper Handling of Exceptional Conditions), in the NuGet package Steeltoe.Discovery.Consul (.NET).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Steeltoe's Consul service discovery (versions 4.0.0 through 4.2.x) can be persistently disabled by a single malformed service registration, causing applications that rely on Consul to locate services to lose discovery and potentially suffer widespread availability failures. No vendor-released patch identified at time of analysis, and recovery depends on finding and removing the offending catalog entry. Leadership should prioritize restricting Consul catalog write access and monitoring for malformed registrations to prevent cascading outages.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: enforce Consul ACLs and least-privilege service-registration tokens; remove or correct any catalog entry with 'secure' metadata not exactly 'true' or 'false'; monitor Consul catalog and Steeltoe discovery failures; restrict network access to Consul; and implement validation/admission controls for service registrations.

Threat Intelligence Overview

EPSS Score
0.3%
Top 73% exploitable
Prevalence
Low
niche .NET cloud-native library; Consul discovery module is a subset of users
Threat Intel
1
1 source
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2026-75523 MEDIUM POC
5.9 Sep 17

Information disclosure in Steeltoe's Management Endpoint actuator (Steeltoe.Management.Endpoint) prior to 4.3.0 allows a

CVE-2026-45284 HIGH
8.8 Jun 01

Authentication bypass in the Nextcloud user_oidc app (versions 1.3.6 up to but not including 8.4.0) lets users that were

CVE-2026-45545 HIGH
8.2 Jun 01

SQL injection in the Nextcloud Tables app allows authenticated users with access to the Tables feature to execute arbitr

CVE-2026-45156 HIGH
8.1 Jun 01

Authentication bypass in Nextcloud's User OIDC app (versions 0.3.0-3.0.x, 5.0.0-5.0.x, and 6.0.0-6.3.x) allows a malicio

CVE-2026-45281 HIGH
8.1 Jun 01

Improper authorization in the Nextcloud Server CalDAV backend allows an authenticated user who knows another user's prin

CVE-2026-81515 HIGH
7.5 Sep 17

Malformed service-registry records can blank out service discovery for Steeltoe-based cloud-native applications: EurekaD

CVE-2026-45722 HIGH
7.1 Jun 01

Blind SQL injection in the Nextcloud Tables app affects versions 0.9.0 through 0.9.6 and 1.0.0 through 1.0.1, allowing a

CVE-2026-45810 MEDIUM
6.8 Jun 01

Comment authorization bypass in Nextcloud Server 31.x and 32.x allows authenticated low-privilege users to read all file

CVE-2026-81868 MEDIUM
6.5 Sep 17

Authentication bypass in Steeltoe.Security.Authorization.Certificate (Steeltoe prior to 4.3.0) lets remote unauthenticat

CVE-2026-45279 MEDIUM
6.5 Jun 01

Path traversal in Nextcloud Server 31.x and 32.x allows authenticated non-admin users to copy arbitrary server-side file

CVE-2026-45282 MEDIUM
6.5 Jun 01

Nextcloud Server's link share attachment access bypasses password protection and download restrictions for authenticated

CVE-2026-45275 MEDIUM
6.5 Jun 01

Privilege escalation in the Nextcloud Approval app (prior to version 2.7.2) allows authenticated users who lack sharing

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy