-
Notifications
You must be signed in to change notification settings - Fork 2k
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
OpenSSL issue: "unsafe legacy renegotiation disabled" #4543
Comments
Thanks, @RobertKlohr we're taking a look |
Alright, so after investigation this is related to an upgrade of Electron that we did to support Apple Silicon (M1), among other benefits. It looks like the way this uses curl on Windows, which in turn uses OpenSSL 3.0.0. From what we can tell, there would be two options that could potentially address this:
So, unfortunately, it looks like there's nothing we can really do about this right now. This issue stems from quite old vulnerabilities in SSL renegotiation. Our understanding is that if more modern servers are used, this issue shouldn't get hit. @RobertKlohr can you confirm if you're constrained by needing to support really old clients or for some other reason cannot update your server side? Or maybe you don't control the servers? |
@wdawson I do not control the servers but I will be opening a bug with the server operators to address this on their end. I don't have the expertise in building applications with dependent libraries, but in my limited research, it seems that there are options in OpenSSL that allow you to support insecure SSL renegotiation on legacy systems. I just don't have any idea if, or where these can be applied as they relate to Insomnia. Is this something that must be done inside Insomnia because the OpenSSL libraries are in the build, or could users edit a configuration or system variable to override the new OpenSSL defaults on their systems separate from the Insomnia client. For those with OpenSSL knowledge, any help here would be appreciated. |
There must be a way to fix it without forking OpenSSL, that's a weird conclusion to leap to. Surely there's a way to change the way libcurl is used, if not in Insomnia then at the very least in Electron. Insomnia was nice while it lasted, but it's unusable if there isn't a way to ignore the SSL errors. |
I've gone through the various |
More specifically, it is likely curl that we would have to fork. OpenSSL does provide a configuration option,
Of course, it's never our intent to break existing setups outside of planned deprecation; in this case, it merely happened as a result of updating some of our dependencies. This is unfortunate and certainly not ideal. However, it does seem that in the longer term, the TLS ecosystem is moving away from tolerating this insecure configuration. This is not without cause, of course, as many old TLS client and server configurations are rejected by modern TLS libraries. After all, the CVE associated with this now-default flag is from 2009 (CVE-2009-3555). As time goes on, as OpenSSL 3.0 makes it into more software, and as other TLS libraries eventually follow suit, it seems likely that this server configuration will continue to lose support in more applications. The majority of servers will not have any issues since OpenSSL introduced support for TLS Renegotiation Extension in 0.9.8l, released in 2009, along with other TLS implementations. It is very likely that any server you are connecting to does have support for RFC 5746 and it is, for one reason or another, explicitly disabled. Therefore, even if we are able to release a workaround, it is still highly recommended to escalate this issue on the end of the server operators, as it is unlikely to go away any time soon. |
In a coroprate environment this is a little bit of an issue, especially since the default option for NetScaler is on deny all reneg (should be on deny-insecure in my opinion?). Can be worked around, but it probably will lead to issues for a few corporate users. Just to let people know, it's a NetScaler option you've to turn and probably not actually the web server behind that. Setting NetScaler from deny-all-reneg to deny-insecure actually makes it work again (at least in our test environment). |
I am getting the same issue since version 2022.2.0. How do I revert to a previous version, because now Insomnia is completely unusable on all destination APIs. |
Resolved by reverting to 2021.7.2 |
In case others are interested Insomnia's website links to GitHub for downloading older releases -- Kong GitHub Insomnia releases. As mentioned by @kevrl you can get past the issue by downgrading to 2021.7.2. That worked for me. |
We've got a workaround for the issue in the works over at #4659. It took a bit longer than we were hoping due to some complexity with OpenSSL linking with node-libcurl, but we hope to ship it in a beta in the near future. Because I did not have a server setup that reproduced this issue readily available, I reproduced the issue using a modified version of the Go TLS stack. We're relatively sure that this should fix the issue, but obviously it's impossible to know for sure before it's released and working for everyone. I'll try to remember to update this thread when we ship a beta release containing the patch. |
I was hitting this issue with some AWS ALB enpoints. Can confirm that the issue is fixed for me in Insomnia 2022.3.0-beta.3. Thanks for the workaround. I appreciate the quick diagnosis as well. |
@johnwchadwick, I am really impressed that you were able to figure out a workaround so quickly, I know this must not have been easy, thanks!. This should buy us a bit of time as it relates to any API endpoints where this is an issue. That said we should all be testing and contacting any endpoint owners where this is happening and get them to to fix their configurations. For those reading this thread I wanted to add that based of the information @STiAT posted, I contacted the owners of the 3 endpoints where I had an issue, I know it is a small data set, but 100% of of the issues were due to ether a firewall or load balancer that was in front of the API endpoint and not the actual API endpoint servers. In all cases it was a configuration change that after being reviewed and going through the necessary change control was approved to be changed. I even go a big "Thank you" from one of the vendors for finding and passing this information along so they could fix it. |
@johnwchadwick I also confirm that 2022.3.0-beta.3 fixed this issue. Is the intent to provide a setting in the configuration to toggle the workaround? That capability would be helpful in the same way we can currently toggle the "Validate certificates during authentication" setting e.g., we can test when a server is configured correctly and bypass any configuration issues as necessary in legacy or development environments. |
@RobertKlohr
(And perhaps a bit of laziness. It would've taken longer to add a configuration option and plumb it through. But, that's not really a big deal.) If we do add a toggle to do this, it will likely be off by default for now. We never intentionally included it in a build, after all; it came from a series of innocent-looking updates. What I'd really like is if we could get a warning so that we could warn users it will break by default in a future version. That would've been ideal in the first place, had we known it was going to happen... |
Hello,
Note that UnsafeLegacyRenegotiation is a workaround, and should not be deployed to a production environment. |
Just wanted to say thanks! This was exactly the issue from one of our providers. We upgraded our software doing API calls, that would then start renegotiating handshakes, and thus was blocked. Being able to pinpoint this potential issue made them able to solve it and update their settings very fast. |
Thanks for the work that you do keeping insomnia working. I've read through this thread a few times and tried to figure out exactly what the applied fix was but I'm struggling. The reason that I'm trying to understand this is that we have another third party software product that is experiencing the same issue. We have NetScaler LB set to deny all renegotiation and when tested with latest insomnia all works fine. When we installed the older versions we were able to reproduce the "unsafe legacy renegotiation disabled" message. So whatever change was made to insomnia has allowed it to operate with NetScaler devices that are configured to deny-all-reneg but all the discussion is about working with devices that are not up to date for secure negotiation so I'm struggling to create a picture that I can present to the third party to resolve the issue with their product. Is anyone able to comment on how the changes allow insomnia to connect to devices that have deny-all-reneg set? |
@discaddict this occurs because Here they appear to have forked node-libcurl and enabled |
@jcracknell thank you so much for that. Super helpful. |
It looks like only enabling the first one was strictly necessary (and safer): |
Expected Behavior
Authenticate to API endpoint.
Timeline
Actual Behavior
Timeline
Reproduction Steps
No response
Is there an existing issue for this?
Additional Information
After upgrading to version 2022.1.0 Insomnia fails to connect. If I roll back to Insomnia version 2021.7.2 it works. The problem is most likely in openssl that was update to OpenSSL/3.0.0 in the 2022.1.0 build. None of the preference settings in the client override the new default OpenSSL behavior.
Insomnia Version
2022.1.0
What operating system are you using?
Windows
Operating System Version
Windows 10 Enterprise 19043.1526
Installation method
The original install is in the appdata directory, the upgrade to version 2022.1.0 was automatic
Last Known Working Insomnia version
2021.7.2
The text was updated successfully, but these errors were encountered: