CVE-2026-45271: picotls has infinite recursion in the minicrypto ASN.1 decoder
Picotls is a TLS protocol library that allows users select different crypto backends based on their use case. Picotls implements its own ASN.1 validation helper, which is used by the minicrypto backend while parsing local PKCS#8 private keys. Prior to commit c14231d801407640bc42c2dcf92783409ea6a7c7, the validator recursively descends into constructed ASN.1 elements without enforcing a maximum nesting depth. If an application loads an attacker-supplied private-key file through ptlsminicryptoloadprivatekey(), or otherwise calls the public ASN.1 validation API on untrusted DER, a crafted deeply nested ASN.1 structure can exhaust the process stack and crash the application. Note that the libcrypto (OpenSSL) backend does not use the ASN.1 validation helper of picotls, and therefore is immune to this vulnerability. The vulnerability has been addressed in commit c14231d801407640bc42c2dcf92783409ea6a7c7.
Affected Software
Event History
Frequently Asked Questions
Which deployments are exposed to this issue?
Applications using Picotls' minicrypto backend are exposed when they load attacker-supplied PKCS#8 private-key files with ptls_minicrypto_load_private_key(), or when they validate untrusted DER through the public ASN.1 validation API. Deployments using the libcrypto (OpenSSL) backend are not affected.
What does an attacker need to cause an impact?
An attacker needs to cause the application to parse a crafted, deeply nested ASN.1 structure from untrusted input. Exploitation exhausts the process stack and crashes the application; the stated impact is denial of service.
What should be done if an update cannot be applied immediately?
Do not pass attacker-controlled private-key files or untrusted DER data to the minicrypto private-key loader or public ASN.1 validation API. Where feasible, use the libcrypto (OpenSSL) backend, which does not use the affected Picotls ASN.1 validation helper.
How can I determine whether my code path is affected?
Review whether the application uses the minicrypto backend and calls ptls_minicrypto_load_private_key() on untrusted PKCS#8 input, or invokes Picotls' public ASN.1 validation API on untrusted DER. The issue is addressed by commit c14231d801407640bc42c2dcf92783409ea6a7c7.