Impact
A path-validation flaw in Erlang/OTP's public_key application allows a non-CA certificate to be accepted as an intermediate issuer. Any party that holds an end-entity certificate with basicConstraints cA:false and no keyUsage extension, issued by a CA in the victim's trust store, can use that certificate's private key to forge leaf certificates for arbitrary identities, and public_key:pkix_path_validation/3 will accept the chain.
Possession of any end-entity certificate, issued by any CA in the victim's trust store, where basicConstraints cA:false and the keyUsage extension is absent. Such certificates are common in internal or enterprise PKIs, IoT fleets, and minimal ACME-style profiles. Public CAs that always emit a keyUsage extension excluding keyCertSign (e.g., Let's Encrypt) do not provide a usable starter cert.
Any application using public_key:pkix_path_validation/3 directly, or the ssl application are affected.
Workarounds
The 'ssl' or 'public_key' 'verify_fun' option can be used ensure that the path validation will fail the chain asserting the
"basicConstraints" - extension being true for all intermediate certificates.
Affected/Unaffected Versions
A version larger than or equal to one of the listed patched versions is unaffected; otherwise, a version that satisfies an expression listed under affected versions is affected, and if it does not, it is unaffected.
The documentation of the new OTP version scheme describes how versions should be compared. Note that versions used prior to OTP 17.0, when the new OTP version scheme was introduced, are never listed since it is not well defined how to compare those versions.
In the case of this vulnerability, it is known to introduced in version R13B03.
Impact
A path-validation flaw in Erlang/OTP's
public_keyapplication allows a non-CA certificate to be accepted as an intermediate issuer. Any party that holds an end-entity certificate withbasicConstraints cA:falseand nokeyUsageextension, issued by a CA in the victim's trust store, can use that certificate's private key to forge leaf certificates for arbitrary identities, andpublic_key:pkix_path_validation/3will accept the chain.Possession of any end-entity certificate, issued by any CA in the victim's trust store, where
basicConstraints cA:falseand thekeyUsageextension is absent. Such certificates are common in internal or enterprise PKIs, IoT fleets, and minimal ACME-style profiles. Public CAs that always emit akeyUsageextension excludingkeyCertSign(e.g., Let's Encrypt) do not provide a usable starter cert.Any application using
public_key:pkix_path_validation/3directly, or the ssl application are affected.Workarounds
The 'ssl' or 'public_key' 'verify_fun' option can be used ensure that the path validation will fail the chain asserting the
"basicConstraints" - extension being true for all intermediate certificates.
Affected/Unaffected Versions
A version larger than or equal to one of the listed patched versions is unaffected; otherwise, a version that satisfies an expression listed under affected versions is affected, and if it does not, it is unaffected.
The documentation of the new OTP version scheme describes how versions should be compared. Note that versions used prior to OTP 17.0, when the new OTP version scheme was introduced, are never listed since it is not well defined how to compare those versions.
In the case of this vulnerability, it is known to introduced in version R13B03.