Vulnerability scanners frequently flag CVE-2016-2183 — the SSL/TLS protocol information disclosure issue known as SWEET32 — on the 3389 port (RDP) of Windows servers. The root cause is that Windows enables a set of weak cipher suites by default: 3DES uses a 64-bit block, and once a long session accumulates enough traffic, a birthday attack can recover sensitive content, so the scanner raises the alarm.

This problem doesn’t need a patch: replace the SSL cipher suite order in Local Group Policy with a list that drops the weak entries, then reboot. This post follows the troubleshooting order — the symptom, the cause, the fix steps, and how to verify afterward.

Root Cause Analysis

CVE-2016-2183 targets 64-bit block ciphers like 3DES. In a TLS session, once the amount of data encrypted with the same key exceeds a certain fraction of the block space, an attacker can use collision analysis to guess fragments of the content — that’s where the SWEET32 attack got its name. RDP sessions stay connected for a long time with traffic steadily growing, which lands squarely in that scenario.

Windows’ TLS stack is provided uniformly by SChannel, and the default suite list includes 3DES entries like TLS_RSA_WITH_3DES_EDE_CBC_SHA — exactly what the scanner reports. So the fix is not a patch, but replacing that list with a version free of weak entries.

Steps

1. Open the Local Group Policy Editor

Press win+R, type gpedit.msc, and enter Local Computer Policy.

2. Navigate to the SSL Configuration Settings

Local Computer Policy → Computer Configuration → Administrative Templates → Network → SSL Configuration Settings.

3. Open the SSL Cipher Suite Order

Double-click “SSL Cipher Suite Order” and set the status to “Enabled”. Right after enabling, the text box contains the system’s default suite list — 35 suites in the order Windows considers safe — and the very last entry is TLS_RSA_WITH_3DES_EDE_CBC_SHA, the exact weak suite the scanner flags.

Figure

4. Replace the Cipher Suite Content

While the policy is enabled, replace the entire content of the cipher suite text box with the following string (34 suites in total, comma-separated):

1
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA

This list is simply the system’s default order with the trailing TLS_RSA_WITH_3DES_EDE_CBC_SHA removed. This step is where things most easily go wrong: some of the “fix lists” circulating online copy the system default order verbatim, all 35 suites, not one deleted — replace and rescan, and the vulnerability is still there. Before pasting, confirm the whole string contains no 3DES entry, and no line breaks or trailing comma.

5. Reboot the Computer

The policy takes effect after reboot. In production, weigh the reboot risk carefully and work within a maintenance window.

Verifying the Fix

After the reboot, confirm in two steps:

  1. Reopen the “SSL Cipher Suite Order” policy item: the status should be “Enabled”, and the text box content should match what you pasted;
  2. Re-run the vulnerability scan and confirm CVE-2016-2183 is no longer reported.

If you want to check yourself without waiting for the scanner, there are two routes.

The first checks from the outside: use nmap’s ssl-enum-ciphers script to list the suites 3389 actually negotiates; the output should contain no 3DES entries:

1
nmap --script ssl-enum-ciphers -p 3389 <server-IP>

Note: this command was not actually run (a Windows Group Policy environment cannot be containerized for verification); the source is nmap’s official script documentation; treat the output against your real environment.

The second checks on the box itself: on Windows Server 2016 and later, PowerShell can show the suite list SChannel actually has in effect; filtering for 3DES should produce no output:

1
Get-TlsCipherSuite | Where-Object { $_.Name -match "3DES" }

Note: this command was not actually run; the source is Microsoft’s official Get-TlsCipherSuite documentation; the command is unavailable on Windows Server 2012 R2 and earlier.

Notes and Caveats

  • The cipher suite content is one single comma-separated string: when pasting, no line breaks and no extra trailing comma; the correct count after replacement is 34 suites — if it’s fewer or more, go back and re-check.
  • This Group Policy governs Windows’ SChannel, so it affects more than RDP: services riding the system TLS stack, such as IIS, will switch to this suite list as well. Confirm client compatibility before changing — extremely old clients that only support 3DES will be refused the handshake outright.
  • In a domain environment, watch out for Local Group Policy being overridden by domain policy: if after your change the list reverts to the default 35, go check the domain GPO at the same path.
  • If a load balancer or gateway in front of 3389 terminates TLS, the weak suites must be handled separately at that layer — changing the Windows side won’t fix the gateway.

Back to the scanner report itself: replace the suite list, reboot, and rescan once — CVE-2016-2183’s alarm disappears, and only then is this vulnerability truly closed out.

This post was rewritten from the author’s CSDN blog articles originally published between 2020 and 2024 on CSDN.