-
Notifications
You must be signed in to change notification settings - Fork 982
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
Request for AnonDH option #507
Comments
Here's the VNC log with such an unsuccessful attempt:
|
Have you tried using X509vnc as the security type? |
Unfortunately, that security type is not available, neither with bVNC nor with bVNC Pro. :( |
I'm not sure exactly what you are asking for, isn't x11vnc's "-vencrypt nodh:only" equivalent to using -SecurityTypes X509vnc? Also, I don't know what encryption protocol you are expecting that will mitigate MITM attacks without the use of certificates. |
With "-vencrypt nodh:only", it allows bVNC to connect on newer Android devices with an option, that is called "Secure VNC with VeNCrypt". On Android devices below 6.0 (Marshmellow), this works nice since years. This option not the same as X509vnc, if I understand all this correctly, but gives reasonable security without big fuzz.
Unfortunately, X509 certificate based schemes are not supported from any of my typical VNC clients (krdc and bVNC). For various reasons, I much prefer TigerVNC over x11vnc (that I used for years). It excels in performance, is much better integrated in the Xorg environment, doesn't require fiddling with /etc/X11/xdm/Xsetup and kdm config in order to support the display manager properly, and handles shared mode much more reliable... OTOH, TigerVNC does require a patch to /etc/xdg/kwinrc to force XRender mode for the compositor, and bails out on this issue. With this issue fixed, the advantages surpass the x11vnc approach by far. With time passing, more and more android devices will be locked out by it. Therefore, I kindly ask for such an option. If somebody with more insight in the VNC security schemes and types could advise me, I might be able to provide a SR. I've looked into both, x11vnc and TigerVNC, but the code bases deviate immensely in this respect. :( |
I've looked at the x11vnc code, and all
Have you verified which security type your client is actually using in both the old and new versions? In the snip that you sent, it's clear that the client requested the TLSvnc subtype:
This seems like a client-side bug to me. If the client doesn't support the anonymous TLS subtypes, then why is it requesting it? Please see the VeNCrypt protocol specification for more info on how the subtype is negotiated. |
Hi Brian, Iordan bases his TLS processing on Android infrastructure, and if I read the supported cipher suite table correctly, the anon variants are available for SSLv3 only, but not for any TLS protocol. The relevant code of bVNC is here. Could this indeed be the problem? Questions arise, how anonymous TLS variants are supposed to work at all then with Android, which ones are typically supported in VeNCrypt, and/or is Google overshooting the target (once again). 👎 TigerVNC seems to support the anonymous ECDH variants as well, which shouldn't be that bad... Cheers, |
It's not an issue with the bVNC code. The Android API appears to have removed support for all of the DH_anon ciphers as of API level 23. The VeNCrypt TLS* subtypes are, by definition, anonymous TLS (see section 6.2.19.257 of the aforementioned VeNCrypt spec). The bVNC client leverages the Android API in much the same way that our java client does with the JRE. If Oracle or OpenJDK decided to remove support for those ciphers then we would be in the same position. I don't have much experience with Android, but in the case of Java it would be possible to implement a custom security provider instead of relying on what's provided by the JSSE (Bouncy Castle, for example). The bVNC home page seems to indicate that the VeNCrypt X509 subtypes are supported, as a short-term solution I would suggest trying those. Generating certificates isn't really that much work and it would be more secure. |
I agree with @bphinz. There doesn't seem to be an issue here. What you are asking for already exists. Just replace Anonymous TLS isn't a very good idea to begin with, so I can't really blame Google for removing it. |
Hi @CendioOssman, I checked your suggestion, and indeed, it fixed the problem with bVNC. Unfortunately, I'm locked out with my primary VNC client with such a setup, that I use about a dozen times on every day: krdc 😞 Not sure, if I like my current opportunities, as it basically renders TigerVNC unusable for me, which is a pity, since it does another couple of things much better than x11vnc. I've tried to combine my necessary security types: |
I'm afraid you'll have to report those bugs to them in that case. We can't really break our stuff just because of other buggy clients. |
@frispete, I believe all you'd need to do to make my client (bVNC) work with the TigerVNC settings: Option "SecurityTypes" "TLSVnc,X509Vnc" on Android 6.0+ devices is to change your "Connection Type" from Basic VNC to "Secure VNC over VeNCrypt". This should cause bVNC to force the use of X509Vnc over TLSVnc. Then, if my understanding is correct, your other client will work too. |
All VNC modes are supported with VNC over SSH. The modes that explicitly
say for example VeNCrypt, are there to force the usage of that encryption
rather than automatically selecting the fist supported one.
Thanks!
Iordan
…On Jan 17, 2018 5:02 PM, "Alain Kalker" ***@***.***> wrote:
@iiordanov <https://github.com/iiordanov> This may work for "Basic VNC",
but what about "Secure VNC over SSH"?
What if a user on the remote host runs x0vncserver and has a password
configured (to prevent other users on that same host from connecting
without a password)?
I.e. in bVNC there is no option "Secure VNC over SSH with VeNCrypt"... I
know it looks a bit paranoid, but whatever. better too much security than
too little.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#507 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABWyV2jwGVMWsyKOoRrIFcO6V4AjvtzUks5tLm3fgaJpZM4PK5xa>
.
|
@iiordanov Are you saying that using "VNC over SSH" should just work? Because I had it working between Android 9 and Ubuntu 18.10 with that setting, but when I did a new 20.10 install it refuses to connect because the key changed and (yech) wants me to recreate the connection. But when I do that I get this error. Of note, I'm using the "tigervnc-scraping-server" package because I'm actually running x0vncserver. When I try to use the "-vencrypt" option mentioned above I just get a usage message so that route isn't working for me either. It sounds like it should work, but after reading this entire thread it's unclear to me exactly what I need to do to make it work. |
The bottom line is that there are still Anonymous DH ciphers being offered up by the server with whatever auth mode your server ends up starting. The "-vencrypt" option you mention sounds like an x11vnc server option, not a tigervnc server option. I posted a thorough answer on the support forum for bVNC where I felt it may be read by more people: |
Hi,
I stumbled across this issue yesterday.
Setup: serving VNC though Xorg server module:
Reasoning: provide the most simple and flexible cryptographically secured VNC support.
Works for all interesting desktop clients, but Android bVNC with Android versions >= 6.0.
Solution: provide an option to NOT offer Diffie Hellman anonymous key exchange in TLS setup, e.g.
Option "AnonDH" "off"
, similar to the x11vnc option-vencrypt nodh:only
.The default of
TigerVNC
seems to be susceptible to MITM attacks, and therefore is not supported anymore on newer Android devices.Simply removing ":+ANON-ECDH:+ANON-DH" from kx_anon_priority seems not enough, I'm afraid.
Please consider such a change.
The text was updated successfully, but these errors were encountered: