Dvaja ľudia sa môžu pozerať na rovnaké nasadenie SSTP a dospieť k opačným záverom. Jeden číta dokumentáciu produktu, vidí písmená SSL a predpokladá, že tunel prevádzkuje protokol vyradený pred rokmi. Druhý ukáže na moderný handshake a vyhlási otázku za uzavretú. Obaja argumentujú z označenia, nie z vyjednanej verzie, a len jedno z toho je dôkaz. Porovnanie, ktoré má zmysel, je medzi tým, čo názov sľubuje, a tým, čo služba skutočne vyberie.

Dve odpovede na tú istú otázku

Argument označením sa ľahko vysloví: SSTP sa opisuje ako zabezpečený tunelovací protokol cez sockety, historický názov hovorí SSL, a preto spojenie musí byť SSL 3.0. Drží sa, pretože názov skutočne pochádza z tejto línie a pretože väčšina tých, čo to opakujú, sa nikdy nepozrela na handshake. Drží sa aj preto, že záver znie opatrne, akoby predpokladať to najhoršie bola bezpečná voľba. Predpokladať to najhoršie a merať skutočnú verziu sú dve rôzne činnosti a len jedna z nich niečo mení.

Argument dôkazom kladie užšiu otázku. Na akej verzii protokolu sa tento klient a tento server zhodli, na tomto koncovom bode, v tomto okamihu? Odpoveď prichádza od služby, ktorá ukončuje TLS, nie z marketingovej stránky alebo z prehliadača, ktorý sa dostal na podobne pomenovaný web.

Oba argumenty sa líšia v tom, čo dokážu. Označenie nedokáže rozlíšiť staré nasadenie od záplatovaného a handshake vám nepovie, čo robí nesúvisiaca služba na tom istom hostiteľovi. Používajte druhý a prestaňte používať prvý.

Prečítajte verziu, ktorú služba skutočne vyberie

Začnite pomenovaním komponentov: implementácia klienta, implementácia servera, koncový bod TLS a všetko medzi tým, čo ukončuje a znovu nadväzuje TLS. Nástroj na vyvažovanie záťaže, ktorý ukončuje TLS a s backendom hovorí obyčajným HTTP, mení to, koho politiku musíte čítať.

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

Zapíšte koncový bod a čas vedľa výsledku, pretože neskoršia zmena politiky robí nedatované pozorovanie bezcenným. Zopakujte sondu z klienta na tej istej sieťovej ceste ako používatelia, na ktorých vám záleží, pretože odpočúvacie zariadenie môže ukončiť TLS s vlastným nastavením. Ak sa obe pozície rozchádzajú, našli ste komponent, na ktorom záleží. Ak sa zhodujú, máte dôkaz namiesto sloganu.

Oddeľte pole záznamu od vyjednávania

Číslo verzie vyzerajúce archaicky v jednom poli nie je ten istý fakt ako relácia SSL 3.0. RFC 7568 považuje verziu záznamovej vrstvy a vyjednaný protokol za odlišné záležitosti a práve z tohto rozlíšenia pochádzajú sebavedomé nesprávne odpovede. Prečítajte vyjednaný protokol, potom šifru a až potom uzavrite záver o relácii.

Ten istý dokument je jednoznačný ohľadom samotného protokolu: SSL 3.0 sa nesmie používať a vyjednávanie alebo fallback naň je zakázaný. Dôvodom je chybná konštrukcia CBC, ktorú zneužil útok POODLE, a to je vlastnosť protokolu, nie konfigurácia jednej aplikácie.

Preto „túto záťaž je pravdepodobne ťažké zneužiť“ nie je argument na ponechanie SSL 3.0 zapnutého. Požiadavka znie protokol odstrániť, nie vyhrať debatu o jednej demonštrácii.

Vyraďte SSL 3.0 s politikou, ktorú unesiete

V systéme Windows sú nastavenia protokolov Schannel pod kľúčom Protocols a čítajú sa zvlášť pre rolu klienta a servera, a preto zmena, ktorá opraví jeden smer, môže nechať druhý nedotknutý. Aktuálne nastavenia a ich požiadavky na reštart dokumentuje Microsoft a knižnica TLS tretej strany na tom istom hostiteľovi ich úplne ignoruje.

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

Zmeňte politiku podporovanou cestou správy, potvrďte, že vlastniaca služba znovu načíta konfiguráciu, a zachovajte schválenú cestu späť. Vloženie širokého skriptu registra z iného prostredia je spôsob, akým sa z opravy jednej služby stane výpadok všetkých klientov TLS na stroji. Rozsah reštartu tu hrá rolu: nastavenie, ktoré vyzerá použité, môže stále držať v pamäti služba, ktorá ho znovu nenačítala.

Protistrana, ktorá stále vyžaduje zastaranú verziu, potrebuje aktualizáciu alebo plán migrácie. Nedokumentovaná výnimka, ktorá ticho obnoví starý protokol, nie je stratégia kompatibility a neprežije ďalší audit.

Preberajte zmenu na nových spojeniach

Testujte s novými reláciami po zmene politiky, pretože spojenie nadviazané pred zmenou nič nedokazuje o konfigurácii, ktorá teraz platí. Potvrďte, že povolený protokol uspeje a zakázaný zlyhá v rámci autorizovaného validačného postupu, a potom ponechajte identitu certifikátu a kontroly dôvery presne také, aké boli.

Pamätajte, čo handshake nepokrýva. SSTP prenáša autentifikáciu PPP po vrstve TLS, takže moderná verzia protokolu nič nehovorí o tom, ktorý používateľ bol autorizovaný ani ku ktorým zdrojom sa relácia môže dostať. Sú to oddelené kontroly s oddelenými dôkazmi.

Zapíšte výsledok ako službu, backend, povolenú politiku a pozorovanú verziu. Taký záznam presne odpovedá na bezpečnostnú otázku, čo nerobí ani argument označením, ani argument nepohodlím.

Súvisiace články