uTLS to fork crypto/tls, stworzony w celu dostosowania ClientHello w celu uodpornienia na fingerprinting, zachowując możliwość użycia go do handshake'u. Wersje 1.6.0 do 1.8.0 zawierają niezgodność fingerprinta z Chrome'em podczas użycia GREASE ECH, związaną z wyborem cipher suite. Chrome konsekwentnie wybiera preferowaną cipher suite w outer ClientHello i dla ECH na podstawie obsługi sprzętu, jednak Chrome parrot w uTLS hardkoduje preferencję AES dla outer cipher suite, ale losowo wybiera ECH cipher suite między AES i ChaCha20, tworząc 50% szansę wyboru ChaCha20 dla ECH przy jednoczesnym użyciu AES dla outer cipher suite—kombinacja niemożliwa w Chrome. Problem dotyczy wyłącznie GREASE ECH; w rzeczywistym ECH Chrome wybiera pierwszą prawidłową cipher suite, którą uTLS obsługuje poprawnie. Problem został naprawiony w wersji 1.8.1.
▸ Pokaż oryginał (EN)
uTLS is a fork of crypto/tls, created to customize ClientHello for fingerprinting resistance while still using it for the handshake. Versions 1.6.0 through 1.8.0 contain a fingerprint mismatch with Chrome when using GREASE ECH, related to cipher suite selection. When Chrome selects the preferred cipher suite in the outer ClientHello and for ECH, it does so consistently based on hardware support—for example, if it prefers AES for the outer cipher suite, it also uses AES for ECH. However, the Chrome parrot in uTLS hardcodes AES preference for outer cipher suites but selects the ECH cipher suite randomly between AES and ChaCha20. This creates a 50% chance of selecting ChaCha20 for ECH while using AES for the outer cipher suite, a combination impossible in Chrome. This issue only affects GREASE ECH; in real ECH, Chrome selects the first valid cipher suite when AES is preferred, which uTLS handles correctly. This issue has been fixed in version 1.8.1.
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XRefraction Networking Utls
APPRefraction-Networking1.6.0 – 1.8.1 (bez)