Dva lidé se mohou dívat na stejné nasazení SSTP a dojít k opačným závěrům. Jeden čte dokumentaci produktu, vidí písmena SSL a předpokládá, že tunel provozuje protokol vyřazený před lety. Druhý ukáže na moderní handshake a prohlásí otázku za uzavřenou. Oba argumentují z označení, nikoli z vyjednané verze, a jen jedno z toho je důkaz. Srovnání, které má smysl, je mezi tím, co název slibuje, a tím, co služba skutečně vybere.

Dvě odpovědi na stejnou otázku

Argument označením se snadno vysloví: SSTP je popisován jako zabezpečený tunelovací protokol přes sockety, historický název říká SSL, a proto spojení musí být SSL 3.0. Drží se, protože název skutečně pochází z této linie a protože většina těch, kdo to opakují, se nikdy nepodívala na handshake. Drží se také proto, že závěr zní opatrně, jako by předpokládat to nejhorší byla bezpečná volba. Předpokládat to nejhorší a měřit skutečnou verzi jsou dvě různé činnosti a jen jedna z nich něco mění.

Argument důkazem klade užší otázku. Na jaké verzi protokolu se tento klient a tento server shodli, na tomto koncovém bodu, v tomto okamžiku? Odpověď přichází od služby, která ukončuje TLS, nikoli z marketingové stránky nebo z prohlížeče, který se dostal na podobně pojmenovaný web.

Oba argumenty se liší v tom, co dokážou. Označení nedokáže rozlišit staré nasazení od záplatovaného a handshake vám neřekne, co dělá nesouvisející služba na stejném hostiteli. Používejte druhý a přestaňte používat první.

Přečtěte verzi, kterou služba skutečně vybere

Začněte pojmenováním komponent: implementace klienta, implementace serveru, koncový bod TLS a vše mezi tím, co ukončuje a znovu navazuje TLS. Nástroj pro vyvažování zátěže, který ukončuje TLS a s backendem mluví prostým HTTP, mění to, čí politiku musíte číst.

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null> | grep -E 'Protocol|Cipher'
Get-WinEvent -LogName System -ProviderName Schannel -MaxEvents 20

Zapište koncový bod a čas vedle výsledku, protože pozdější změna politiky činí nedatované pozorování bezcenným. Zopakujte sondu z klienta na stejné síťové cestě jako uživatelé, na kterých vám záleží, protože odposlouchávací zařízení může ukončit TLS s vlastním nastavením. Pokud se obě pozice rozcházejí, našli jste komponentu, na které záleží. Pokud se shodují, máte důkaz místo sloganu.

Oddělte pole záznamu od vyjednávání

Číslo verze vypadající archaicky v jednom poli není stejný fakt jako relace SSL 3.0. RFC 7568 považuje verzi záznamové vrstvy a vyjednaný protokol za odlišné záležitosti a právě z tohoto rozlišení pocházejí sebejisté chybné odpovědi. Přečtěte vyjednaný protokol, potom šifru a teprve pak uzavřete závěr o relaci.

Stejný dokument je jednoznačný ohledně samotného protokolu: SSL 3.0 se nesmí používat a vyjednávání nebo fallback na něj je zakázán. Důvodem je vadná konstrukce CBC, kterou zneužil útok POODLE, a to je vlastnost protokolu, nikoli konfigurace jedné aplikace.

Proto „tuto zátěž je pravděpodobně těžké zneužít“ není argument pro ponechání SSL 3.0 zapnutého. Požadavek zní protokol odstranit, ne vyhrát debatu o jedné demonstraci.

Vyřaďte SSL 3.0 s politikou, kterou unesete

V systému Windows jsou nastavení protokolů Schannel pod klíčem Protocols a čtou se zvlášť pro roli klienta a serveru, a proto změna, která opraví jeden směr, může nechat druhý nedotčený. Aktuální nastavení a jejich požadavky na restart dokumentuje Microsoft a knihovna TLS třetí strany na stejném hostiteli je zcela ignoruje.

Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server'
Get-ChildItem 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols'

Změňte politiku podporovanou cestou správy, potvrďte, že vlastnící služba znovu načte konfiguraci, a zachovejte schválenou cestu zpět. Vložení širokého skriptu registru z jiného prostředí je způsob, jak se z opravy jedné služby stane výpadek všech klientů TLS na stroji. Rozsah restartu zde hraje roli: nastavení, které vypadá použité, může stále držet v paměti služba, která ho znovu nenačetla.

Protějšek, který stále vyžaduje zastaralou verzi, potřebuje aktualizaci nebo plán migrace. Nedokumentovaná výjimka, která tiše obnoví starý protokol, není strategie kompatibility a nepřežije příští audit.

Přebírejte změnu na nových spojeních

Testujte s novými relacemi po změně politiky, protože spojení navázané před změnou nic nedokazuje o konfiguraci, která nyní platí. Potvrďte, že povolený protokol uspěje a zakázaný selže v rámci autorizovaného validačního postupu, a poté ponechte identitu certifikátu a kontroly důvěry přesně tak, jak byly.

Pamatujte, co handshake nepokrývá. SSTP přenáší autentizaci PPP po vrstvě TLS, takže moderní verze protokolu nic neříká o tom, který uživatel byl autorizován ani ke kterým zdrojům se relace může dostat. To jsou oddělené kontroly s oddělenými důkazy.

Zapište výsledek jako službu, backend, povolenou politiku a pozorovanou verzi. Takový záznam přesně odpovídá na bezpečnostní otázku, což nedělá ani argument označením, ani argument nepohodlím.

Související články