-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
.NET runtime (on Linux) crashes with SIGABRT when using OpenSSL 3 with deprecated APIs disabled #79153
Comments
Tagging subscribers to this area: @dotnet/area-system-security, @vcsjones Issue DetailsDescriptionWhen using an OpenSSL 3 version of libssl compiled with Reproduction StepsRun any .NET application on a system where an OpenSSL 3 version of libssl compiled with Expected behaviorThe .NET runtime already searches for all the ABI versions of libssl until it finds one that works. Either, the runtime should handle the missing symbol error, and continue the search for another version of libssl (e.g. libssl.so.1.1), or it should be changed not to depend on the deprecated symbol at all. The process should not crash. Actual behaviorThe process crashes:
Regression?Probably not a regression (not sure). Known WorkaroundsOnly known workaround is to either remove OpenSSL 3, so the ABI search continues and falls back to libssl.so.1.1, or use a version of OpenSSL 3 that includes deprecated APIs. None of those solutions are really acceptable workarounds. ConfigurationReproduced with:
Other informationNo response
|
The work to move to OpenSSL 3.0 APIs is being tracked in #46526.
All distributions that I am aware of compile with deprecated APIs. Is there a distro that is shipping with |
@vcsjones we compile OpenSSL ourselves as part of our own Debian-based distro with high security requirements. |
Your only two options right now are:
Finishing off the move to avoid now-deprecated API is almost certainly not going to be simple enough to patch on existing releases, so the earliest that this would be remedied for you is .NET 8. |
@bartonjs thank you for the swift answer! 🙂 I did not know about the CLR_OPENSSL_VERSION_OVERRIDE environment variable, so that is valuable info |
With the guidance provided above, I'm closing this as a duplicate of #46526, which isn't going to get closed out during .NET 8. |
Description
When using an OpenSSL 3 version of libssl compiled with
--api=3.0 no-deprecated
, the .NET runtime makes the process abort (SIGABRT) with the errorCannot get required symbol d2i_RSAPublicKey from libssl
. Thed2i_RSAPublicKey
function is deprecated in OpenSSL 3, and should not be used.Reproduction Steps
Run any .NET application on a system where an OpenSSL 3 version of libssl compiled with
--api=3.0 no-deprecated
is present.Expected behavior
The .NET runtime already searches for all the ABI versions of libssl until it finds one that works. Either, the runtime should handle the missing symbol error, and continue the search for another version of libssl (e.g. libssl.so.1.1), or it should be changed not to depend on the deprecated symbol at all. The process should not crash.
Actual behavior
The process crashes:
Regression?
Probably not a regression (not sure).
Known Workarounds
Only known workaround is to either remove OpenSSL 3, so the ABI search continues and falls back to libssl.so.1.1, or use a version of OpenSSL 3 that includes deprecated APIs. None of those solutions are really acceptable workarounds.
Configuration
Reproduced with:
Other information
No response
The text was updated successfully, but these errors were encountered: