BAD SKY.NET

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

A TLS 1.2 cipher suite with ECDHE, AES-256-CBC and HMAC-SHA384. Common in OpenSSL defaults, absent from browsers.

TLS cipher suiteCode 0xc028 (49192)legacy

What it is

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (code 0xC028) is a TLS 1.2 cipher suite from RFC 5289. It combines ephemeral elliptic curve Diffie-Hellman, an RSA certificate, AES-256 in CBC mode and HMAC-SHA384 for record integrity, with SHA-384 also used by the PRF.

It is the 256-bit partner of TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256. A stronger hash and key do not change how CBC works in TLS 1.2, so it is still exposed to the same class of padding oracle problems unless encrypt_then_mac is negotiated, which RFC 9325 asks for before using any CBC suite.

Its natural replacement is TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, which every client that offers this suite also offers.

The SHA384 in its name refers both to the HMAC used on each record and to the hash used by the TLS 1.2 PRF, which differs from the GCM suites, where the hash only drives the PRF.

Who sends it

Chrome 153 (macOS) browser Not sent
curl_cffi (impersonate chrome) Not sent
curl-impersonate chrome116 Not sent
curl-impersonate ff117 Not sent
curl 8.7 (macOS) Sent at position 9
curl 7.88 (Debian 12) Sent at position 14
Python requests Sent at position 11
Python httpx Sent at position 11
Python httpx (HTTP/2) Sent at position 11
Go net/http Not sent
Node.js fetch Sent at position 11
PHP Guzzle Sent at position 14

Measured on 2026-10-25 against our own test server: sent by 7 of 12 clients. Position counts from 1 and ignores GREASE values.

Why it matters for fingerprinting

Python requests, httpx, Node.js fetch, Guzzle and both curl builds offer it, while Chrome, curl_cffi, curl-impersonate and Go net/http do not. Positions: 9th for macOS curl, 11th for Python requests, httpx and Node.js fetch, and 14th for Debian curl and Guzzle.

Check whether your client sends it

Open the test from your browser, or call it from your script, and look for TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 in the TLS details.

Run the TLS fingerprint test

References

Related