Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain Consul service-registration access
-
DeliveryRegister service with non-boolean 'secure' metadata
-
Exploitbool.Parse throws during instance construction
-
ExecutionGetAllInstancesAsync aborts enumeration
-
ImpactService 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
More in Security Advisories
View allInformation disclosure in Steeltoe's Management Endpoint actuator (Steeltoe.Management.Endpoint) prior to 4.3.0 allows a
Authentication bypass in the Nextcloud user_oidc app (versions 1.3.6 up to but not including 8.4.0) lets users that were
SQL injection in the Nextcloud Tables app allows authenticated users with access to the Tables feature to execute arbitr
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
Improper authorization in the Nextcloud Server CalDAV backend allows an authenticated user who knows another user's prin
Malformed service-registry records can blank out service discovery for Steeltoe-based cloud-native applications: EurekaD
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
Comment authorization bypass in Nextcloud Server 31.x and 32.x allows authenticated low-privilege users to read all file
Authentication bypass in Steeltoe.Security.Authorization.Certificate (Steeltoe prior to 4.3.0) lets remote unauthenticat
Path traversal in Nextcloud Server 31.x and 32.x allows authenticated non-admin users to copy arbitrary server-side file
Nextcloud Server's link share attachment access bypasses password protection and download restrictions for authenticated
Privilege escalation in the Nextcloud Approval app (prior to version 2.7.2) allows authenticated users who lack sharing
EUVD-2026-81900
GHSA-67c9-f6v2-qv86
NVD
CVE.org
EPSS
Exploit-DB