Severity by source
AV:L/AC:H/PR:H/UI:N/S:U/C:L/I:N/A:N
Local attack vector and high privileges required because the flaw is triggered by operator-level configuration; high complexity because exploiting the weaker padding requires oracle access and cryptographic sophistication; low confidentiality only, as only encrypted config secrets are at risk.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
Steeltoe is an open source project that provides a collection of libraries that helps users build cloud-native applications. In Steeltoe.Configuration.Encryption 4.0.0 through 4.1.0, configuring encrypt:rsa:algorithm=OAEP does not enable OAEP encryption. Due to an incorrect BouncyCastle transformation string, the OAEP setting selects PKCS#1 v1.5, which is the same algorithm as the DEFAULT setting. Steeltoe.Configuration.Encryption version 4.2.0 patches the issue.
AnalysisAI
Steeltoe.Configuration.Encryption 4.0.0 through 4.1.0 silently downgrades RSA encryption from OAEP to PKCS#1 v1.5 when operators explicitly configure encrypt:rsa:algorithm=OAEP. The root cause is an incorrect BouncyCastle transformation string in RsaKeyStoreDecryptor.cs - the OAEP branch passed "RSA/ECB/PKCS1" to CipherUtilities.GetCipher() instead of the correct "RSA/NONE/OAEPWithSHA1AndMGF1Padding", meaning both the OAEP and DEFAULT settings silently selected the same weaker algorithm. No public exploit is identified at time of analysis, and CVSS scores this at 1.9 (Low) given the high-privilege local attack vector; however, the security consequence is a cryptographic guarantee failure that exposes encrypted configuration secrets to Bleichenbacher-class padding oracle attacks that OAEP was chosen to prevent.
Technical ContextAI
Steeltoe is a .NET open-source library suite for building cloud-native applications, and its Steeltoe.Configuration.Encryption component integrates with Spring Cloud Config Server to decrypt RSA-encrypted configuration values at runtime using BouncyCastle (via CipherUtilities.GetCipher()). The affected code path is RsaKeyStoreDecryptor.cs, specifically the CreateCipher() switch that maps algorithm names to BouncyCastle transformation strings. The incorrect mapping "OAEP" => CipherUtilities.GetCipher("RSA/ECB/PKCS1") caused the library to use PKCS#1 v1.5 padding regardless of operator intent. PKCS#1 v1.5 RSA encryption is known to be vulnerable to Bleichenbacher adaptive chosen-ciphertext attacks (padding oracle attacks), while OAEP (Optimal Asymmetric Encryption Padding) was designed specifically to resist them. CWE-256 is assigned, though CWE-327 (Use of a Broken or Risky Cryptographic Algorithm) more precisely characterizes the defect - the issue is not password storage in plaintext, but an unintended algorithm substitution. The CPE string cpe:2.3:a:steeltoeoss:steeltoe.configuration.encryption:*:*:*:*:*:*:*:* covers the affected library.
RemediationAI
Upgrade to Steeltoe.Configuration.Encryption version 4.2.0, which corrects the BouncyCastle transformation string from "RSA/ECB/PKCS1" to "RSA/NONE/OAEPWithSHA1AndMGF1Padding" for the OAEP algorithm path, as confirmed in commit 6cfee5cccddf8f9a31de69b0ca5ccdd771b73e5b (https://github.com/SteeltoeOSS/Steeltoe/commit/6cfee5cccddf8f9a31de69b0ca5ccdd771b73e5b). After upgrading, any configuration values that were encrypted using the OAEP setting on the affected versions were actually encrypted with PKCS#1 v1.5; those ciphertexts will remain decryptable by the patched library since it still supports PKCS#1 v1.5 for the DEFAULT algorithm, but operators who care about OAEP guarantees should re-encrypt their secrets using a correctly functioning OAEP-capable Config Server after upgrading. There is no meaningful workaround short of upgrading: removing the encrypt:rsa:algorithm=OAEP setting does not change behavior (both paths were identical), and disabling config-server encryption entirely would expose secrets in plaintext. See the GitHub advisory at https://github.com/SteeltoeOSS/security-advisories/security/advisories/GHSA-4j9m-h44m-2hv8 for further detail.
Same weakness CWE-256 – Plaintext Storage of a Password
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-37821
GHSA-4j9m-h44m-2hv8