SSTP a SSL 3.0: označenie verzus vyjednaná verzia
Označenie SSL nedokazuje reláciu SSL 3.0. Porovnajte deklarovaný protokol s tým, ktorý služba skutočne vyjednáva, a potom starú verziu vyraďte.
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.