| Patch Package | OTP 27.3.4.10 |
| Git Tag | OTP-27.3.4.10 |
| Date | 2026-04-07 |
| Issue Id | |
| System | OTP |
| Release | 27 |
| Application | |
| Potential Incompatibilities |
Potential Incompatibilities #
- OTP-20064
-
- Application(s):
- ssl
- Related Id(s):
When OCSP stapling is enabled via the {stapling, staple} or {stapling, #{…}} options, the handshake now fails if the server does not provide an OCSP stapled response.
Previously, a missing OCSP staple was silently accepted (soft-fail). Since Erlang/OTP only supports OCSP via stapling with no fallback to direct OCSP queries or CRL checking, soft-fail meant no revocation check at all.
Applications that need the previous soft-fail behavior can use a custom verify_fun that accepts {bad_cert, missing_ocsp_staple}.
compiler-8.6.1.4 #
The compiler-8.6.1.4 application can be applied independently of other applications on a full OTP 27 installation.
- OTP-19506
-
The type inference for
maps:from_list/1was incorrect: when the provided list was statically known to be bogus when non-empty (e.g. a list of atoms), the compiler assumed it would also fail when the list was empty. - OTP-19931
-
Fixed a bug in the type analysis pass that could erroneously eliminate code blocks.
- OTP-20065
-
A binary as the value of a
-moduledoc()attribute would be silently ignored.
Full runtime dependencies of compiler-8.6.1.4
crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
crypto-5.5.3.2 #
The crypto-5.5.3.2 application can be applied independently of other applications on a full OTP 27 installation.
- OTP-20041
-
- Related Id(s):
Fixed bug that could cause runtime crash after ~2 billion calls to
crypto:mac_initdue to a double EVP_MAC_free.
Full runtime dependencies of crypto-5.5.3.2
erts-9.0, kernel-5.3, stdlib-3.9
erts-15.2.7.7 #
The erts-15.2.7.7 application can be applied independently of other applications on a full OTP 27 installation.
- OTP-19889
-
Fixed a JIT bug that miscompiled expressions like
X * X + X * X. - OTP-20027
-
- Related Id(s):
Fixed bug on windows that made tools dialyzer, erlc and typer unusable in powershell or cmd.exe, when there are spaces in the installation path.
Full runtime dependencies of erts-15.2.7.7
kernel-9.0, sasl-3.3, stdlib-4.1
inets-9.3.2.4 #
The inets-9.3.2.4 application can be applied independently of other applications on a full OTP 27 installation.
- OTP-20068
-
Fixed authentication bypass in
httpdwhenscript_aliasmaps a URL to a directory outsidedocument_rootwithmod_authdirectory-based access controls. Themod_alias:which_alias/1function now includesscript_aliasentries so authorization is evaluated against the correct path before CGI execution. CVE-2026-28808.
Full runtime dependencies of inets-9.3.2.4
erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, stdlib-5.0, stdlib-6.0
kernel-10.2.7.4 #
Note! The kernel-10.2.7.4 application cannot be applied independently of other applications on an arbitrary OTP 27 installation.
On a full OTP 27 installation, also the following runtime
dependency has to be satisfied:
-- erts-15.2.5 (first satisfied in OTP 27.3.2)
- OTP-20037
-
- Related Id(s):
Before this patch, the Erlang/OTP built-in DNS resolver (
inet_res) used a sequential, process-global 16-bit transaction ID for UDP queries and did not implement source port randomization. Response validation relied almost entirely on this ID. Together, this made DNS cache poisoning practical for an attacker who can observe one query or predict the next ID. The design conflicted with RFC 5452 recommendations for mitigating forged DNS answers.inet_resis intended for use in trusted network environments and with trusted recursive resolvers. Earlier documentation did not clearly state this deployment assumption, which could lead users to deploy the resolver in environments where faked DNS responses are possible.Therefore, the documentation is been updated to clarify that
inet_resshould only be used in trusted networks and with trusted recursive resolvers.The implementation is also improved to use strong random DNS transaction IDs and source ports for every DNS transaction. This should give ample protection against brute forcing fake DNS replies, known as DNS cache poisoning, but it still does not protect against, for example, an adversary in the path of the DNS transaction that can observe the random values before faking malicious replies, an attack known as DNS spoofing.
For randomization to happen, the Crypto application has to be loaded, which most probably already should be the case for an Erlang node in an exposed network.
If performance should become an issue, for applications within safe network environments, the previous light weight behaviour can be configured by setting the resolver option
randomtofalse.
Full runtime dependencies of kernel-10.2.7.4
crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0
public_key-1.17.1.2 #
The public_key-1.17.1.2 application can be applied independently of other applications on a full OTP 27 installation.
- OTP-20042
-
- Related Id(s):
OCSP designated responder certificate verification now checks the CA’s cryptographic signature on the responder certificate. Previously, only the issuer DN match and id-kp-OCSPSigning EKU were verified, which meant a forged self-signed certificate with the CA’s subject DN would be accepted as a valid designated responder (Case 2 in RFC 6960 §4.2.2.2).
Full runtime dependencies of public_key-1.17.1.2
asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0
sasl-4.2.2.1 #
The sasl-4.2.2.1 application can be applied independently of other applications on a full OTP 27 installation.
- OTP-20053
-
- Related Id(s):
Fixed the typespec of release_handler:eval_appup_script/4.
Full runtime dependencies of sasl-4.2.2.1
erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14
ssl-11.2.12.7 #
Note! The ssl-11.2.12.7 application cannot be applied independently of other applications on an arbitrary OTP 27 installation.
On a full OTP 27 installation, also the following runtime
dependency has to be satisfied:
-- public_key-1.17.1.2 (first satisfied in OTP 27.3.4.10)
- OTP-20064
-
- POTENTIAL INCOMPATIBILITY
When OCSP stapling is enabled via the {stapling, staple} or {stapling, #{…}} options, the handshake now fails if the server does not provide an OCSP stapled response.
Previously, a missing OCSP staple was silently accepted (soft-fail). Since Erlang/OTP only supports OCSP via stapling with no fallback to direct OCSP queries or CRL checking, soft-fail meant no revocation check at all.
Applications that need the previous soft-fail behavior can use a custom verify_fun that accepts {bad_cert, missing_ocsp_staple}.
Full runtime dependencies of ssl-11.2.12.7
crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.17.1.2, runtime_tools-1.15.1, stdlib-6.0
Thanks To #
William Yang